opencv - 实现线的霍夫变换

标签 opencv image-processing hough-transform

我正在尝试在已经预处理的图像中实现霍夫变换以进行线检测。
所以我的输入图像是黑白边缘图像,0 - 背景和 255 - 前景。我不想使用 OpenCV 内置的 HoughLines 库。
我实际上坚持创建累加器并正确增加其值。我无法弄清楚我哪里出错了,所以这是我的代码块:

int diagonal = sqrt(height * height + width * width);

IplImage *acc = cvCreateImage (cvSize(180, 2 * diagonal),IPL_DEPTH_8U, 1);
unsigned char* accData = (unsigned char *)acc->imageData;

for (int i=0; i<height; i++)
{
    for (int j=0; j<step; j++)
    {
        if (data[i*step + j] > 200)
        {
            for (int theta=0; theta<180; theta++)
            {
                int p = j * cos(theta) + i * sin(theta);
                if (p > 0)
                    accData[theta*180 + p] += 1;
            }
        }
    }
}

我在 acc 中得到的输出图像不是它应该的样子。我没有得到任何正弦曲线,而是到处都是白斑。任何人都可以提供任何关于我哪里出错的反馈吗?

最佳答案

我看到的是,您不使用带有弧度值的 sinus,但使用度数值您可以将其更改如下:

int p = j * cos((double)theta*PI/180) + i * sin((double)theta*PI/180);

关于opencv - 实现线的霍夫变换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16209928/

相关文章:

java - 将 RGB2CMYK 方法从 c++ 移植到 java 时遇到问题

c++ - 使用 OpenCV 检测 parking 位

python - 在 Numpy 中查找 Top10(n) RGB 颜色

java - OpenCV:应用adaptiveThreshold函数后最大值为-1

opencv - EMGU CV 中的标准霍夫线

opencv - 线段检测器与概率霍夫变换

c++ - 像素级图像配准/对齐?

c - 反转鱼眼畸变(我使用了 openCV 和 VC++)

python - 将对象掩码应用于 LBP 计算

python - 给定形成网格的白线图像,如何使用 opencv 获取内部形状的掩码?