opencv学习
关切得大神
这个作者很懒,什么都没留下…
展开
-
opencv3.X不能使用SurfFeatureDetector问题
首先有一个比较合理的解释:因为含有surf特征提取算法再opencv2.0版本是放在nonfree头文件中的,换成3.0版本之后,对nonfree模块测试的还不够,所以暂时还没有直接给出像之前2.0版本那样方便的nonfree库,而是放在了xfeatures2d头文件和xfeatures2d库中。而xfeatures2d比nonfree多了实验性二维特征算法,而想在3.0版本使用surf的话,暂时需要自己对OpenCV进行编译。就是在编译之前,需要下载 opencv_contrib,然后再编译时将其mo原创 2020-07-20 10:17:52 · 3116 阅读 · 2 评论 -
OpenCv3编程学习十八
特征检测与匹配这个技术在物体检测,视觉跟踪和三维重建等领域都有应用。“FAST”—FastFeatureDetector“STAR”—StarFeatureDetector“SIFT”—SIFT(nonfree module)“SURF”—SURF(nonfree module)“ORB”—ORB“MSER”—MSER“GFTT”—GoodFeaturesToTrackDetector“HARRIS”—GoodFeaturesToTrackDetector(配合Harris detecto原创 2020-07-20 09:41:14 · 379 阅读 · 0 评论 -
OpenCv3编程学习十七
feature2d组件特征检测和描述:1.角点检测主要用在运动检测,图像匹配,视频跟踪,三维建模和目标识别等领域,也当做是特征点检测兴趣点和角点:兴趣点的意义在于:在观测图像时,可以不需要观察整幅图,而是选择一些特殊的点来观察并且有的放矢的分析。有三种特征类型:1.边缘2.角点(相当于感兴趣关键点)3.斑点(感兴趣区域)角点的最佳定义就是:当一个点在任意方向的一个微小变动都会引起灰度很大的变化,这个点就是角点。有一些具体描述:1.一阶导数(灰度的梯度)的局部最大所对应的像素点2原创 2020-07-16 09:34:39 · 128 阅读 · 0 评论 -
OpenCv3编程学习十六
今天继续OpenCv的学习反向投影如果图像的区域显示的是一种结果纹理或者是独特的物体,那么这个区域直方图可以看做是一个概率函数。主要就是记录给定图像中的像素点如何适应直方图模型像素分布方式的一种方法。具体做法就是,先计算某一特征的直方图模型,再使用模型去寻找图像中存在的该特征的方法。检测步骤如下:1.对测试图形中的每一个像素,都进行获取色调数据并且找到该色调在直方图中bin的位置2.查询模型直方图中对应bin的数值3.再将次数据存储在新的反射投影图像中,或者先归一化直方图数值到0-255范围原创 2020-07-15 14:46:16 · 118 阅读 · 0 评论 -
OpenCv3编程学习十五
直方图与匹配直方图主要是用以根据帧与帧之间边缘和颜色的变换进行统计。统计主要是从数据中计算出的特征统计量,也就是一个数据分布的统计图。它一般是二维的,分别是统计样本和该样本对应的某个属性的度量。一般横坐标的左侧为纯黑,较暗的区域,而右侧为较亮,纯白的区域。所以可以通过直方图来显示图像的二值化。意义所在:1.直方图是图像中像素强度分布的图像表达方式2.它统计了每一个强度值所具有的像素个数具体操作方法就是,将一个图里包含的像素范围,分割陈一个个子区域。横坐标是像素的值,纵坐标是对应值里面的像素个原创 2020-07-14 18:46:20 · 302 阅读 · 0 评论 -
OpenCv3编程学习十四
分水岭算法这个算法将图像中的边缘转化为“山脉”,将均匀区域转化为“山谷”,这样的话,就可以比较容易区分开目标。基本思想就是将图像中的每一点像素的灰度值都当做是该点的海拔高度,并且将局部极小值和它的影响区当做集水盆,而集水盆的边界就是分水岭。这个的计算过程就是一个迭代标注过程,一般有两个步骤:1.排序过程 2.淹没过程。 先对像素的灰度级进行从低到高的排序,再从低到高实现淹没。在实际上,分水岭就是表示输入图像的极大值。...原创 2020-07-13 20:44:08 · 193 阅读 · 0 评论 -
OpenCv3编程学习十三
图像轮廓和图像分割修复1.查找并绘制轮廓findContours()函数:第一个参数是输入图像,第二个参数是point类型的输出轮廓和函数调用后的运算结果,每个轮廓存一个点向量。第三个参数是可选的输出向量。第四个和第五个参数分别是Int类型的轮廓检索模式和轮廓的近似办法。这个函数是和drawContours配合使用的,一个是检测出来,一个是描绘出来。drawContours()函数:参数就是输入图像,用来存输入图像的点向量和轮廓绘制的指示变量,并在这个变量中,如果是负数就是绘制所有轮廓,再是轮廓原创 2020-07-12 09:35:10 · 129 阅读 · 0 评论 -
OpenCV3:通道和位深的理解含义整理(CV_8UC1,CV_8SC1,CV_32FC1)(转载)
矩阵数据类型:– CV_<bit_depth>(S|U|F)C<number_of_channels>S = 符号整型 U = 无符号整型 F = 浮点型CV_8UC1 是指一个8位无符号整型单通道矩阵,CV_32FC2是指一个32位浮点型双通道矩阵CV_8UC1 CV_8SC1 CV_16U C1 CV_16SC1CV_8UC2 CV_8SC2 CV_16UC2 CV_16SC2CV_8UC3 CV_8SC3 CV_16UC3 CV_16SC3CV_8UC4 CV_转载 2020-07-10 15:02:43 · 426 阅读 · 0 评论 -
OpenCv3编程学习十二
直方图均衡化这就是通过拉伸像素强度分布范围来增强图像对比度的一种方法。但是均衡化处理后的图像只能是近似均匀分布,均衡化图像的动态范围扩大了。本质就是扩大量化间隔同时减少了量化级别,所以一些灰度不同的像素可能会变的相同,最重要的是,均衡化后的图片如果再对其均衡化,则图片不会有任何变化equalizeHist()函数,参数就是输入输出函数。具体步骤如下:计算输入图像的直方图H,进行直方图归一化,直方图的组距的和为255计算直方图的积分用H 作为查询表进行图像变换#include<o原创 2020-07-10 11:40:46 · 101 阅读 · 0 评论 -
OpenCv3编程学习十一
1.仿射变换又称仿射映射,意思就是在几何空间中,一个向量空间进行一次线性变换并接上一个平移,变换为另一个向量空间的过程。它保持了二维图像的“平直性”和“平行性”仿射变换可以当做是乘以一个矩阵,也就是线性变换,再加上一个向量(平移)的形式。通常有三种变换方式:1.旋转2.平移3.缩放warpAffine()函数:输入输出图像,2X3的变换矩阵,输出图像的尺寸和一些插值方法,比如线性插值,最近邻插值等还有两个带有默认数值的参数。getRotationMatrix2D()函数:计算二维旋转变换矩原创 2020-07-10 00:44:11 · 129 阅读 · 0 评论 -
OpenCV中system(“color XX“)的含义
再写OpenCV代码的时候,经常会遇到写system(“color XX”)的代码,他代表什么意思的经过资料的查询,发现了其中:0 = 黑色 8 = 灰色1 = 蓝色 9 = 淡蓝色2 = 绿色 A = 淡绿色3 = 湖蓝色 B = 淡浅绿色4 = 红色 C = 淡红色5 = 紫色 D = 淡紫色6 = 黄色 E = 淡黄色7 = 白色 F = 亮白色和0 = black 8 = gray1原创 2020-07-08 12:32:06 · 1400 阅读 · 0 评论 -
OpenCV常见错误及解决办法 C++与Python(转载)
这个文章真是一个好东西,基本上大部分错误这里都能搞定https://blog.csdn.net/yl_best/article/details/90172751转载 2020-07-08 11:02:29 · 855 阅读 · 0 评论 -
OpenCv3编程学习十
图像变换1.基于OpenCV的边缘检测canny算子,soble算子,laplacian算子,Scharr滤波器。边缘检测的步骤:1.滤波:用滤波器来改善和噪音有关的性能2.增强:这个的作用是确定图像个点领域强度的变化值。3.检测:也就是将增强之后的点进行筛选。2.canny算子目标是找到一个最优的边缘检测算法,有以下三个评价标砖...原创 2020-07-08 10:59:17 · 305 阅读 · 0 评论 -
OpenCv3编程学习九
1.漫水填充作用就是用一种特定的颜色填充通道区域,经常用来标记或者分离图像的一部分。也就是自动选中了和种子点相连的区域,再将该区域替换成指定的颜色。floodFile函数():原创 2020-07-04 13:32:04 · 160 阅读 · 0 评论 -
OpenCv3编程学习八
本章开始进行对imgpro的学习也就是各种各样对图像的处理1.平滑处理:也就是模糊处理,用途主要体现在减少图像上的噪点和失真,也就是减低图像的分辨率。2.图像滤波和滤波器:滤波的意思就是在保留图像细节的条件下,对图像的噪音进行处理的操作。滤波的目的:1.抽出对象的特征作为图像识别的特征模式,2.消除图像数字化所产生的噪音。滤波器就相当于是一个包含加权系数的窗口,当使用滤波器处理图像时,也就是把这个窗口放在图像之上,我们透过这个窗口来看到图像。常见的分别有五种滤波方式:1.方框滤波2.均值原创 2020-07-03 13:10:33 · 143 阅读 · 0 评论 -
OpenCv3编程学习七
了解两种输入类型:XML和YAML文件xml:是可扩展标识语言,而YAM相对来说更加优化了xml的优点。首先采用FileStorage类来进行xml写入或者读取数据。1.实例化一个FileStorage类的对象2.使用流操作符3.使用一个释放函数来构掉类第一步是XML和YAML文件的打开:1.调用构造函数准备文件读操作2.调用函数准备文件写操作第二步是进行文件读写操作1.文本和数字的输入输出:写入文件可以用“<<” 读取文件可以用“>>”第三步是vector和原创 2020-07-02 10:47:06 · 159 阅读 · 0 评论 -
问题error C4996: ‘asctime‘: This function or variable may be unsafe. Consider using asctime_s instead
具体解决过程参见:https://blog.csdn.net/idmer/article/details/48139057转载 2020-07-02 10:08:37 · 304 阅读 · 0 评论 -
OpenCv3编程学习六
离散傅里叶变化dft()函数,就是对一维或者二维数组进行正向或反向离散傅里叶变化,第一个和第二个参数分别是输入和输出,第三个参数是转换类型,第四个参数是选择图像的行数。getOptimalDFTSize()函数是返回DFT的最优尺寸大小,只有一个代表向量尺寸的参数。copyMakerBorder()函数的作用是扩充图像边界,首先两个参数是输入和输出的图像,然后四个参数是表示四个方向扩展出来的像素边界。magnitude()函数,是用来计算二维矢量的幅值,前面两个参数是矢量的实部和虚部,第三个参数是输原创 2020-07-01 17:11:46 · 175 阅读 · 0 评论 -
OpenCv3编程学习五
初探core组件1.对于Mat结构的理解显式创建Mat对象的七种方法1.用Mat构造函数()2.使用c/c++通过构造函数初始化3.用已存在的lplImage指针创建信息头4.用create()函数创建5.使用MATLAB形式的初始化方式6.对小矩阵使用逗号分隔式初始化函数7.为已存在的对象创建新的信息头这些的代码都是比较简单的。但是需要注意的是:1.endl后面那个是l不是1(c++没写过。。)2.对于stdafx.h是预编译的头文件,所以不需要再写,以免报错。一些代码如下://*原创 2020-06-28 15:12:44 · 183 阅读 · 0 评论 -
OpenCv3编程学习四
前半部分的内容:1.安装cmake和生成opencv源代码 配置过程参考了这个:https://blog.csdn.net/rannar/article/details/867606822.还知道了opencv.hpp已经包含了opencv各个模块的头文件。3.还知道了opencv对应的命名规范4.以及argc与argv的差别:5.imread函数,有两个参数:第一个参数是filename,可以有很多种图片类型,第二个参数是int类型的flag也就是指定加载图像的颜色类型,0代表是灰色,1代表是原创 2020-06-24 14:55:40 · 221 阅读 · 0 评论 -
OpenCv3编程学习三
1.首先知道了源码的存放位置:xx位置/opencv/sources/samples/cpp2.修改对应的彩色目标追踪,把对应的cpp文件放入到一个新建的项目中,开始运行。代码如下:#include <opencv2/core/utility.hpp>#include "opencv2/video/tracking.hpp"#include "opencv2/imgproc.hpp"#include "opencv2/videoio.hpp"#include "opencv2/h原创 2020-06-21 17:59:05 · 183 阅读 · 0 评论 -
OpenCv3编程学习二
openCV视频制作基础1.先随便在网上找个视频下载下来之后,放到对应的文件夹内部,然后开始调用代码读取每一帧原创 2020-06-20 21:55:38 · 149 阅读 · 0 评论 -
OpenCv3编程学习一
1.opencv的安装与配置之前学习的时候有装过opencv,版本是3.4.而对应的visual studio是2017版本。所以直接开始创建了控制台项目,命名为2020.620.放在了D盘的vs_opencvDemo配置是vc15原创 2020-06-20 16:24:05 · 172 阅读 · 0 评论