3

私はPython 3でOpenCVを使用して、白いフィールド上の白/黒のボールを検出し、正確な(x、y、半径)と色を与えています。

関数 cv2.Canny() および cv2.findContours() を使用してそれを見つけますが、問題は cv2.Canny() が常に円の完全な形状を検出しないことです (ほとんどの場合、円の 3/4 のみ)。したがって、 cv2.findContours() を使用すると、輪郭として検出されません。

参照してください :

画像1画像2

これは最も重要なコードです:

gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
blurred = cv2.GaussianBlur(gray, (5, 5), 0)
edged = cv2.Canny(blurred, 10, 40) # 10 and 40 to be more perceptive
contours_canny= cv2.findContours(edged.copy(), cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)[-2]

その後、私は使用します: approx = cv2.approxPolyDP(contour,0.01*cv2.arcLength(contour,True),True)

それで、あなたが素晴らしい解決策を見つけるのを手伝ってくれるなら! たぶん、円の形を完成させて検出できる機能がありますか?

4

2 に答える 2

1

cv.HoughCircles を使用して、最も一致する完全な円を推定できます。ボール トラッキングの良い点は、カメラの角度に関係なく、ボールが画像内で常に円として表示されることです。

于 2017-06-20T06:01:18.833 に答える