当前位置: 首页 > news >正文

OPENCV 检测直线[opencv--3]

opencv中集成了很多好用的函数,比如霍夫变换检测直线的函数,当然,考虑到看我文章的人水平,我这里只讲讲如何使用这个函数,和怎么调节其中的参数

先把运行效果PO出来吧
在这里插入图片描述

#include "CV_ERROR.h"
#include "MCV_funs.hpp"#include <opencv2/opencv.hpp>
#include <iostream>int main() {cv::utils::logging::setLogLevel(cv::utils::logging::LOG_LEVEL_ERROR);// 读取PNG图像//cv::Mat image = cv::imread("lines.png", cv::IMREAD_COLOR);cv::Mat image = cv::imread("PIC.jpg", cv::IMREAD_COLOR);if (image.empty()) {std::cerr << "无法读取图像文件" << std::endl;return -1;}showimageWin(image);// 转换为灰度图像cv::Mat gray;cv::cvtColor(image, gray, cv::COLOR_BGR2GRAY);// 应用边缘检测(Canny)cv::Mat edges;cv::Canny(gray, edges, 150, 200, 3);showimageWin(edges);// 使用霍夫变换检测直线std::vector<cv::Vec2f> lines;cv::HoughLines(edges, lines, 0.5, CV_PI / 360, 200);// 在原图上绘制检测到的直线cv::Mat result = image.clone();for (size_t 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(result, pt1, pt2, cv::Scalar(0, 255, 0), 15, cv::LINE_AA);}// 显示结果图像showimageWin(result);cv::waitKey();return 0;
}

下面是原理类的讲解,本鼠懒得重复做笔记了,直接PO在下面吧ψ(`∇´)ψ
在这里插入图片描述

http://www.lryc.cn/news/484393.html

相关文章:

  • FFmpeg 4.3 音视频-多路H265监控录放C++开发十三.2:avpacket中包含多个 NALU如何解析头部分析
  • 【MATLAB】目标检测初探
  • SpringCloud 微服务消息队列灰度方案 (RocketMQ 4.x)
  • 厘清标准差和标准误:因果推断的统计学基础
  • GESP4级考试语法知识(贪心算法(二))
  • MATLAB 使用教程 —— 命令窗口输入命令,工作区显示变量
  • LeetCode 热题100(八)【二叉树】(3)
  • uniapp h5实现录音
  • 字节跳动Android面试题汇总及参考答案(80+面试题,持续更新)
  • 【go从零单排】通道select、通道timeout、Non-Blocking Channel Operations非阻塞通道操作
  • PSRR仿真笔记
  • AUTOSAR_EXP_ARAComAPI的7章笔记(3)
  • WSADATA 关键字详细介绍
  • Day44 | 动态规划 :状态机DP 买卖股票的最佳时机IV买卖股票的最佳时机III
  • Area-Composition模型部署指南
  • 策略模式、状态机详细解读
  • OpenWrt广播DNS到客户端
  • C++编程技巧与规范-类和对象
  • AutoHotKey自动热键AHK-正则表达式
  • 【3D Slicer】的小白入门使用指南四
  • flink同步mysql数据表到pg库
  • AndroidStudio-常用布局
  • Vue全栈开发旅游网项目(10)-用户管理后端接口开发
  • [Android]查找java类中声明为native方法的具体实现方法
  • Exploring Defeasible Reasoning in Large Language Models: A Chain-of-Thought A
  • uniapp在app模式下组件传值
  • Docker解决暴露2375端口引发的安全漏洞
  • HTML5+CSS前端开发【保姆级教学】+新闻文章初体验
  • 『VUE』26. props实现子组件传递数据给父组件(详细图文注释)
  • RHCE-DNS域名解析服务器