

以下のコードで物体検出を行うと１つの対象に対して複数の検出窓が表示されてしまいます。(対象物が画像上でわずかに離れて複数と認識されてしまったからだと思います。)検出窓は１つで良いので、複数の検出窓から１つの検出窓を抽出できるコードを知っていましたら教えていただきたいです。cv2.contourArea(contour)で表示できる領域を絞ってもだめでした。

[code]

    img = cv2.imread(image)
    
    im2, contours, hierarchy = cv2.findContours(img, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE
    
    # draw contour
    for contour in contours:
        if cv2.contourArea(contour) < 1000 :
            continue
    
        # rectangle area
        x, y, w, h = cv2.boundingRect(contour)
    
    
    
                # draw contour
        img5=cv2.rectangle(img, (x, y), (x + w, y + h), (0, 255, 0), 3) 
    
    return img5
    
[/code]


CC BY-SA 3.0
2018-01-02T13:51:43.597
40672
2022-04-03T06:06:35.733
2018-01-03T01:46:33.193
25909
25909
question
python opencv
物体検出での検出できる検出窓を減らす方法


検出された複数の輪郭の中で１つを選ぶには、判断する基準（２つの抽出された輪郭を比べて、どちらかを選ぶための方法）が必要です。

例えば、以下のようなものが考えられます。  
・輪郭の面積が大きいほうを選ぶ  
・輪郭の形が円に近いほうを選ぶ  
・輪郭の縦横比が1に近い（正方形に近い輪郭）を選ぶ

判断基準が決まっていれば、検出された輪郭どうしを比較して一方を除外するという作業を繰り返すことで１つに絞り込むことができます。


CC BY-SA 3.0
2018-01-03T04:15:06.820
40681
2018-01-03T04:15:06.820
217
40672
answer