OpenCV学习记录20

一 学习内容

1. 霍夫变换--直线检测

1.1 在canny边缘检测基础上,进行霍夫变换直线检测

 

二 代码调试

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

using namespace cv;
using namespace std;
int main() {
	Mat src,dst_blur,dst_gray, dst_canny;
	src = imread("e:/2 opencv_projects_zl/desk2.jpg");
	if (!src.data) {
		printf("Load Error...\n");
		return -1;
	}
	namedWindow("Figure1",CV_WINDOW_AUTOSIZE);
	imshow("Figure1", src);

	//学习新内容:在边缘检测基础上,进行霍夫变换直线检测(思考:能否检测其他的线型?)
	//1. 高斯模糊+灰度转化
	GaussianBlur(src,dst_blur,Size(3,3),0,0);
	cvtColor(dst_blur,dst_gray,CV_BGR2GRAY);
	namedWindow("Figure2_gray", CV_WINDOW_AUTOSIZE);
	imshow("Figure2_gray", dst_gray);
	//2.canny边缘检测
	Canny(dst_gray,dst_canny,100,200);
	namedWindow("Figure3_canny", CV_WINDOW_AUTOSIZE);
	imshow("Figure3_canny", dst_canny);
	//3. 霍夫变换
	//3.1 创建数组,用于存放检测结果
	vector<Vec4f>plines;//前面需要添加语句using namespace std;
	//3.2 调用函数
	HoughLinesP(dst_canny, plines,1,CV_PI /180.0,10,5,20);//需要调试最后一个参数,使得检测出的直线连续、不间断。
	Scalar color = Scalar(0,0,200);
	for (size_t i = 0; i < plines.size(); i++)
	{
		Vec4f hline = plines[i];
		line(src,Point(hline[0],hline[1]), Point(hline[2], hline[3]),color,3,LINE_4);//将直线绘制在src彩色图像上
	}
	namedWindow("Figure4line", CV_WINDOW_AUTOSIZE);
	imshow("Figure4line", src);

	waitKey(0);
	return 0;
}

三 调试结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值