我尝试从CV的阶段()方法的结果中获取方向直方图。我尝试获得每个像素的圆角方向并将其除以10.因此它看起来就像5x5像素补丁一样:
{ 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来计算直方图的值。
获取Orientation Mat的代码如下所示:
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;
在变量hist中,我想通过另一种方法添加值。 我希望有人能理解我的想法,并能帮助我。
我现在有一个计划,如何迭代给定的方向图像我使用文档OpenCV Docu
中显示的循环for( i = 0; i < ori.rows; i++){
for( j = 0; j < ori.cols; j++){
cout << ori.at<uchar>(i,j) << endl;
}
}
但访问像这样的价值观并没有给我定位价值。任何线索?
答案 0 :(得分:1)
Ori
来自CV_32F
类型而非CV_8U
,因此请尝试ori.at<float>(i,j)
访问方向值