我目前正在阅读OpenCV网站上的示例代码,以查找图像中的轮廓。
我首先阅读图像并转换为灰度:
img = cv2.imread('/.../.../four.png')
imgray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
然后我通过应用阈值将图像转换为二进制文件:
thresh = cv2.threshold(imgray, 127, 255, 0, cv2.THRESH_BINARY)
根据教程..我应该可以在阈值图像上调用findContours()
:
contours = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
尝试执行此代码时,出于某种原因我收到类型错误:
轮廓= cv2.findContours(THRESH,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE) TypeError:image不是数字元组
不确定为什么?
以下是完整代码,以便于阅读:
img = cv2.imread('/Users/samtozer/Desktop/four.png')
imgray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
thresh = cv2.threshold(imgray, 127, 255, 0, cv2.THRESH_BINARY)
contours = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
cv2.drawContours(img, contours, -1, (0,255,0), 3)
想知道以前是否有人遇到过这个问题?如果是这样,xD
会出现什么问题提前致谢
答案 0 :(得分:1)
正如评论中所提到的,您需要注意两个问题:
返回cv2.findContours()
cv2.findContours()
中有两个返回值:
返回cv2.threshold()
cv2.threshold()
中有两个返回值:
float
值,用于对像素值进行分类)