2016-09-22 7 views
0

私は、CVからphase()メソッドの結果からオリエンテーションヒストグラムを取得しようとしています。私は、各ピクセルの丸みを帯びたオリエンテーションを取得し、それは、5×5ピクセルのパッチについては、例えばそのように見えるようにするため10で割りしよう:ピクセルパッチからオリエンテーションヒストグラムを取得するOpenCV

{ 1 36 20 3 14 
5 16 11 6 9 
7 12 34 22 0 
34 5 9 21 4 
5 21 28 30 1} 

私の問題は、私は本当にいけないスキャンする方法を知っているということであり、パッチの各ピクセルを取得し、そのOrientationValueを取得してヒストグラムの値を計算します。私は別の方法で値を追加する変数HISTで

Mat patch = src(Rect(px,py,15,15)); 

Mat Sx; 
Sobel(patch, Sx, CV_32F, 1, 0, 3); 

Mat Sy; 
Sobel(patch, Sy, CV_32F, 0, 1, 3); 

Mat mag, ori; 
magnitude(Sx, Sy, mag); 
phase(Sx, Sy, ori, true); 

int** hist; 

オリエンテーションマットを取得するための私のコードは次のようになります。 誰かが私の考えていることを理解して助けてくれることを願っています。私は今の計画を持っている

は、与えられた方向画像を反復処理する方法を私はドキュメントOpenCV Docu

for(i = 0; i < ori.rows; i++){ 
    for(j = 0; j < ori.cols; j++){ 
     cout << ori.at<uchar>(i,j) << endl; 
    } 
} 

に示されている。しかし、そのような値にアクセスすると文句を言わない私にオリエンテーション値を与えているループを使用します。すべての手がかり?

+1

ORIがタイプCV_32FないCV_8Uからなので、 'ori.at (i、j)を試す値にアクセスしてみてください'や 'convertScaleAbsでのSxを変換します' – PSchn

+0

convertScaleAbsは' phase() 'がポイント値を表示する必要があるので動作しません。そのことについては忘れてください – PSchn

+0

ありがとうございます!どのように私がそれを監督することができるか分からない。 –

答えて

1

OriはタイプCV_32FないCV_8Uからなので、ori.at<float>(i,j) ROは向きが

関連する問題