0
我正在使用像這樣的詞典中的圖像定義: 我想擺脫鄰居條目(頂部和機器人)的那些小元素,如果他們觸摸圖像的上部或機器人邊界和延伸不超過從它20個像素(不包括任何實際的字母觸摸頂部或機器人),因爲這表示圖像(紅色): 如何修剪匹配給定範圍的數組數組中的值對?
的方式我試圖做它是: 1.加載的圖像灰度 2.使用cv2.findContours
獲取圖像的輪廓3.查找從x = 0開始但不超過x = 20的輪廓 4. F ind輪廓從高度1開始並以高度結束-21 5.用白色畫這些輪廓
問題是cv2.findContours
返回座標對數組數組列表。雖然我能夠刪除某些座標對,但我在這裏很難應用。
我嘗試了許多方法,目前我堅持這一點:
import cv2
import os
def def_trimmer(img):
height, width = img.shape
img_rev = cv2.bitwise_not(img)
_, contours, _ = cv2.findContours(img_rev,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_NONE)
# contours = np.concatenate(contours, axis = 0)
# contours = contours[((contours<[20-1, width])|(contours>[height-20-1, -1])).all(axis=(1,2))]
for outer in contours:
# for outer2 in outer1:
oldlen = len(outer)
outer = outer[(((outer<[20-1, width])|(outer>[height-20-1, -1])).all(axis=(1, 2)))]
newlen = len(outer)
print((oldlen, newlen))
cv2.drawContours(img,contours,-1,(255,255,255),-1)
return(img)
img = cv2.imread("img.png")
img_out = def_trimmer(img)
cv2.imshow("out", img_out)
感謝您的建議。這可能確實更快,更容易。我會盡快試一試:) – MrVocabulary