1 // 霍夫线变换 hough 2 vector<Vec2f> lines;//定义一个矢量结构lines用于存放得到的线段矢量集合 3 HoughLines(dstImage,lines,1,CV_PI/180,150); 4 //依次在图中绘制出每条线段 5 for (size_t i = 0;i < lines.size();i++) 6 { 7 float rho = lines[i][0],theta = lines[i][1]; 8 Point pt1,pt2; 9 double a = cos(theta),b = sin(theta); 10 double x0 = rho*a,y0 = rho*b;//A是与直线垂直的线交点 坐标为(x0,y0)=(rho*cos(theta),rho*sin(theta)); 11 //向上取整函数cvCeil、向下取整函数cvFloor、四舍五入函数cvRound; 12 13 pt1.x = cvRound(x0+1000*(-b));//1000是取两点之间的距离,可操控量; 14 pt1.y = cvRound(y0+1000*(a));//pt1是位于A较上的一个点; 15 pt2.x = cvRound(x0-1000*(-b));//pt2是位于A较下的一个点; 16 pt2.y = cvRound(y0-1000*(a)); 17 18 line(dstImage,pt1,pt2,Scalar(55,100,195),1,CV_AA); 19 } 20 imshow("hough检测直线图",dstImage); 21 //waitKey(0);
时间: 2024-12-15 12:55:38