Jam*_*lps 5 python opencv imutils
运行我的代码后,我收到错误消息轮廓元组必须具有长度2或3,否则opencv再次更改了它们的返回签名。我目前运行的是 opencv 3.4.3.18 版本。当我抓取运行 imutils ver 0.5.2 的轮廓时,会出现此问题
该代码查找计数并返回在进行一些边缘检测后找到的轮廓。然后该算法使用 imutils 来抓取轮廓。这是正确的处理方法还是有一些最新的方法来获取轮廓而不是使用 imutils?
请看下面的例子:
image, contours, hier = cv.findContours(edged.copy(), cv.RETR_EXTERNAL, cv.CHAIN_APPROX_SIMPLE)
cnts = imutils.grab_contours(contours)
cnts = sorted(contours, key = cv.contourArea, reverse = True)[:5]
Run Code Online (Sandbox Code Playgroud)
根据 OpenCV 版本的不同,findContours()具有不同的返回签名。
在 OpenCV 3.4.X 中,findContours()返回 3 项
image, contours, hierarchy = cv.findContours(image, mode, method[, contours[, hierarchy[, offset]]])
Run Code Online (Sandbox Code Playgroud)
在 OpenCV 4.1.X 中,findContours()返回 2 项
contours, hierarchy = cv.findContours(image, mode, method[, contours[, hierarchy[, offset]]])
Run Code Online (Sandbox Code Playgroud)
要在不使用 imutils 的情况下手动获取轮廓,您可以检查返回元组中的项目数量
items = cv.findContours(edged.copy(), cv.RETR_EXTERNAL, cv.CHAIN_APPROX_SIMPLE)
contours = items[0] if len(items) == 2 else items[1]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5712 次 |
| 最近记录: |