Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Opencv 直线Hough变换的实现_Opencv_Image Processing_Hough Transform - Fatal编程技术网

Opencv 直线Hough变换的实现

Opencv 直线Hough变换的实现,opencv,image-processing,hough-transform,Opencv,Image Processing,Hough Transform,我正在尝试在已经预处理过的图像中实现Hough变换来进行直线检测。 所以我的输入图像是一个黑白边缘图像,0-背景和255-前景。我不希望使用OpenCV内置的HoughLines库。 实际上,我一直在创建累加器并正确地增加其值。我想不出哪里出了错,所以这里是我的代码块: int diagonal = sqrt(height * height + width * width); IplImage *acc = cvCreateImage (cvSize(180, 2 * diagonal),IP

我正在尝试在已经预处理过的图像中实现Hough变换来进行直线检测。 所以我的输入图像是一个黑白边缘图像,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;
            }
        }
    }
}
int对角线=sqrt(高度*高度+宽度*宽度);
IplImage*acc=cvCreateImage(cvSize(180,2*对角线),IPL_深度_8U,1);
unsigned char*accData=(unsigned char*)acc->imageData;

对于(int i=0;i我看到的是,对于弧度值,您不使用正弦,但对于度值,您可以按如下方式更改它:

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

“我不想使用OpenCV内置的HoughLines库”-出于兴趣,为什么不?cos和sin期望输入弧度,而不是度数我使用了一些东西,但它工作得很好。为了更快,首先你应该填充sin/cos数组(正如@moonshadow所说,你的错误在争论中)。是的,参数更改起作用。虽然结果仍然不准确-我得到了一个垂直拉伸的图像,但现在它满足了目的。是的,我稍后将使用内置函数进行最终使用。非常感谢。。现在的结果更像应该的样子。我将继续此过程以获得准确的坐标。