2016-08-15 5 views
2

私はopencvのpythonでSobel関数を通してグラデーションの向きを取得しようとしています。問題は、位相関数にx方向とy方向の勾配を与えるときです。常に同じ結果をもたらします。度の位相が真であるか偽であるかは関係ありません。ここではサンプルコードは次のとおりです。cv2.phaseはラジアンで角度を与えます

img = cv2.imread('frameBB.jpg',0) 
sobelx = cv2.Sobel(img,cv2.CV_32F,1,0,ksize=3) 
sobely= cv2.Sobel(img,cv2.CV_32F,0,1,ksize=3) 
phase=cv2.phase(sobelx,sobely,True) 

私は、位相のヒストグラムを取得し、位相関数の最後の引数がTrue、またはFalseのいずれかであることのために同じ結果に終わります。どちらの場合も、ヒストグラムは次のようになります。 enter image description here

これは、元の画像とその勾配画像がどのように見えるかです:

enter image description here

私は私がここで間違ってやっているかわからない、と私は両方のケースのためにラジアンに勾配角度を取得する理由。

+0

OpenCVのバージョンはどれですか? – Kupiakos

+0

バージョンは3.1.0 – Miranda

答えて

5

あなたがcv2.phaseのドキュメントhereから見ることができるように:

cv2.phase(x, y[, angle[, angleInDegrees]]) 

第三の位置の引数は度/ラジアンを指定するため、実際にはありませんが、それは出力配列のために使われています。変更しようとしている引数はangleInDegreesです。第4位の引数として、またはそのようなキーワードを使用して、より明確に指定できます。

+1

これは何をするのですか?疑問がなくても、大きな答えが孤立しています。 – jpaugh

+0

あなたはそうです。私の編集が物事を明確にすることを願っています – y300

関連する問題