我想检测图像中的矩形,这是我正在使用的代码:
import cv2 ; import numpy as np
img = cv2.imread('/home/stagiaire/Bureau/new_photos_mire/0294/new/corrigees/GRE.TIF',0)
ret,thresh = cv2.threshold(img,127,255,0)
contours,hierarchy = cv2.findContours(thresh, 1, 2)
cnt = contours[0]
x,y,w,h = cv2.boundingRect(cnt)
cv2.rectangle(img,(x,y),(x+w,y+h),(0,255,0),2)
rect = cv2.minAreaRect(cnt)
box = cv2.boxPoints(rect)
box = np.int0(box)
im = cv2.drawContours(im,[box],0,(0,0,255),2)
我得到的消息错误是:
AttributeError: 'module' object has no attribute 'boxPoints'
关于这行代码:
box = cv2.boxPoints(rect)
我相信它是由于我正在使用的OpenCV版本(2.4.9)引起的。我现在不可能拥有3.0版本,所以我可以用openCV 2.9和Python 2.7检测矩形吗?
修改
正如Surabhi Valma的回答,这可能是一个解决方案:
Just add cv2.cv.BoxPoints(rect) instead of cv2.boxPoints(rect)
答案 0 :(得分:1)
当我通过releases时找不到2.9。可能你的版本是2.4.9。如果您尝试3.x,它可能会工作。
已经跟踪了opencv-issue / feature已关闭 此功能肯定适用于3.0.0-dev或更高版本,请尝试升级并检查。
答案 1 :(得分:1)
最新的OpenCV 2版本是2.4.13.2;没有2.9。无论如何,这个方法从未包含在带有Python包装器的cv2
库中。
您可以选择升级到OpenCV 3+或使用(不推荐使用的)cv
模块(旧版本的Python OpenCV包装器中包含)来直接访问C方法:
rect = cv2.minAreaRect(cnt)
box = np.int0(cv2.cv.BoxPoints(rect))
cv2.drawContours(im,[box],0,(0,0,255),2)
答案 2 :(得分:1)
只需添加cv2.cv.BoxPoints(rect)
代替cv2.boxPoints(rect)