4

現在、javacvでの画像処理に関するプロジェクトを開発しています。その中で、特定のポリゴン内のU字型を識別する必要があります。

これは2種類の画像であり、画像に2つのU字型があるのか​​1つのU字型なのかを特定する必要があります。私は多くのチュートリアルを経験しましたが、これを明確にするための適切なガイドラインを見つけることができませんでした。ですから、専門家がこの問題を明確にするために助けを与えることができますか。opencvまたはjavacvを使用してコード例を提供できれば本当にありがたいです。

2つのU字型の画像

単一のU字型の画像

4

1 に答える 1

4

すべての画像のパターンが類似している場合は、輪郭の境界長方形のアスペクト比(幅/高さ)を使用して、それらを除外します。

つまり、すべての輪郭の境界が見つかった場合、外側の形状のアスペクト比は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()

結果は次のとおりです。

ここに画像の説明を入力してください

ここに画像の説明を入力してください

于 2012-07-06T05:40:06.163 に答える