OpenCV学习笔记-Hough变换怎么用

参考:https://docs.opencv.org/3.4.5/d9/db0/tutorial_hough_lines.html
参考:https://docs.opencv.org/3.4.5/d4/d70/tutorial_hough_circle.html
若有表达不当或错误欢迎留言指正,互相交流学习,共同进步,目前还在学习,没有过多纠结于原理问题,日后有机会补充

目标

在本教程中,您将学习如何:

  • 使用OpenCV函数HoughLines()和HoughLinesP()来检测图像中的线条。
  • 使用OpenCV函数HoughCircles()来检测图像中的圆圈。

原理

参考官方文档:https://docs.opencv.org/3.4.5/d9/db0/tutorial_hough_lines.html

源码

霍夫线变换

#include "opencv2/imgcodecs.hpp"
#include "opencv2/highgui.hpp"
#include "opencv2/imgproc.hpp"
using namespace cv;
using namespace std;
int main()
{
   																//
	VideoCapture capture(0);									//
	//【2】循环显示每一帧											//									
	while (1)													//
	{
   															//
		Mat image;  //定义一个Mat变量,用于存储每一帧的图像		//	
		capture >> image;  //读取当前帧							//
//================================================================
		Mat gray = image.clone();
		Mat dst = image.clone();
		Mat cdst = image.clone();
		Mat cdstP;

		int kernel_size = 3;
		int ratio = 4;
		double lowThreshold = 50;

		cvtColor(image, gray, CV_BGR2GRAY);//转化成灰度图像
		Canny(gray, dst, lowThreshold, lowThreshold*ratio, kernel_size);
		cvtColor(dst, cdst, COLOR_GRAY2BGR);
		cdstP = cdst.clone();

		vector<Vec2f> lines; 
		HoughLines(dst, lines, 1, CV_PI / 180, 150, 0, 0); 
		for (size_t i = 0; i < lines.size(); i++)
		{
   
			float rho = lines[i][0], theta = lines[i][1];
			Point pt1, pt2;
			double a = cos
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值