首页 > 其他 > 详细

OpenCV 计算机视觉(十六) 霍夫变换-直线检测、圆检测

时间:2019-07-25 22:20:15      阅读:173      评论:0      收藏:0      [点我收藏+]

 

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

#include<opencv2/opencv.hpp>	
#include<iostream>

using namespace std;
using namespace cv;

Mat src, dst;

int main(int argc, char** argv) {
	src = imread("D:/OpenCVprj/image/test7.jpg");
	imshow("src", src);

	Mat src_gray;
	Canny(src, src_gray, 150, 200, 3, true);
	imshow("canny", src_gray);
	cvtColor(src_gray, dst, COLOR_GRAY2BGR);//很重要,没有后面imshow("dst", dst)会报错。因为line所画的线有颜色,图片变为BGR了!
	//imshow("wa", dst);
	Scalar color = Scalar(0, 255, 0);
	vector<Vec4f> plines;
	HoughLinesP(src_gray, plines, 1, CV_PI / 180, 10, 0, 10);
	for (size_t i = 0; i < plines.size(); i++) {
		Vec4f hline = plines[i];
		line(dst, Point(hline[0], hline[1]), Point(hline[2], hline[3]), color, 1, LINE_AA);
	}

	imshow("dst", dst);
	waitKey(0);
	return 0;
}

技术分享图片  

 

 

霍夫圆检测:

技术分享图片

#include<opencv2/opencv.hpp>
#include<iostream>

using namespace std;
using namespace cv;

Mat src, dst;

int main(int argc, char** argv) {
	src = imread("D:/OpenCVprj/image/test8.jpg");
	imshow("src", src);

	Mat median_blur, gray;
	medianBlur(src, median_blur, 3);

	cvtColor(src, gray, COLOR_BGR2GRAY);

	vector<Vec3f> circles;
	HoughCircles(gray, circles, HOUGH_GRADIENT, 1, 30, 100, 40, 10, 50);
	src.copyTo(dst);
	for (size_t i = 0; i < circles.size(); i++) {
		Vec3f c = circles[i];
		circle(dst, Point(c[0], c[1]), c[2], Scalar(0, 0, 255), 2, LINE_AA);
		circle(dst, Point(c[0], c[1]), 2, Scalar(255, 0, 255),2, LINE_AA);
	}
	imshow("dst", dst);
	waitKey(0);
	return 0;
}

  

技术分享图片

  

 

OpenCV 计算机视觉(十六) 霍夫变换-直线检测、圆检测

原文:https://www.cnblogs.com/haiboxiaobai/p/11246852.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!