我想做的事:
我想检测图像中的矩形。
到目前为止我做了什么:
import cv2
import numpy as np
img_path = cv2.imread('/XXX/XXX.TIF',0)
ret,thresh = cv2.threshold(img_path,127,255,0)
contours,hierarchy = cv2.findContours(thresh, 1, 2)
cnt = contours[0]
x,y,w,h = cv2.boundingRect(cnt)
cv2.rectangle(img_path,(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)引起的。
知道我现在不可能传递到OpenCV 3.0,我如何使用openCV 2.9和Python 2.7使它工作呢?
编辑解决方案(& S):
因此,正如Surabhi Valma所回答的,这可能是一个解决方案:
Just add cv2.cv.BoxPoints(rect) instead of cv2.boxPoints(rect)
3条答案
按热度按时间w1jd8yoj1#
只需添加
cv2.cv.BoxPoints(rect)
而不是cv2.boxPoints(rect)
o3imoua42#
当我通过releases找不到2. 9。可能你的版本是2. 4. 9。如果你尝试使用3. x,它可能会工作。
有一个opencv-issue/feature已经被跟踪到关闭。此功能肯定在3.0.0-dev或更高版本中可用,请尝试升级并检查。
w3nuxt5m3#
最新的OpenCV 2版本是2.4.13.2;没有2.9版本。无论如何,这个方法从来没有包含在Python Package 器的
cv2
库中。你的选择是升级到OpenCV 3+,或者回到(弃用的)cv
模块(它包含在Python OpenCV Package 器的旧版本中)来直接访问C方法: