从像素补丁OpenCV中获取方向直方图

Get Orientation Histogram from Pixel Patch OpenCV

本文关键字:获取 方向 直方图 OpenCV 像素 补丁      更新时间:2023-10-16

我尝试从CV的阶段()方法的结果中获得方向直方图。我尝试获得每个像素的圆形方向并将其除以10。所以它看起来就像这样例如一个5x5像素的Patch:

{ 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}

我的问题是,我真的不知道如何扫描Patch的每个像素,然后获得它的OrientationValue来计算直方图的值。

获取方向垫的代码如下所示:

 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文档

中显示的循环
for( i = 0; i < ori.rows; i++){
    for( j = 0; j < ori.cols; j++){
        cout << ori.at<uchar>(i,j) << endl;
    }
}

但是像那样访问值不会给我朝向值。有线索吗?

Ori来自类型CV_32F而不是CV_8U,所以尝试ori.at<float>(i,j)来访问方向值