转换OpenCv C++;Java代码 我试图用OpenCV HOWLIN算法检测图像中的线条,但问题是我在C++中发现的唯一教程,我设法把一些代码转换成java,但是有些线条太混乱了,下面是我原来的代码,转换成java < /p> Mat dst, cdst; Canny(src, dst, 50, 200, 3); cvtColor(dst, cdst, CV_GRAY2BGR); vector<Vec2f> lines; // detect lines HoughLines(dst, lines, 1, CV_PI/180, 150, 0, 0 ); // draw lines for( size_t i = 0; i < lines.size(); i++ ) { float rho = lines[i][0], theta = lines[i][1]; Point pt1, pt2; double a = cos(theta), b = sin(theta); double x0 = a*rho, y0 = b*rho; pt1.x = cvRound(x0 + 1000*(-b)); pt1.y = cvRound(y0 + 1000*(a)); pt2.x = cvRound(x0 - 1000*(-b)); pt2.y = cvRound(y0 - 1000*(a)); line( cdst, pt1, pt2, Scalar(0,0,255), 3, CV_AA); } Mat-dst、cdst; Canny(src、dst、50、200、3); CVT颜色(dst、cdst、CV_GRAY2BGR); 矢量线; //探测线 HoughLines(dst,lines,1,CV_PI/180,150,0,0); //划线 对于(size_t i=0;i

转换OpenCv C++;Java代码 我试图用OpenCV HOWLIN算法检测图像中的线条,但问题是我在C++中发现的唯一教程,我设法把一些代码转换成java,但是有些线条太混乱了,下面是我原来的代码,转换成java < /p> Mat dst, cdst; Canny(src, dst, 50, 200, 3); cvtColor(dst, cdst, CV_GRAY2BGR); vector<Vec2f> lines; // detect lines HoughLines(dst, lines, 1, CV_PI/180, 150, 0, 0 ); // draw lines for( size_t i = 0; i < lines.size(); i++ ) { float rho = lines[i][0], theta = lines[i][1]; Point pt1, pt2; double a = cos(theta), b = sin(theta); double x0 = a*rho, y0 = b*rho; pt1.x = cvRound(x0 + 1000*(-b)); pt1.y = cvRound(y0 + 1000*(a)); pt2.x = cvRound(x0 - 1000*(-b)); pt2.y = cvRound(y0 - 1000*(a)); line( cdst, pt1, pt2, Scalar(0,0,255), 3, CV_AA); } Mat-dst、cdst; Canny(src、dst、50、200、3); CVT颜色(dst、cdst、CV_GRAY2BGR); 矢量线; //探测线 HoughLines(dst,lines,1,CV_PI/180,150,0,0); //划线 对于(size_t i=0;i,java,c++,opencv,Java,C++,Opencv,这就是我到目前为止所做的 Mat dst, cdst; Imgproc.Canny(src, dst, 50, 200); // Imgproc.Canny(src, dst, 50, 200, 3); Imgproc.cvtColor(dst, cdst, Imgproc.COLOR_GRAY2BGRA); Vector<Vec2f> lines; // detect lines Imgproc.HoughLine

这就是我到目前为止所做的

       Mat dst, cdst;
    Imgproc.Canny(src, dst, 50, 200); 
  //  Imgproc.Canny(src, dst, 50, 200, 3); 
    Imgproc.cvtColor(dst, cdst, Imgproc.COLOR_GRAY2BGRA); 

    Vector<Vec2f> lines;
    // detect lines
    Imgproc.HoughLines(dst, lines, 1, Math.PI/180, 150, 0, 0 );

    // draw lines
    for( int i = 0; i < lines.size(); i++ )
    {
        float rho = lines[i][0], theta = lines[i][1];
        Point pt1, pt2;
        double a = Math.cos(theta), b = Math.sin(theta);
        double x0 = a*rho, y0 = b*rho;
        pt1.x = Math.round(x0 + 1000*(-b));
        pt1.y = Math.round(y0 + 1000*(a));
        pt2.x = Math.round(x0 - 1000*(-b));
        pt2.y = Math.round(y0 - 1000*(a));
        Imgproc.line( cdst, pt1, pt2, new Scalar(0,0,255), 3, Core.LINE_AA);
        //Imgproc.line( cdst, pt1, pt2, new Scalar(0,0,255), 3, Core.LINE_AA);
    }
Mat-dst、cdst;
Imgproc.Canny(src,dst,50,200);
//Imgproc.Canny(src,dst,50,200,3);
Imgproc.CVT颜色(dst、cdst、Imgproc.COLOR_GRAY2BGRA);
矢量线;
//探测线
Imgproc.HoughLines(dst,lines,1,Math.PI/180150,0,0);
//划线
对于(int i=0;i

我的问题开始于第3行
Imgproc.Canny(src,dst,50200,3)
,我发现有5个参数的Canny的Java版本有一个
boolean
作为其第5个参数,
向量行
Vec2f
在Java版本和
Imgproc.line(cdst,pt1,pt2,新标量(0,0255),3,Core.line\AA)中我找不到
Vec2f
,在具有
6
参数的行的
Imgproc
中没有方法,我找到的最接近的是5和7

向量
数组列表
相同吗?
Math.PI
等于
CV_PI
(弧度还是度数?)根据这里的帖子
Math.PI
可以用来代替
CV_PI
看看答案事实上,我是借助这条线索卖出的。请发布你找到的解决方案并接受你自己的答案,关闭另一个有用问题的副本,或删除此问题。