opencv直线拟合+直线与图像交点坐标

opencv直线拟合+直线与图像交点坐标

  • 背景
  • 函数说明
    • fitLine
    • clipLine
  • 代码

背景

在车道线拟合过程中,需要计算拟合直线与图像边界的交点,以确定车道区域。主要使用的函数fitLineclipLine

函数说明

fitLine

/* 返回的lineParam信息如下:
* @param lineParam
* ax + by + c=0
* a = lineParam[1]
* b = -lineParam[0]
* c = line[0] * line[3] - line[1] * line[2]
* k = lineParam[1] / lineParam[0]
* 直线上点 p(lineParam[2], lineParam[3])
* 直线垂直时:lineParam[1]为1,lineParam[0]为负无穷小
* 直线水平时:lineParam[1]为0,lineParam[0]为1
*/
void fitLine( InputArray points, OutputArray line, int distType,double param, double reps, double aeps )

clipLine

clipLine()函数判断pt1到pt2的直线是否在一个矩形范围内。函数声明如下:

bool clipLine(  // true if any part of line in imgRectcv::Rect imgRect,  // rectangle to clip tocv::Point& pt1,  // first endpoint of line overwrittencv::Point& pt2  // second endpoint of line, overwritten
);
bool clipLine(  // true if any part of line in image sizecv::Size imgSize,  // size of image,implies rectangle at 0,0cv::Point& pt1,  // first endpoint of line,overwrittencv::Point& pt2  // second endpoint of line,overwritten
);

第一种函数的形式使用了cv::Rect,直线和这个矩形比较;第二个函数只有cv::Size,该形式表示矩形的范围是从(0,0)开始的。
只有当直线完全在指定的矩形范围之外时,函数cv::clipLine()才会返回false。

代码

#include"opencv2/opencv.hpp"
int main()
{cv::Mat img(800, 800, CV_8UC3, { 255,255,255 });cv::Rect rect(100, 100, 400, 400);cv::rectangle(img, rect, { 0,0,0 }, 3);// ---- 直线拟合 cv::Point temp[2] = { {100, 100}, {200,100} };cv::Vec4f line_para;cv::fitLine(std::vector<cv::Point>{ temp[0], temp[1]}, line_para, cv::DIST_L2, 0, 1e-2, 1e-2);// ---- 直线端点cv::Point point0(line_para[2], line_para[3]);//计算直线的端点(y = k(x - x0) + y0)cv::Point point1, point2;if (line_para[1] == 1) {point1 = cv::Point(line_para[2], 0);point2 = cv::Point(line_para[2], img.rows);}else {float k = line_para[1] / line_para[0];point1.x = 0;point1.y = k * (0 - point0.x) + point0.y;point2.x = img.cols;point2.y = k * (point2.x - point0.x) + point0.y;}cv::Point line1[] = { point1,point2 };cv::line(img, line1[0], line1[1], { 255,0,0 }, 2);// ----- 直线与矩形框交点if (cv::clipLine(rect, line1[0], line1[1])) {cv::circle(img, line1[0], 3, { 0,0,255 }, -1);cv::circle(img, line1[1], 3, { 0,0,255 }, -1);}// -- 绘制cv::circle(img, temp[0], 4, { 0,255,0 }, 2);cv::circle(img, temp[1], 4, { 0,255,0 }, 2);cv::imshow("1", img);cv::waitKey(0);return 0;
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/798667.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何在Linux中安装软件

文章目录 一、Linux应用程序基础1.Linux软件安装包分类2.应用程序和系统命令的关系3.常见的软件包的封装类型 二、安装软件的方式1.RPM包管理工具2.yum安装3.编译 一、Linux应用程序基础 1.Linux软件安装包分类 Linux源码包&#xff1a; 实际上&#xff0c;源码包就是一大堆源…

目标检测YOLO实战应用案例100讲-基于多特征融合的SSD目标检测

目录 前言 目标检测的国内外研究现状 传统的目标检测方法 深度学习的目标检测方法

Vue2 —— 学习(二)

目录 一、事件处理 &#xff08;一&#xff09;基本语法 &#xff08;二&#xff09;点击事件语法 1.事件绑定 2.回调函数 3.参数 event 注意&#xff1a; &#xff08;三&#xff09;事件修饰符 1.阻止默认事件 常用 2.阻止事件冒泡 常用 3.事件只触发一次 常用 …

深入理解GO语言——GC垃圾回收二

文章目录 前言一、Go V1.5的三色并发标记法总结 前言 书接上回&#xff0c;无论怎么优化&#xff0c;Go V1.3都面临这个一个重要问题&#xff0c;就是mark-and-sweep 算法会暂停整个程序 。 Go是如何面对并这个问题的呢&#xff1f;接下来G V1.5版本 就用 三色并发标记法 来优…

WPS快速将插入Excle数据插入Word

前置条件&#xff1a; 一张有标题、数据的excle表格word中的表格与excle表格标题对应或包含电脑已经安装WPS软件 第一步、根据word模板设计excle模板&#xff0c;标头对应 第二步、word上面选【引用】--【邮件】&#xff0c;选打开数据源&#xff0c;找到excle文件&#xff0c;…

论文笔记:Detecting Pretraining Data from Large Language Models

iclr 2024 reviewer评分 5688 1 intro 论文考虑的问题&#xff1a;给定一段文本和对一个黑盒语言模型的访问权限&#xff0c;在不知道其预训练数据的情况下&#xff0c;能否判断该模型是否在这段文本上进行了预训练 这个问题是成员推断攻击(Membership Inference Attacks&…

天星数科聚势赋能,精准服务实体企业的产业金融需求

近年来&#xff0c;供应链金融行业受到国家层面的多项政策鼓励&#xff0c;是我国融资结构改革、金融服务实体经济、服务中小企业的重要抓手。2021年3月政府工作报告中首次提及“创新供应链金融服务模式”&#xff0c;这不仅意味着供应链金融已上升为国家战略&#xff0c;更意味…

npm 命令及其详细解释

npm init 用途&#xff1a;用于初始化一个新的 Node.js 项目&#xff0c;并生成 package.json 文件。详解&#xff1a;该命令会引导您填写项目的基本信息&#xff0c;如项目名称、版本、描述等&#xff0c;并创建 package.json 文件以保存这些信息。 npm install <package&g…

HarmonyOS实战开发-如何实现分布式帐号相关的功能。

介绍 本示例主要展示了分布式帐号相关的功能&#xff0c;使用ohos.account.distributedAccount、ohos.account.osAccount等接口&#xff0c;实现了绑定分布式帐号、解绑分布式帐号、更新分布式帐号信息和管理分布式帐号的功能&#xff1b; 效果预览 使用说明 1.首次进入应用会…

Java整合ElasticSearch8.13

1、引入Jar包 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-elasticsearch</artifactId> </dependency> 2、配置ES连接信息 spring:elasticsearch:# 地址uris: http://xxx:9200# 用户…

软件设计师26--关系代数

软件设计师26--关系代数 考点1&#xff1a;关系模式相关概念例题&#xff1a; 考点1&#xff1a;关系模式相关概念 并∪&#xff1a;结果是两张表所有记录的合并&#xff0c;相同记录只显示一次。 交∩&#xff1a;结果是两张表中相同的记录。 差-&#xff1a;S1-S2&#xff0…

Python程序设计 字符类型及其操作

1. 提取身份证号性别 通过身份证的第17位也就是倒数第二位的数字可以辨别该身份证所属人的性别,奇数为男性,偶数为女性。 输入身份证号&#xff0c;第17位若是偶数&#xff0c;输出性别女&#xff0c;否则输出性别男 1.通过input()函数接收用户输入的身份证号&#xff0c;将其…

使用 Selenium 和 OpenCV 识别验证码(使用 Java)

验证码的自动识别对于爬虫来说是一个常见的挑战。在这篇文章中&#xff0c;我们将展示如何使用 Selenium 和 OpenCV&#xff0c;结合 Java&#xff0c;来自动化识别网站上的验证码。 配置 Maven 依赖 首先&#xff0c;我们需要在 Maven 项目中添加 Selenium 和 OpenCV 的依赖。…

代码随想录 day25

文章目录 回溯216.组合总和 |||思路代码 17.电话号码的字母组合思路代码 回溯 216.组合总和 ||| 216.组合总和 ||| 思路 和组合相同,稍微改变了恢复现场和判断结束的方法 代码 class Solution { private:vector<vector<int>> ans;vector<int> temp;int…

MySQL EXISTS 语句和IN语句有啥区别

在 MySQL 中&#xff0c;EXISTS 和 IN 是用于子查询的两种不同方式&#xff0c;它们有一些区别&#xff1a; 1. **IN 语句**&#xff1a; - IN 子句用于在 WHERE 子句中指定多个值&#xff0c;并检查主查询中的某个列是否在子查询返回的结果集中。 - IN 子句适用于子查询…

npm发布包至私有仓库

前提&#xff1a;使用verdaccio在服务器搭建好了私有仓库 1、登录至私服 npm adduser --registryhttp://xxx.xxx.x.xx:48732、发布npm包到私有仓库 修改package.json中的相关信息后 #cd 项目目录 npm publish --registryhttp://xxx.xxx.x.xx:4873登录至私服查看 3、在项目中…

性能分析-CPU知识

目录 CPU知识 cpu组成 查看cpu信息&#xff1a; top命令中 cpu相关&#xff1a; top命令看到系统负载&#xff1a; CPU负载 IO负载 上下文&#xff1a; CPU的寄存器和程序计数器----在cpu的控制器中 实战演示分析 top命令分析 arthas工具 进程上下文切换高的问题分析…

《MATLAB科研绘图与学术图表绘制从入门到精通》

解锁MATLAB科研绘图魅力&#xff0c;让数据可视化成为你的科研利器&#xff01; 1.零基础快速入门&#xff1a;软件操作实战案例图文、代码结合讲解&#xff0c;从入门到精通快速高效。 2.多种科研绘图方法&#xff1a;科研绘图基础变量图形极坐标图形3D图形地理信息可视化等&a…

redis和ElasticSearch和MongoDB应用场景,如何选择

Redis、Elasticsearch和MongoDB是三种不同类型的数据库&#xff0c;它们有各自的应用场景和特点。在选择时&#xff0c;需要考虑以下几个方面&#xff1a; 数据读写模式&#xff1a;Redis是基于内存的键值存储数据库&#xff0c;适用于高速读写场景&#xff0c;如缓存、计数器等…

pdf操作器(图片转文字、PDF转word、PDF拆分、图片jpg、png互转)

pdf操作器&#xff08;不用联网图片转文字、PDF转word、PDF拆分、图片jpg、png互转&#xff09;介绍目前该软件实现了以下功能 pdf转wordpdf拆分图片&#xff0c;图片导出在桌面的一个文件夹里图片合并为pdf压缩、转换图片格式&#xff08;jpg和png&#xff09;OCR图片转文字&…