画面の写真や一般的なノイズの多い画像のコントラストの低い線を検出しようとしています。私は2つの問題に遭遇したようです:
画面のノイズ/暗いグリッドのため、適応しきい値またはエッジ検出アルゴリズムで線を確実に検出できません。ぼかしは少し役立つようですが、それを機能させるには十分ではありません.
(ノイズ、光の状態などにより)同じ線にいくつかのセグメントしか表示されない場合、検出された線セグメントを単一の直線に接続したいと思います。
img = cv2.imread("test.jpg") gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) gray=cv2.GaussianBlur(gray,(9,9),0) bin = cv2.adaptiveThreshold(gray2, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY_INV, 33, 3) cv2.namedWindow('Test') cv2.imshow("Test", bin)
cv2.Canny
とも試しましcv2.HoughLinesP
たが、暗いグリッドが両方を台無しにするため、良い結果は得られませんでした。前もって感謝します!
編集: しきい値関数のローカル バージョンを使用するTHRESH_TRUNCATED
かTHRESH_TOZERO
、グリッドを除外するのに役立つ可能性があると考えています。とハイコントラスト
写真を投稿する評判がないので、リンクを追加しました。コントラストの低い線のある画像:
行が検出されました: