2 回答

TA貢獻(xiàn)1772條經(jīng)驗(yàn) 獲得超8個(gè)贊
要提取的輪廓應(yīng)為白色,背景為黑色。我對(duì)您的代碼進(jìn)行了一些修改,消除了未添加任何值的行。
import cv2
img = cv2.imread('image_to_be_read',0)
backup = img.copy() #taking backup of the input image
backup = 255-backup #colour inversion
我使用RETR_TREE作為輪廓檢索模式,該模式檢索所有輪廓并創(chuàng)建完整的族層次列表。請(qǐng)?jiān)谶@里找到相同的文檔
_, contours, _ = cv2.findContours(backup, cv2.RETR_TREE, cv2.CHAIN_APPROX_NONE)
在opencv4中,finContours方法已更改。請(qǐng)用:
contours, _ = cv2.findContours(backup, cv2.RETR_TREE, cv2.CHAIN_APPROX_NONE)
然后遍歷輪廓并在輪廓周?chē)L制矩形
for i, contour in enumerate(contours):
x, y, w, h = cv2.boundingRect(contour)
cv2.rectangle(img, (x, y), (x + w, y + h), (0, 255, 0), 1)
保存圖像
cv2.imwrite('output3.png', img)
我得到的結(jié)果看起來(lái)像這樣-

TA貢獻(xiàn)2003條經(jīng)驗(yàn) 獲得超2個(gè)贊
您使用了標(biāo)志RETR_EXTERNAL,這意味著它僅在尋找對(duì)象的最外輪廓,而不在尋找孔。在您的情況下,發(fā)現(xiàn)白色物體覆蓋了整個(gè)圖像,幾乎沒(méi)有孔(字母/數(shù)字)。您有兩種選擇:
用“ bitwise_not”反轉(zhuǎn)圖像中的顏色
使用RETR_LIST標(biāo)志收集所有輪廓。請(qǐng)注意,它還會(huì)在手指內(nèi)收集孔。
添加回答
舉報(bào)