
学习opencv
文章平均质量分 58
光电的一只菜鸡
个人技术交流群833459254
展开
-
opencv之坑(八)——putText中文乱码解决
之后调用putTextHusky就行。原创 2023-10-27 21:12:03 · 3310 阅读 · 0 评论 -
opencv图像处理学习(七十五)——glob遍历文件夹下的所有图片
用void glob(String pattern, std::vector& result, bool recursive = false);//当recursive为false时,仅仅遍历指定文件夹内符合模式的文件,当recursive为true时,会同时遍历指定文件夹的子文件夹。原创 2023-10-09 14:56:03 · 853 阅读 · 0 评论 -
opencv实战(零)——检测标记点
在实际应用中,能够直接利用霍夫圆检测这些理想方法的应用场景是非常少的,更多的是利用拟合的办法去寻找圆形。 大致思路如下,首先先选择要处理的ROI部分,记录下该图的左上点在原图的坐标,如果原图过大,要先进行等比例缩放;然后利用自适应阈值和Canny边缘提取进行处理,再进行闭运算与轮廓检测,计算点集面积,通过筛选面积阈值去除杂点,最后进行轮廓检测,拟合椭圆,效果如下:1.导入原图:2.截取ROI3.进行自适应阈值化与Canny边缘提取4.进行闭运算,然后轮廓检测,然后计算点集面积,通过面积原创 2022-03-21 09:50:46 · 10494 阅读 · 2 评论 -
opencv图像处理学习(七十四)——局部二值模式(LBP)
LBP是一种描述图像局部纹D理的特征算子,该算子具有旋转不变性与灰度不变性等显著优点。 以窗口中心像素为阈值,将其相邻8淋雨像素灰度与中心像素值比较,若周围像素值大于中心像素值,则该中心像素位置被标记为1,否则为0,通过计算得到的窗口中心像素点LBP码可以用来反映该窗口的区域纹理特征特征信息,经典LBP的数学表达式如下:LBP(xc,yc)=∑n=0n−12nψ(in−ic)LBP(x_c,y_c)=\sum_{n=0}^{n-1}2^n \psi(i_n-i_c)LBP(xc,yc)=n=0原创 2021-09-02 13:56:33 · 1260 阅读 · 0 评论 -
opencv图像处理学习(七十三)——方向梯度直方图(HOG)
图像直方图中的特征值由xix_ixi的像素构成的特征直方图为:H(I)=[h(x1),h(x2),…,h(xn)]H(I)=[h(x_1),h(x_2),\dots,h(x_n)]H(I)=[h(x1),h(x2),…,h(xn)] 其中h(xi)h(x_i)h(xi)表示像素个数的归一化处理值,特征直方图反映出来的是某一特征的概率分布,...原创 2021-08-31 17:52:25 · 1168 阅读 · 0 评论 -
opencv图像处理学习(七十二)——相机标定
文章目录(0)参考链接(1)标定理论<0>标定板<1>为什么要进行相机标定①根据是否需要标定参照物②根据所用模型1)线性模型2)非线性模型③根据所用摄像机个数不同④根据标定块的不同有立体和平面⑤根据内部参数是否可变的角度⑥从求解参数的结果来看有显示和隐式(2)标定过程(以棋盘格为例)(3)标定代码(0)参考链接 (1)OpenCV学习笔记(七) 相机标定的函数理解与学习: https://blog.youkuaiyun.com/xuxunjie147/article/details/原创 2021-06-05 13:10:09 · 5483 阅读 · 2 评论 -
opencv图像处理学习(七十一)——CUDA加速
【OpenCV】OpenCV中GPU模块使用 - 一点心青 - 博客园 (cnblogs.com)【OpenCV & CUDA】OpenCV和Cuda结合编程 - 一点心青 - 博客园 (cnblogs.com)原创 2021-05-29 16:10:26 · 1303 阅读 · 1 评论 -
opencv图像处理学习(七十)——官方文档
其实,市面上任何一本参考书,都有自己的局限性,与其这样,不如寻求官方。Opencv作为一款开源的计算机视觉库,其官方文档的参考价值远大于一些市面上的参考书籍。下面是3.3.1版本的官方文档的链接:OpenCV: OpenCV modules...原创 2021-05-26 11:57:40 · 289 阅读 · 1 评论 -
opencv图像处理学习(六十九)——VideoCapture类
1.VideoCapture类 Opencv中提供了专门操作视频的接口类VideoCapture,VideoCapture类可以从文件或摄像头设备中读取视频,提供常用的三种构造方法如下:VideoCapture::VideoCapture();VideoCapture::VideoCapture(const string &filename);VideoCapture::VideoCapture(int device); 参数filename表示视频文件的路径及名称;device表示原创 2021-04-17 12:37:22 · 2809 阅读 · 0 评论 -
opencv图像处理学习(六十八)——肤色检测
参考链接:https://blog.youkuaiyun.com/qq_22527639/article/details/81501565。1.肤色检测 肤色检测技术利用了计算机对人体皮肤像素的分析过程,随着人脸检测技术,表情识别及手势识别等技术的快速发展,肤色应用领域日趋增多。肤色检测技术常用的方法有基于颜色空间、光谱特征以及肤色反射模型等方法,这些方法的主要步骤先进行颜色空间变换,然后再建立肤色模型。肤色检测中颜色空间有RGB、YCrCb、HSV和Lab等,通常在处理的时候是将RGB颜色空间变换成相应的颜色空原创 2021-04-12 12:43:32 · 2695 阅读 · 0 评论 -
opencv图像处理学习(六十七)——奇异区域(blob检测)
1.什么叫奇异区域 奇异区域通常是指与周围领域有着某些特征(颜色和灰度)差别的区域,常见的奇异区域如医学领域X光照片或CT某些特定组织,天空中降落等,奇异区域相对于点区域检查更稳定,在目标分割及检测、图像配准、特征分析等领域得到了广泛应用。 计算机视觉中我们常常关注目标的特征是颜色和灰度,刻画图像中两个区域的视觉相似性有许多方法,如形状描述子、颜色特征、矩特征等。对于某种场景下的应用,具有独特纹理的对象可以使用一个很好的纹理描述符。对颜色不同的区域中的单个对象做相同的扩展,我们可以使用颜色特征来测量原创 2021-04-11 13:26:43 · 2290 阅读 · 0 评论 -
opencv图像处理学习(五十)——轮廓矩
参考链接:https://blog.youkuaiyun.com/qq_37207090/article/details/83986950。 图像矩是通过对轮廓上所有点进行积分运算而得到的一个粗略特征,对于图像函数f(x,y)f(x,y)f(x,y),图像的p+qp+qp+q几何矩定义如下:mpq=∫−∞∞∫−∞∞xpyqf(x,y)dxdy m_{pq}=\int_{-\infty}^\infty\int_{-\infty}^\infty x^py^qf(x,y)dxdy mpq=∫−∞∞∫−∞∞原创 2021-04-10 23:34:05 · 746 阅读 · 0 评论 -
opencv图像处理学习(四十九)——ORB特征
ORB特征基于FAST焦点的特征点检测与描述技术,该特征的描述方法可应用于实时性特征检测。ORB特征检测具有尺度和旋转不变性,同时对噪声及透视仿射也具有不变性,良好的性能能使得利用ORB在进行特征描述时的应用场景十分广泛。主要分为以下两个步骤。1.方向FAST特征点检测FAST角点是一种基于机器学习的快速角点检测算法,具有方向的FAST关键点对兴趣点所在圆周上的16个像素点进行判断,若盘点后的当前中心像素点为暗或亮,将决定其是否为角点。FAST角点检测计算的实际复杂度小,检测效果突出。FAST角点检原创 2019-04-16 16:11:44 · 656 阅读 · 2 评论 -
学习opencv(四十八)——关键点与描述符
当进行跟踪时,或者其他类型用到关键点及其描述符的分析时,通常需要做三件事情。第一个是根据一些关键点的定义搜索图像闭关查找图像中的所有关键点。第二个是为发现的每个关键字创建一个描述符。第三个是通过将所找到的关键点的描述符与一些现有的描述符集进行毕竟,看看是否可以找到匹配项。在跟踪应用程序中,最后一步涉及查找序列的一帧图像中的特征,并长室将其与前一帧中的特征进行匹配。在目标检测应用程序在,人们通常会在一些数据库中搜索“已知”特征的“已知”与各个目标或目标类相关联的特征。对于这些层中的每一个,Opencv提供原创 2021-04-07 09:49:03 · 791 阅读 · 0 评论 -
opencv图像处理学习(四十七)——SURF特征
SURF特征描述子对经典SIFT特征进行了改进,SIFT算法的最大缺点是如果不借助硬件或专门的图像处理器很难达到实时。SURF算法的实现原理借鉴了SIFT中的简化近似斯像,把DOH中高斯二阶微分的目标进行简化,使得卷积平滑操作仅需要转换成加减运算,SURF算法的鲁棒性好且时间复杂度低。SURF特征不仅保持SIFT的尺度不变性与选择不变性,而且对光照变化和仿射变化同样具有很强的鲁棒性。SURF特征通过计算相关Hessian矩阵并找到尺度空间的极值点来确定:SURF特征向量包含以下三个步骤:(1)构原创 2019-04-16 16:10:31 · 1252 阅读 · 2 评论 -
opencv图像处理学习(四十五)——尺度空间变换
1.尺度空间当利用计算机视觉系统分析未知场景中的目标,系统无法得知我们关注的目标物体的尺寸大小,因此,我们首先需要考虑的是如何描述目标物体的尺度空间。对目标物体而言,我们希望通过物体存在的一些显著区域特征来描述它。当利用计算机来分析目标物体图像时,我们需要关注的是目标于背景区域的差异性。局部不变性是目标特征分析在重要的性质之一,局部不变性包括尺度不变性和旋转不变性。尺度不变性描述的是物体视觉上的元进与目标的认知分析无关,也就是摄像机相对物体远近呈现出来的物体尺寸不受其大小的影响。高尺度意味着物体原创 2019-04-16 16:09:10 · 1687 阅读 · 0 评论 -
imagewatch工具的使用方法
原 imagewatch工具的使用方法 2017年07月27日 14:45:59 lifei092 阅读数:1875 ...原创 2019-04-04 16:25:44 · 2956 阅读 · 2 评论 -
opencv图像处理学习(六十六)——哈希值相似度计算(哈希感知算法)
0.参考链接相似图片搜索的原理:www.ruanyifeng.com/blog/2011/07/principle_of_similar_image_search.htmlhttp://www.ruanyifeng.com/blog/2013/03/similar_image_search_part_ii.html1.基本理论感知哈希算法(perceptual hash alg...原创 2019-11-04 16:30:16 · 699 阅读 · 0 评论 -
opencv图像处理学习(六十五)——VTK与cmake
1.cmakeCMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的automake。只是 CMake 的组态档取名为 CMakeLists.txt。Cmake 并不直接建构出最终的软件,而是产生标准的建构档(如 Unix 的 Makefile 或 ...原创 2019-12-26 09:54:24 · 1475 阅读 · 0 评论 -
opencv图像处理学习(六十四)——图像深度
Mat的存储是逐行存储的,矩阵中的数据类型包括:Mat_<uchar>对应的是CV_8U,Mat_<uchar>对应的是CV_8U,Mat_<char>对应的是CV_8S,Mat_<int>对应的是CV_32S,Mat_<float>对应的是CV_32F,Mat_<double>对应的是CV_64F,对应的数据深度如下:•...原创 2019-10-22 10:14:12 · 894 阅读 · 0 评论 -
opencv之坑(七)——debug和release版本下的vector
0.问题背景好吧,第六篇就是一个科普,今天联调的同事告诉我她之前出现了dll混用的问题,今天让她一个一个剥开,结果我的dll发现debug是没问题,release出现如下报错:1.参考链接在release模式下使用vector下崩溃的问题https://blog.youkuaiyun.com/codelative/article/details/9054703关于release和debu...原创 2019-10-17 10:26:36 · 764 阅读 · 0 评论 -
opencv图像处理学习(六十三)——InputArray和OutputArray
看过OpenCV源代码的朋友,肯定都知道很多函数的接口都是InputArray或者OutputArray型的,这个接口类还是很强大的,今个就来说说它们的那些事。InputArray这个接口类可以是Mat、Mat_<T>、Mat_<T, m, n>、vector<T>、vector<vector<T>>、vector<Mat>...原创 2019-10-16 18:32:05 · 769 阅读 · 0 评论 -
opencv之坑(六)——vector
0.前言首先必须弄清楚两个概念:1.capacity指容器在分配新的存储空间之前能存储的元素总数,也可以说是预分配存储空间的大小。2. size指当前容器所存储的元素个数resize:(resize既分配了空间,也创建了对象)1、resize(n) 调整容器的长度大小,使其能容纳n个元素。如果n小于容器的当前的size,则删除多出来的元素。否则,添加采用值初始化的元素。...原创 2019-10-16 17:28:26 · 1618 阅读 · 0 评论 -
opencv图像处理学习(六十二)——寻找波峰与获取最佳阈值
1.寻找波峰原理后面再补,先上代码:cv::Mat findpeakmax(cv::Mat srcImage, std::vector<int>& resultVec)//求波峰{ cv::Mat value;//返回投影向量 cv::Mat VerMat; cv::Mat resMat = srcImage.clone(); //阈值化操作 int ...原创 2019-10-12 14:16:27 · 5082 阅读 · 4 评论 -
opencv图像处理学习(五十二)——拟合(最小二乘法)
怀着沉痛的心情,拖着疲惫的身心,为了拟合好圆,我实在不得不上最小二乘法了(我上班写的代码不要想了,不可能发在blog里的),现在进入正题。(1)基本原理名称 自变量:x …… 函数(因变量):y …… 求以下拟合函数:,使得...原创 2019-04-19 17:07:12 · 7874 阅读 · 1 评论 -
opencv图像处理学习(五十四)——边界填充copyMakeBorder
在OpenCV滤波算法中,有两个非常重要的基本工具函数,copyMakeBorder和borderInterpolatecopyMakeBorder函数原型void copyMakeBorder( const Mat& src, Mat& dst,int top, int bottom, int left, int right,int borderType, ...原创 2019-04-19 17:08:15 · 5970 阅读 · 0 评论 -
如何查看Opencv中自带内部函数的源代码
找到Opencv的安装目录,例如我的安装目录在F盘,找到相应的安装目录如下所示可以看到上图中有两个目录文件夹,而我们要找的源代码就在source这个文件夹下,打开这个目录在上图中找到modules,打开后可以看到很多文件夹,每个文件夹下都存放了不同类型领域的源代码下面我们以查找Opencv中图像处理函数filter2D的源代码为例,它存在improc这个目录...转载 2019-04-20 10:19:57 · 1469 阅读 · 0 评论 -
opencv图像处理学习(十七)——直方图匹配
直方图匹配又称为直方图规定化(规范化),其作用是增强某一特定区间的图像信息,直方图匹配综合了直方图变换和均衡化的原理思想,通过建立映射变换关系,使期望图像的直方图达到一种特定形态,对源图像直方图均衡化y=f(x),目标图像直方图均衡化z=g(k),使得y=z,即满足。直方图匹配的步骤如下:(1)分别计算源图像和目标图像的累计概率分布(2)分别对源图像与目标图像进行直方图均衡化操作(3)利用...原创 2019-03-31 13:11:54 · 1287 阅读 · 0 评论 -
opencv图像处理学习(五十三)——ROI设置
如何在OpenCV(C ++ / Python)中选择边界框(ROI)?在本教程中,我们将学习如何在OpenCV中的图像中选择边界框或感兴趣区域(ROI)。 在过去,我们必须通过处理鼠标事件来编写我们自己的边界框选择器。 但是,现在我们可以选择使用OpenCV原生部分的函数selectROI。我对OpenCV库中的奇怪选择感到惊讶。 您可能会认为selectROI将成为具有显示图像,绘图等功能的...原创 2019-04-19 17:06:18 · 1611 阅读 · 0 评论 -
opencv之坑(四)——拟合圆
建议用最小二乘法拟合圆,下面是参考链接:http://blog.sina.com.cn/s/blog_b27f71160101gxun.html http://www.cnblogs.com/dotLive/archive/2007/04/06/524633.htmlhttp://blog.youkuaiyun.com/andylao62/article/details/24522365ht...原创 2019-04-18 17:19:58 · 7787 阅读 · 0 评论 -
opencv图像处理学习(五十一)——拟合(opencv自带函数)
很久没更新blog了,主要最近开发任务有点重,然而最近需要开发一个拟合工具箱,所以才会有这一篇blog,废话不多说,进入正题。(磨刀不误砍柴功,省的后面开发不好挨骂)首先先整理一下参考链接:(包括最小二乘法(下一章的参考链接))opencv的曲线拟合polyfit:https://www.cnblogs.com/phoenixdsg/p/6978263.htmlopencv多边形拟合...原创 2019-04-18 15:12:35 · 13387 阅读 · 1 评论 -
opencv图像处理学习(四十六)——sift特征
计算机视觉理论中的特征描述是常见的目标分析技术之一,关键点检测与关键点提取是目标特征分析的重要步骤。局部图像特征描述的核心基础问题是不变性和可分性分析,不变性是基于特征描述对视角变化的不变性、尺度变化的不变性及旋转变化的不变性等,可分性是基于局部图像内容的可区分性。在实际应用场景中,不变性与可分性是相互依存且矛盾的。Opnecv中常见的特征描述子有多种,如SIFT、SURF及ORB特征描述子。1.SIFT特征步骤SIFT都目前应用最广泛的关键点检测和描述算法,SIFT特征提取充分利用了图像局部信息,原创 2019-04-16 16:09:52 · 1253 阅读 · 2 评论 -
opencv图像处理学习(四十四)——图割Grabcut
(一)基本介绍Graphcut是一种基于图论的分割方法,在计算机视觉领域中应用于前背景分割、医学处理、纹理分割及立体视觉灯方能,基于图论的分割技术是图像分割领域中新的研究热点,该方法基于能量优化算法,将图像分割问题转化为图的最小割优化问题。Grabcut是Graphcut算法的改进。graphcut是一种直接基于图切算法的图像分割技术,仅仅需要确认前景与背景输入,该算法就可以完成背景与前景相似督导额赋权图,并通过最优切割来实现图像分割。Grabcut算法不需要用户交互,仅仅需要输入包含目标前景的区域原创 2019-04-16 16:08:16 · 872 阅读 · 0 评论 -
opencv图像处理学习(五十五)——终于了解了Vec4f(以后在补充其它常见类型)
时间紧迫,进入正题:1.Vec4的参数本质对于二维直线而言类型为cv::Vec4f,对于三维直线类型则是cv::Vec6f,输出参数的前半部分给出的是直线的方向,而后半部分给出的是直线上的一点(即通常所说的点斜式直线)。Vec4f line_para; Point point0;point0.x = line_para[2];//2、3代表点point0.y = line_pa...原创 2019-04-20 15:46:11 · 6699 阅读 · 13 评论 -
opencv图像处理学习(五十七)——峰值信噪比和结构相似性
1.峰值信噪比峰值信噪比是常用的衡量信号失真的指标。该参数是基于图像像素灰度值进行统计分析,但是由于人类视觉特性的差异性,通常出现的评价结果与人的主管感觉不一致,但其仍然是一个有参考价值的评价指标。对于两幅图像I与K,尺寸大小为m xn,它们的均方误差的定义为公式: ...原创 2019-08-18 21:53:21 · 6989 阅读 · 2 评论 -
opencv图像处理学习(六十二)——CV_Assert
1.CV_AssertASSERT()是一个调试程序时经常使用的宏,在程序运行时它计算括号内的表达式,如果表达式为FALSE (0), 程序将报告错误,并终止执行。如果表达式不为0,则继续执行后面的语句。这个宏通常原来判断程序中是否出现了明显非法的数据,如果出现了终止程序以免导致严重后果,同时也便于查找错误。例如,变量n在程序中不应该为0,如果为0可能导致错误,你可以这样写程序: .....原创 2019-09-10 15:00:13 · 2904 阅读 · 0 评论 -
opencv图像处理学习(六十一)——clone与copyto
0.序言在C++中,函数的参数,传值、传引用、传指针是有区别的,具体如下:#include<iostream>#include <iomanip>using namespace std;void test1(int a){ a = a + 1;}void test2(int &a){ a = a + 1;}void te...原创 2019-09-10 10:48:21 · 1305 阅读 · 0 评论 -
opencv图像处理学习(六十)——系统函数
在OpenCV编程中,可能会遇到比较不同算法之间的运算复杂度及时耗的问题,下面给出一个统计代码运行时间的demo,里面用到getTickCount函数,使用时需要添加头文件#include "opencv2/imgproc/imgproc.hpp"。#include<iostream>#include <opencv2/opencv.hpp>#includ...原创 2019-09-02 18:09:48 · 207 阅读 · 0 评论 -
opencv图像处理学习(五十九)——数据与指针
当然,最近在看指针方面,当然也要了解一下opencv在这方面的用法。1.指针(1)saturate_cast<uchar>确保了RGB的值在0~255之间Mat.ptr<uchar>(int i=0) 获取图像像素矩阵指针,i表示从第几行开始,从0开始计行数saturate_cast<uchar>(-100) 返回0saturate_cas...原创 2019-09-02 10:43:29 · 1143 阅读 · 0 评论 -
opencv图像处理学习(五十八)——遍历处理
1.at下标略2.指针遍历Mat::Ptr<type>Mat类提供了一个函数模板Mat::Ptr方法,它可用于表示遍历图像的每一个字节,参数可设置为以0为起始行号,默认返回值为uchar*或者const unchar*.Opencv中也提供了相应的模板template<typename_Tp>_Tp* Mat::ptr(int i0 = 0),i0代表的是...原创 2019-08-12 00:10:05 · 479 阅读 · 0 评论