gpt4 book ai didi

python-3.x - OpenCv cv2.arcLength(cnt,True) 和 cv2.contourArea(cnt) 错误

转载 作者:太空宇宙 更新时间:2023-11-03 22:09:00 25 4
gpt4 key购买 nike

当我尝试运行以下代码时:

img = cv2.imread('index4.jpg',0)
ret,thresh = cv2.threshold(img,127,255,0)
ret,thresh = cv2.threshold(img,127,255,0)
contours,hierarchy, _ = cv2.findContours(thresh, 1, 2)
cnt = contours[0]
perimeter = cv2.arcLength(cnt,True)

我收到以下错误:

---------------------------------------------------------------------------
error Traceback (most recent call last)
<ipython-input-65-f8db5433a171> in <module>()
----> 1 perimeter = cv2.arcLength(cnt,True)

error: /io/opencv/modules/imgproc/src/shapedescr.cpp:285: error: (-215) count >= 0 && (depth == CV_32F || depth == CV_32S) in function arcLength

然后:

area = cv2.contourArea(cnt)

错误:

---------------------------------------------------------------------------
error Traceback (most recent call last)
<ipython-input-63-c660947e12c8> in <module>()
----> 1 area = cv2.contourArea(cnt)

error: /io/opencv/modules/imgproc/src/shapedescr.cpp:320: error: (-215) npoints >= 0 && (depth == CV_32F || depth == CV_32S) in function contourArea

注意:

python3, opencv version: '3.3.0'

我该如何解决这些问题?

最佳答案

轮廓是 findContours() 返回的元组中的第二个元素,而不是第一个。以前在旧版本的 OpenCV 中,findContours() 只返回两个结果——但现在它返回三个——附加值成为返回元组的第一个元素.

来自docs for cv2.findContours() :

cv2.findContours(image, mode, method[, contours[, hierarchy[, offset]]]) → image, contours, hierarchy

因此

image, contours, hierarchy = cv2.findContours(thresh, 1, 2)

会帮你解决问题的。或者,如果您只想要轮廓,则不需要使用像 _ 这样的一次性变量,只需索引返回的元组即可:

contours = cv2.findContours(thresh, 1, 2)[1]

关于python-3.x - OpenCv cv2.arcLength(cnt,True) 和 cv2.contourArea(cnt) 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47634467/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com