当前位置: 首页> 文旅> 旅游 > 零基础Opencv学习(三)

零基础Opencv学习(三)

时间:2025/7/9 3:21:15来源:https://blog.csdn.net/weixin_38887743/article/details/141752829 浏览次数:0次
概述:主要目的是为了在图像中获取所需要的特征信息,比如直线或者圆等

一、标准霍夫变换 

      cv::Mat midImage, dstImage;/// 边缘检测 转化灰度图cv::Canny(image, midImage, 50, 200, 3);cv::cvtColor(midImage, dstImage, CV_GRAY2BGR);/// 进行霍夫线变换std::vector<cv::Vec2f> lines; ///存放得到线段矢量集合cv::HoughLines(midImage, lines, 1, CV_PI/180, 150, 0, 0);/// 绘制每条线段for(int i = 0; i<lines.size(); i++){float rho = lines[i][0], theta = lines[i][1];cv::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));cv::line(dstImage, pt1, pt2, cv::Scalar(0, 255, 0), 1, cv::LINE_AA);}cv::imshow("midImage", midImage);cv::imshow("dstImage", dstImage);

二、累计概率霍夫变换

      cv::Mat midImage, dstImage;/// 边缘检测 转化灰度图cv::Canny(image, midImage, 50, 200, 3);cv::cvtColor(midImage, dstImage, CV_GRAY2BGR);/// 霍夫线变换std::vector<cv::Vec4i> lines; ///存放得到线段矢量集合cv::HoughLinesP(midImage, lines, 1, CV_PI/180, 80, 50, 10);/// 绘制每条线段for(int i = 0; i<lines.size(); i++){cv::Vec4i l = lines[i];cv::line(dstImage, cv::Point(l[0], l[1]), cv::Point(l[2], l[3]),cv::Scalar(0, 255, 0),1, cv::LINE_AA);}cv::imshow("midImage", midImage);cv::imshow("dstImage", dstImage);

总结:两种效果都不好,可能是我的图片太复杂了

好了,后面学习重映射、仿射变换

关键字:零基础Opencv学习(三)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: