OpenCV:直线拟合——cv::fitLine()详解
实现目的:有一系列的点,需要拟合出一条直线。
cv::fitLine()的具体调用形式如下:
void cv::fitLine(
cv::InputArray points, // 二维点的数组或vector
cv::OutputArray line, // 输出直线,Vec4f (2d)或Vec6f (3d)的vector
int distType, // 距离类型
double param, // 距离参数
double reps, // 径向的精度参数 表示直线到原点距离的精度,建议取 0.01。设为0,则自动选用最优值
double aeps // 角度精度参数 表示直线角度的精度,建议取 0.01
);
计算出的直线信息存放在 line 中,为 cv::Vec4f 类型。line[0]、line[1] 存放的是直线的方向向量,double cos_theta = line[0]; double sin_theta = line[1];。line[2]、line[3] 存放的是直线上一个点的坐标。
还不太理解输出的直线,为什么要用这种类型。可以避免得到竖直直线,斜率无法显示么?
如果在图中画出直线,会用到cv::line(image, point1, point2, cv::Scalar(0, 255, 0), 2, 8, 0);因此,需要输入直线上的两个点,才能画出直线。
double cos_theta = line[];
double sin_theta = line[];
double x0 = line[], y0 = line[]; double k = sin_theta / cos_theta;
double b = y0 - k * x0; double x = ;
double y = k * x + b; cv::line(image, Point(x0,y0), Point(x,y), cv::Scalar(), );
OpenCV:直线拟合——cv::fitLine()详解的更多相关文章
- (原)opencv直线拟合fitLine
转载请注明出处 http://www.cnblogs.com/darkknightzh/p/5486234.html 参考网址: http://blog.csdn.net/thefutureisour ...
- 【opencv基础】detectmultiscale函数详解
前言 简单的人脸检测程序可以直接基于opencv的函数库进行实现,本文介绍一下detectMultiScale函数. 函数简介 opencv2人脸检测使用的是detectMultiScale函数,可以 ...
- [OpenCV]直线拟合
OpenCV实现了直线的拟合. CV_IMPL void cvFitLine( const CvArr* array, int dist, double param, double reps, dou ...
- OpenCV模板匹配函数matchTemplate详解
参考文档:http://www.opencv.org.cn/opencvdoc/2.3.2/html/doc/tutorials/imgproc/histograms/template_matchin ...
- 【opencv基础】图像翻转cv::flip详解
前言 在opencv中cv::flip函数用于图像翻转和镜像变换. 具体调用形式 void cv::flip( cv::InputArray src, // 输入图像 cv::OutputArray ...
- opencv学习笔记——颜色空间转换函数cv::cvtColor详解
cv::cvtColor()用于将图像从一个颜色空间转换到另一个颜色空间的转换(目前常见的颜色空间均支持),并且在转换的过程中能够保证数据的类型不变,即转换后的图像的数据类型和位深与源图像一致. 具体 ...
- OpenCV图像处理与视频分析详解
1.OpenCV4环境搭建 VS2017新建一个控制台项目 配置包含目录 配置库目录 配置链接器 配置环境变量 重新启动VS2017 2.第一个图像显示程序 main.cpp #include< ...
- OpenCV学习(21) Grabcut算法详解
grab cut算法是graph cut算法的改进.在理解grab cut算之前,应该学习一下graph cut算法的概念及实现方式. 我搜集了一些graph cut资料:http://yunpan. ...
- opencv——Rect和RotatedRect类详解
https://blog.csdn.net/u012819339/article/details/82217667 //不好 https://blog.csdn.net/mailzst1/artic ...
随机推荐
- 黄聪:Pjax 无刷新开发web,更好用户体验
什么Ajax.Pjax.Njax...神马玩意? 有Njax吗? 木有...不过真有Pjax!! 其实pjax就是用到了html5的新history api: pushState和replaceSta ...
- LeetCode——5.Longest Palindromic Substring
一.题目链接:https://leetcode.com/problems/longest-palindromic-substring/ 二.题目大意: 给定一个字符串,找出它最长的回文子串.例如,字符 ...
- 【RPC】使用Hessian构建RPC的简单示例
服务接口和实现 public interface HelloService { // 服务方法 String sayHello(String name); } public class HelloSe ...
- Global配置接口访问日志以及测试日志记录
在客户端请求接口时,经常会出现接口相应慢,接口等待超时,接口错误,为了这事相信不少后台开发者为此背锅,记下请求日志,拿出有力证据这才是关键. 1.接口请求错误记录 很多时候接口请求出现的500,404 ...
- Kubernetes查看日志命令
查看pod日志 kubectl logs <pod_name> kubectl logs <pod_name> -c <container_name> docker ...
- vue之v-if和v-show
v-if v-if主要用来进行条件渲染. <!DOCTYPE html> <html lang="en"> <head> <meta ch ...
- 服务容错保护断路器Hystrix之六:服务熔断和服务降级
伴随着微服务架构被宣传得如火如荼,一些概念也被推到了我们面前(管你接受不接受),其实大多数概念以前就有,但很少被提的这么频繁(现在好像不提及都不好意思交流了).想起有人总结的一句话,微服务架构的特点就 ...
- K近邻(K Nearest Neighbor-KNN)原理讲解及实现
算法原理 K最近邻(k-Nearest Neighbor)算法是比较简单的机器学习算法.它采用测量不同特征值之间的距离方法进行分类.它的思想很简单:如果一个样本在特征空间中的k个最近邻(最相似)的样本 ...
- NodeJs针对Express框架配置Mysql进行数据库操作
Express版本:4.14.1 说明:如下配置以express为例进行配置并进行测试,当然mysql中间件也可以在nodejs中单独使用. 参考:NodeJs的Mysql中间件Github地址 1. ...
- linux删除文件夹下除了某一个文件之外的所有文件及find用法
原文: https://www.jb51.net/article/99319.htm 比如一个目录下有1,2,3,4,5这五个文件,现在我需要删除除了2以外的所有文件,那么我可以使用 find . ! ...