2

現在の状況:画像内の長方形 (または正方形) を検出したいのですが、これらの長方形の輪郭が一貫していません。外側の輪郭に全体があるチェス盤のように。

考えられる解決策:オブジェクトの外側の輪郭を検出するのに役立つアクティブな輪郭アルゴリズムを実装しようとしています。オブジェクトの外側にいくつかのポイントがあることを知っています。オブジェクトが収まる限り、ポイントを縮小してフィットさせるために使用できます。

検索:古いバージョンの openCV の cvSnakeImage Function を見つけました。これはメンテナンスされておらず、今後使用すべきではありません。古いopenCVとboostライブラリも使用するアクティブな輪郭C++実装を見つけました。試してみましたが、コードをビルドできませんでした。HiDiYANG/アクティブコンター

質問: OpenCV で利用可能なアクティブな輪郭アルゴリズムの現在の実装はありますか? 実装を理解するために時間を費やす必要がある最適な実装はありますか?

画像の例: 灰色の境界線上に点がある最初の画像があり、赤い四角形 (2 番目の画像) を取得したいと考えています。

サンプル画像 ここに画像の説明を入力

4

1 に答える 1

1

アップロードした画像の場合、輪郭のバウンディング ボックスを単純に結合すると、希望する結果が得られます。「bb_union」は、自分で作成する必要がある関数です。

import cv2

img = cv2.imread('path to your image') # BGR image
im = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
im = 255 - im # your contours are black, so invert the image
_, contours, hierarchy = cv2.findContours(img, cv2.RETR_LIST, cv2.CHAIN_APPROX_NONE)
bb = None
for cnt in contours:
    rect = cv2. boundingRect(cnt)
    if (bb is None):
        bb = rect
        continue
    bb = bb_union(rect, bb)
cv2.rectangle(img, bb, (0,0,255), 2)
于 2016-05-26T20:11:25.227 に答える