使用OpenCV 2.4.9检测矩形

z8dt9xmd  于 2022-11-15  发布在  其他
关注(0)|答案(3)|浏览(212)

我想做的事:

我想检测图像中的矩形。

到目前为止我做了什么:

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)
w1jd8yoj

w1jd8yoj1#

只需添加cv2.cv.BoxPoints(rect)而不是cv2.boxPoints(rect)

o3imoua4

o3imoua42#

当我通过releases找不到2. 9。可能你的版本是2. 4. 9。如果你尝试使用3. x,它可能会工作。
有一个opencv-issue/feature已经被跟踪到关闭。此功能肯定在3.0.0-dev或更高版本中可用,请尝试升级并检查。

w3nuxt5m

w3nuxt5m3#

最新的OpenCV 2版本是2.4.13.2;没有2.9版本。无论如何,这个方法从来没有包含在Python Package 器的cv2库中。你的选择是升级到OpenCV 3+,或者回到(弃用的)cv模块(它包含在Python OpenCV Package 器的旧版本中)来直接访问C方法:

rect = cv2.minAreaRect(cnt)
box = np.int0(cv2.cv.BoxPoints(rect))
cv2.drawContours(im,[box],0,(0,0,255),2)

相关问题