カメラを用いて白線のリアルタイムの検出を行いました。
しかし影から日差しが写る際に二値化しているため影と日差しの境界を誤検出したり余計な部分しまいます。
輪郭抽出と矩形検出の部分です。
img, contours, hierarchy = cv2.findContours(edges, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_TC89_L1) for i in range(0, len(contours)): area = cv2.contourArea(contours[i]) if area < 50 or 0 < area: continue if len(contours[i]) > 0: rect = contours[i] x, y, w, h = cv2.boundingRect(rect) cv2.rectangle(c_frame, (x, y), (x + w, y + h), (0, 255, 0), 3) ``` プログラム初心者であってこのようなノイズのとり方をまだ理解できていません。 cv2.boundingRectで座標を取得し、その後x,y,x+w,y+hについて辺のサイズを絞ってあげればよいのでしょうか。 参考サイト http://mtail3x.wpblog.jp/2015/11/06/opencvsharp%E3%81%A7%E5%8F%B0%E5%BD%A2%E8%A3%9C%E6%AD%A3/ この場合、 x, y, w, h = cv2.boundingRect(rect) のあとに if 100 < w and w < 500 continue if 30 < h and h < 200 continue のようにすることで大きな矩形や小さな矩形を取り除くことはできますか。 ほかにいい方法があればアドバイスお願いします。
ご提示されている方法が適切なのか否かは要求される条件に依存する部分ですので判断しかねますが、オブジェクト認識で光を扱うのは難しいです。予めその範囲に対象が存在しないという条件があるのであれば、排除してから認識させるのが一番良いです。
回答4件
あなたの回答
tips
プレビュー