OpenCV
文章平均质量分 88
恒友成
勿在浮沙筑高台
左脑学习,右脑应用
展开
-
19.OpenCV Mat的位操作
欢迎访问个人网络日志🌹🌹🌹🌹。原创 2023-12-01 21:38:47 · 376 阅读 · 0 评论 -
18.Lucas-Kanade光流及OpenCV中的calcOpticalFlowPyrLK
光流描述了像素在图像中的运动,就像彗星☄划过天空中流动图像。同一个像素,随着时间的流逝,会在图像中运动,光流法就是追踪它的运动过程。光流法根据追踪的像素数又可以分成稀疏光流法和稠密光流法。稀疏光流法:计算部分像素的运动,稀疏法以光流为代表,可以用来目标追踪中跟踪特征点的位置。稠密光流法:计算所有像素的运动,稠密光流法以光流为代表。在光流中,将相机的图像看成是随时间变化的,图像III在ttt时刻位置为xy(x,y)xyIxytI(x,y,t)Ixyt。原创 2023-07-09 15:49:37 · 1905 阅读 · 0 评论 -
17.OpenCV中的GFTTDetector类
类用来提取对线的角点特征,角点检测(Corner Detection)也称为特征点检测,是图像处理和计算机视觉中用来获取图像局部特征点的一类方法,广泛应用于运动检测、图像匹配、视频跟踪、三维建模以及目标识别等领域中。可以看到检测的结果还是很好的,不过中间大六边形上面的两个角点还是没有检测到,感兴趣可以改小。这里考虑的是左右上下边沿与图像高宽平行组成的角点,对于旋转和缩放的角点需要单独讨论。的定义可以看到,对于角点有左右边沿或上下边沿组成,是一个经验常数,用来控制检测到角点的数量,欢迎访问个人网原创 2023-07-08 13:42:53 · 1389 阅读 · 0 评论 -
(十六)qt creator中使用OpenCV
前提是已经正确编译安装了OpenCV和pkg-config。添加OpenCV库选择External Library项。,这是不够的,一个个手动添加很麻烦,如果还可以在。环境变量,qtcreator中的。欢迎访问个人网络日志🌹🌹。写法类似makefile。工程添加‵OpenCV。原创 2023-03-17 00:35:26 · 1486 阅读 · 0 评论 -
(十五)双边滤波Bilateral Filter
为了解决高斯滤波会导致边缘模糊的问题,不仅需要考虑像素之间的空间关系,还需要考虑卷积核范围内的像素值间的变化大小。第一部分介绍的高斯滤波在对图像进行平滑操时,对所有的像素都是无差别的使用同个高斯核进行计算的,这会导致对图像中物体边缘也进行平滑,使图像变的模糊。越小,分布越集中,中间部分所占比重远远高于其他部分,反映到高斯模板上就是中心元素值远远大于其他元素值,于是自然而然就相当于中间值的点运算。点开图像看原图,在图中红色框出的部分,能够看到双边滤波在平滑的同时还有非常好的保边能力。函数,调用时只需给出。原创 2023-02-09 22:20:00 · 603 阅读 · 0 评论 -
(十四)OpenCV中的自带颜色表操作cv::LUT
cv::LUT是OpenCV中实现的自带颜色表操作,实现数组的查表变换。将输入数组src根据变换表lut变换得到dst。其实现作用过程如下图:其应用主要是空间换时间,可以减少运算量,如对图像应用gamma校正时可以将0-255的计算结果存储在lut中,利用查表实现gamma变换。原创 2022-11-10 22:57:23 · 1508 阅读 · 0 评论 -
(十三) minAreaRect函数
函数的返回值是旋转矩形框中心点的坐标和框的宽高,想要在图像画出旋转矩形框还需要将其转成4个顶点的形式,使用。轴建立新的坐标系,则和原图像坐标系之间是只有旋转变换,求出其旋转矩阵即可完成点的变换,可。此外还可以手动的来求,也比较简单,假设以旋转点为原点,矩形框。轴正方向开始顺时针旋转碰到旋转矩形框第一条边时所转过的角度,旋转重合的第一条边算做。分别是旋转矩形框中心的坐标和矩形的宽和高。旧版本和新版本的定义有些许的差异,具体是以。的点为旋转点, 逆时针方向旋转碰到的第一条边与。对于旧版的定义,以旋转矩形框。..原创 2022-08-10 21:50:12 · 13316 阅读 · 7 评论 -
(十二) findContours函数的hierarchy详解
获取对象的轮廓,一般最好先对图像进行灰度化再进行阈值处理,然后用来检测轮廓。原创 2022-08-10 08:15:00 · 2188 阅读 · 0 评论 -
(十二)通过Opencv blobFromImage实现数据标准化
opencv blobFromImage实现神经网络数据输入的标准化原创 2022-04-27 01:41:27 · 3089 阅读 · 0 评论 -
(十一)OpenCV实现图像频率域滤波
1.基础见《数字图像处理第四版》P137-P2091.1傅里叶变换Fourier TransformFourier Transform由法国的一位数学家和物理学家Jean-Baptiste Joseph Fourier (1768-1830)提出,主要包括适用于周期函数的傅里叶级数(Fourier Serier)和应用于非周期函数(曲线下面积有限)的傅里叶变换。傅里叶级数傅里叶级数是指,周期为TTT的连续变量ttt的周期信号f(t)f(t)f(t),可表示为乘以适当系数的正弦函数和余弦函数之和原创 2022-02-28 01:04:53 · 3476 阅读 · 0 评论 -
(十)OpenCV相机标定
一.基本原理相机的基本原理介绍见基本相机模型及参数张正友标定法的推导介绍见相机的内参矩阵表示的是将相机坐标系中的空间点变换到像素坐标系中:相机的外参表示的是世界坐标系到相机坐标下的变换:其中,wcT_{w}^{c}TwcT表示的是相机的外参。在OpenCV使用棋盘格标定时,相机通常是固定的,棋盘格在相机视野中移动获取不同位置的图像。此时,世界坐标系在棋盘格上,不同图像之间相机的内参相同外参不同,同一张图像中不同的角点相机外参是相同的,相机张正友标定法的原理介绍可参考。考虑畸变。径向畸变和原创 2022-02-22 00:57:46 · 4271 阅读 · 0 评论 -
(九)OpenCV Canny边缘检测
1.基础原理参考自《数字图象处理》第十章及OpenCV Tutorial Canny Edge Detector1.1边缘检测概述边缘检测是根据灰度突变来分割图像的一种常用方法。边缘模型可根据它们的灰度剖面来分类,通常分为台阶模型,斜坡模型和屋顶边缘模型。台阶模型多见于计算机生成的图像中,如实体建模和动画领域。实际图像中多为斜坡边缘模型。在使用二阶梯度来获取图像边缘时,二阶导数会产生一个局部极大正值和一个局部极小负值,在图像上体现为双线性效应。1.2Canny边缘检测1986年由Joh原创 2022-02-13 22:59:08 · 1725 阅读 · 0 评论 -
(八)HS角点检测
1.基础理论在处理适用于多幅图像的特征描述子时,主要有两种特征检测方法,一种是基于角的检测,另一种是处理图像中的所有区域。这里主要讨论一下基于角的检测。1988年,Harris and Stephens 提出了一种角检测算法, HS角检测器,见论文A Combined Corner and Edge Detector。HS检测器原理如下,对于灰度变化有三种情况,1是各个方向上灰度均不变化, 2是在某个方向上变化, 但在另一个方向灰度不变,3是两个方向都发生变化。HS角检测器是使用数学公式来区分这三种情原创 2022-02-13 01:06:11 · 1806 阅读 · 0 评论 -
(七)图像处理中常用算子Laplacian\Sobel\Roberts\Prewitt\Kirsch
1.拉普拉斯(Laplacian)算子1.1基础介绍最简单的各向同性导数算子是拉普赖斯算子,其具有旋转不变性,对于两个变量的函数f(x,y)f(x,y)f(x,y),其定义为▽2f=∂2f∂x2+∂2f∂y2\triangledown^2f=\frac{\partial ^2f}{\partial x ^2} + \frac{\partial ^2f}{\partial y ^2}▽2f=∂x2∂2f+∂y2∂2f,以离散形式表示上述公式为:<br/>x方向有:$\frac{\par原创 2022-01-28 02:21:46 · 7063 阅读 · 0 评论 -
(六)基于霍夫变换的直线和圆检测
1.Hough Transformhttps://homepages.inf.ed.ac.uk/rbf/HIPR2/hough.htm霍夫变换于1962年由Paul Hough首次提出,后于1972年由Richard Duda和Peter Hart推广使用,经典霍夫变换用来检测图像中的直线,后来霍夫变换扩展到任意形状物体的识别,多为圆和椭圆。霍夫变换的原理是将直线y=kx+by=kx+by=kx+b上的点变换到极坐标系下r=xcosθ+ysinθr=xcos\theta+ysin\thetar=x原创 2022-01-23 22:20:53 · 2702 阅读 · 0 评论 -
(五)基于matchTemplate的图像区域匹配
见OpenCV tutorial_template_matching1.基础理论模板匹配是找到图像中与模板图像相匹配的区域。通常是矩形,有时候要匹配的对象不是矩形时,可借助掩码 mask实现。将template逐像素的在source image上滑动,分别计算每个位置(x,y)的匹配度R,R表示的值可通过多种基准来计算。常用基准模板的宽高为ω\omegaω, hhh,对于 TM_SQDIFF基准,模板匹配时找最小值,对于 TM_CCORR和 TM_CCOEFF是找其最大值。目前只有 T.原创 2022-01-21 21:50:57 · 3478 阅读 · 0 评论 -
(四)使用OpenCV实现图像彩色模型转换
(四)使用OpenCV实现图像彩色模型转换全文介绍部分引自《数字图像处理》第六章1.彩色基础彩色光在电磁波中的波长范围是400-700nm。人眼中的锥状体负责色觉的感知,实验发现,人眼中约有600万~700万个锥状体,它们分为3个主要的感知类别。这些类别分别是红色、绿色和蓝色。锥状体中约65%对红光敏感,33%对绿光敏感,只有约2%对蓝光敏感。人眼中看到的颜色正是红绿蓝三原色的不同比例的组合。为了标准化,1931年国际照明委员会(CIE)规定了三原色的波长,红光:700nm,绿光:546.1nm,原创 2021-11-21 18:16:39 · 2603 阅读 · 0 评论 -
(三) OpenCV仿射变换与透射变换(Affine and Perspective Transform)
图像最基本的变换即仿射变换(Affine Transform)和透射变换(Perspective Transform)。仿射变换是对一个向量空间进行一次线性变换并接上一次平移。透射变换是中心投影的射影变换。1.仿射变换仿射变换是线性变换与平移的组合。1.1原理描述首先,线性变换是什么?线性变换是满足以下两条性质的变换:1)直线在变换后仍然为直线,不能有所弯曲。2)原点必须保持固定。常见的线性有绕原点的旋转,以原点为中心的缩放,原点不变的错切/推移/剪切(shear)。平移(translation)是原创 2021-11-19 00:59:07 · 6537 阅读 · 0 评论 -
(二)OpenCV Mat常用属性和方法
Mat类是OpenCV中的基本数据类型,是读取图像数据的容器,其由存储矩阵维度数据类型等的矩阵头和存储数据的部分组成。本身实现了内存的自动分配和释放。1.定义OpenCV Mat类对象实例OpenCV的Mat类中定义了大于25种的构造函数,简单介绍几种常见的定义初始化Mat对象的方法。1)从图像读取cv::Mat img = cv::imread(argv[1]);2)使用数组初始化double data[3][3][3] = {{12.3, 3.2, 4.5}};cv::Mat mat_f原创 2021-11-15 22:36:07 · 3676 阅读 · 0 评论 -
(一)Linux下C++ OpenCV开发环境搭建
1.下载源码opencv官网2.编译路径切入源码目录执行命令:cmake -DOPENCV_GENERATE_PKGCONFIG=YES - DCMAKE_INSTALL_PREFIX=/home/lx/opencv/install ..makemake install注意:1).-DOPENCV_GENERATE_PKGCONFIG=YES选项是编译生成opencv4.pc这个文件用于pkg-config程序管理已安装库的头文件和库文件,编译结束opencv4.pc文件一般在open原创 2021-11-09 22:22:39 · 4753 阅读 · 1 评论