簡體   English   中英

使用OpenCV 2.4.9檢測矩形

[英]Detecting rectangles using OpenCV 2.4.9

我想從圖像中檢測矩形,這是我正在使用的代碼:

    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)

當我通過發行時找不到2.9。 可能您的版本是2.4.9。 如果嘗試使用3.x,它可能會起作用。

已經有一個opencv-issue / 功能已被跟蹤到關閉狀態。此功能肯定在3.0.0-dev或更高版本中可用,請嘗試升級並檢查。

最新的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)

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM