すべての画像のパターンが類似している場合は、輪郭の境界長方形のアスペクト比(幅/高さ)を使用して、それらを除外します。
つまり、すべての輪郭の境界が見つかった場合、外側の形状のアスペクト比は1に近くなります。
ただし、U字型のaspect_ratioは10を超えます。
以下はPythonコードです:
import cv2
import numpy as np
img = cv2.imread('sofud.jpg')
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
ret,thresh = cv2.threshold(gray,127,255,1)
contours,hierarchy = cv2.findContours(thresh,cv2.RETR_LIST,cv2.CHAIN_APPROX_SIMPLE)
for cnt in contours:
x,y,w,h = cv2.boundingRect(cnt)
if 10 < w/float(h) or w/float(h) < 0.1:
cv2.rectangle(img,(x,y),(x+w,y+h),(0,0,255),2)
cv2.imshow('res',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
結果は次のとおりです。