2017-10-03 5 views
-2

私はリングプルの角度を知りたいと思いますが、まだできません。opencvのpythonでリングを引き出す角度

opencv Pythonでこれを行うためのアイデアはありますか?

Photo

+0

具体的な問題を明確にしたり、詳細を追加して必要なものを正確に強調してください。現在書かれているとおり、あなたが求めていることを正確に伝えるのは難しいです。この質問を明確にする方法については、How to Askページを参照してください。 –

+0

私は質問を明確にするために写真を置いた。角度は黄色の線で、opencv pythonのプログラムでこの角度をカメラで検出したい。 –

答えて

1

あなたは試してみて、その後、ラインからの角度を計算し、試してみて、その行を発見するHoughLinesP()を使用することができます。あなたは、画像を回転させる必要がある場合には、ndimage.rotate()に渡すことができます。

import numpy as np 
import cv2 
import math 
from scipy import ndimage 

img_before = cv2.imread('find_angle.jpg') 
img_gray = cv2.cvtColor(img_before, cv2.COLOR_BGR2GRAY) 
img_edges = cv2.Canny(img_gray, 100, 100, apertureSize=3) 
lines = cv2.HoughLinesP(img_edges, 1, math.pi/180.0, 100, minLineLength=80, maxLineGap=5) 

angles = [] 

for x1, y1, x2, y2 in lines[0]: 
    cv2.line(img_before, (x1, y1), (x2, y2), (255, 0, 0), 3) 
    angle = math.degrees(math.atan2(y2 - y1, x2 - x1)) 
    angles.append(90 + angle) 

median_angle = np.median(angles) 
img_rotated = ndimage.rotate(img_before, median_angle) 

cv2.imshow("Result", img_rotated) 
key = cv2.waitKey(0) 

cv2.imwrite('rotated.jpg', img_rotated)  

これは、あなた11.876の角度を使用しての出力画像を与えるだろう:

rotate ring pull

このアプローチをしかし必要があります他の画像をさらに微調整する。

+0

私は問題を説明するために行を置いていますが、実際にはこの行はイメージにありません。私はリングプルのリアルタイム角度計算をしたい、次に私はハフサークルをやってみたが、私は誤ったポジティブをたくさん持っている、私はリングのプルームのビートワイン円の勾配と角度を計算した。 あなたの答えをありがとう! –

+0

私はHoughLinesが何を検出しているかを示すために青い線を引いた。私が使用したイメージにはあなたの行が含まれていませんでした(テストするために手で取り除かなければなりませんでした)。私は同意する、これは間違った一致を生成することができますCannyの「200」を変えることは役に立ちます。 –

+0

ああ、OK!私はこのコードとの間違ったマッチを持っています。たとえば、 https://imgur.com/1gmpqXXこのアルゴリズムで解決策を行うことはできますか?他のフォームもあります。例えば、https://imgur.com/SNojsZ7 –

関連する問題