我相信问题在于drawContours
命令。正如目前所写,图像目的地是image
and img
。您还尝试在单通道 8 位图像上绘制彩色框。此外,值得注意的是,findContours
函数实际上在查找轮廓的过程中修改了输入图像,因此最好不要在后面的代码中使用该图像。
我还建议创建一个新的图像副本以设置为您的目的地drawContours
函数,如果您打算对图像进行进一步分析,这样您就不会覆盖程序当前可以访问的唯一副本。
import numpy as np
import cv2
im = cv2.imread('test.png')
imCopy = im.copy()
imgray=cv2.cvtColor(im,cv2.COLOR_BGR2GRAY)
ret,thresh = cv2.threshold(imgray,127,255,0)
image, contours, hierarchy = cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
cv2.drawContours(imCopy,contours,-1,(0,255,0))
cv2.imshow('draw contours',imCopy)
cv2.waitKey(0)
这两个快速修复对我来说适用于具有白色背景的黑色正方形的类似图像。