OpenCV 学习
文章平均质量分 69
du_zhaohui
越努力,越幸运。
展开
-
OpenCV学习之路(一) Visual Studio 配置OpenCV开发环境
参考博文 1. 新建空项目或控制台应用程序之后,在属性管理器中进行一次配置,就相当于进行了通用的配置,之后新建的工程就不用再进行额外的配置了。(视图 --> 属性窗口)2. 在新出现的 属性管理器 工作区中,进行配置。VC++目录 --> 包含目录和库目录配置链接器 --> 输入 --> 附加依赖项设置 QT 5.9.2安装并集成到VS2...原创 2018-07-20 12:29:20 · 1069 阅读 · 0 评论 -
OpenCV学习之路(十) 离散傅里叶变换
离散傅里叶变换(Discrete Fourier Transform,缩写为 DFT),是指傅里叶变换在时域和频域上都呈现离散的形式,将时域信号的采样变换为在离散时间傅里叶变换(DTFT)频域的采样。在形式上,变换两端(时域和频域上)的序列是有限长的,而实际上这两组序列都应当被认为是离散周期信号的主值序列。即使对有限长的离散信号做 DFT ,也应当对其经过周期延长成为周期信号再进行变换。在实际应用...原创 2018-09-01 18:04:05 · 499 阅读 · 0 评论 -
OpenCV学习之路(二十) 图片的输入和输出
官方文档原创 2018-09-07 22:52:19 · 291 阅读 · 0 评论 -
OpenCV学习之路(二十一) 视频的输入和输出
官方文档 简单代码示例:#include<opencv2/opencv.hpp>#include<iostream>using namespace cv;using namespace std;double getPSNR(const Mat& video1, const Mat& video2);int main(){ /...原创 2018-09-07 22:53:58 · 1952 阅读 · 0 评论 -
OpenCV学习之路(二十二)相机校准和三维重建
官方文档相机模型与标定相机畸变校正原创 2018-09-07 22:56:47 · 1117 阅读 · 0 评论 -
OpenCV学习之路(十一) 图像滤波
目录方框滤波均值滤波高斯滤波中值滤波双边滤波 官方文档高斯函数的详细分析 采用不同的滤波方式来对图像进行降噪、增强细节等处理。不通滤波方式核心是采取的滤波器不同。线性滤波器有 方框滤波、均值滤波、高斯滤波等。非线性滤波有 中值滤波、双边滤波等。滤波操作也可以在图像的 频域 进行,利用 离散傅里叶变换。几种常见的线性滤波器(频率即指灰度值的变化...原创 2018-09-02 12:32:44 · 425 阅读 · 0 评论 -
OpenCV学习之路(十二) 形态学操作
目录腐蚀与膨胀更多的形态学操作腐蚀与膨胀更多形态学操作 腐蚀与膨胀形态学操作就是基于形状的一系列图像处理操作。最基本的形态学操作就是腐蚀( erode )和膨胀( dilate )。其主要功能如下:消除噪声;分割出独立的图像元素,在图像中连接相邻的元素;寻找图像中明显的极大值区域或极小值区域;求出图像的梯度。1. 膨胀函数: dilate(...原创 2018-09-02 16:42:34 · 651 阅读 · 0 评论 -
OpenCV学习之路(二十三) 角点检测
官方文档 Harris 角点检测官方文档 Shi-Tomasi 角点检测参考博文 角点检测 角点位于两条边缘的交汇处,代表了两个边缘变化的方向上的点,其不同方向的灰度值变化比较大,因此比较容易检测。角点检测方法的一个很重要的评价标准是其对多幅图像中相同或相似特征的检测能力,并且能够应对光照变化、图像旋转等变化。Harris 角点Harris角点检测是一种直接基于灰度图像...原创 2018-09-08 16:37:41 · 540 阅读 · 0 评论 -
OpenCV学习之路(二十四) 特征检测
官方文档参考博文 图像局部特征点检测算法综述SIFT 特征点提取图像特征点提取特征点检测需要用到 OpenCV扩展包。 SURF 算子OpenCV 中关于 SURF 算法的部分,常常涉及到的是 SURF、SurfFeatureDetector、SurfDescriptorExtractor 这三个类。typedef SURF SurfFeatureDetector...原创 2018-09-08 16:55:23 · 681 阅读 · 0 评论 -
OpenCV学习之路(十二) 图像金字塔与图像尺寸缩放
官方文档 OpenCV 中对图片的尺寸进行放大和缩小操作一般通过下面两种方式:resize() 函数。pyrUp()、pyrDown() 函数。通过图像金字塔进行向上采样和向下采样对图片尺寸进行改变。图像金字塔是图像中多尺度表达的一种,主要用于图像的分割,是一种以多分辨率来解释图像的有效但概念简单的结构。一幅图像的金字塔式一系列以金字塔形状来排列的,多分辨率逐步降低且来源...原创 2018-09-03 10:09:41 · 1921 阅读 · 0 评论 -
OpenCV学习之路(十三) 图像阈值化
官方文档 阈值可以被视为最简单的图像分割方法。比如从一幅图像中分割出我们所需要的物体部分(可以是一部分或整体)。该方法基于图像中物体与背景之间的灰度值差异,且此分割属于像素级的分割,用图像中的每一个像素点的灰度值和我们给定的阈值进行比较,并给出相应的判断(指定分割出物体的灰度值,如黑色或白色)。阈值的选取决于具体的问题。OpenCV 2.X 中,使用 Threshold() 函数...原创 2018-09-03 14:35:22 · 2020 阅读 · 0 评论 -
OpenCV学习之路(十四) 图像的边缘检测
目录Canny 算子Sobel 算子Laplacian 算子scharr 滤波器简单示例代码: Sobel 边缘检测Laplace 边缘检测Canny 边缘 图像边缘两侧的像素点灰度值发生明显的变化。因此可以通过图像灰度值的一阶导数或二阶导数来进行图像边缘的检测。 Canny 算子Canny 边缘检测算法被普遍认为是最优的边缘检测算法。其旨在...原创 2018-09-03 16:46:00 · 657 阅读 · 0 评论 -
OpenCV学习之路(九) 图像对比度、亮度
官方文档 通常图像操作有两种:点操作邻域操作对比度、亮度调整就是典型的点操作。简单操作实例如下:#include<opencv2/opencv.hpp>using namespace cv;void on_BrightnessAndContrast(int, void*);int g_nContrast, g_nBrightness;int ...原创 2018-09-01 16:58:49 · 413 阅读 · 0 评论 -
OpenCV学习之路(八) 分离颜色通道、多通道图像混合
如何通俗地解释色彩三要素:色相、明度、纯度? 通道分离1. split() 函数。用于将一个多通道数组分离成几个单通道数组。原型如下:void split(const Mat& src, Mat* mvbegin);void split(InputArray m, OutputArrayOfArrays mv);(1)第一个参数,InputArray 类型或 M...原创 2018-09-01 11:15:58 · 858 阅读 · 0 评论 -
OpenCV学习之路(七) 遍历图像中的像素
官方文档若矩阵元素存储的是单通道像素,使用 C 或 C++ 无符号字符类型(uchar),那么像素可有 256 个不同的取值(0 ~255)。若图像采用三通道存储,颜色可有一千六百多万中取值(0 ~ -1),如此之多的颜色可能会对我们的算法性能造成影响。我们可以使用其中具有代表性的一部分来达到与原来近似的效果,即颜色空间缩减,做法是:将颜色值 0~9 映射为 0,10~19映射为10,等等。这...原创 2018-09-01 10:46:27 · 2484 阅读 · 0 评论 -
OpenCV学习之路 (二) main函数中agrc、argv 参数的含义
目录 main() 函数中各参数的含义VS 中 main 函数的几种写法main() 函数中各参数的含义argc 和 argv 这两个参数一般在用命令行编译程序时有用,也可以通过某些编辑器来设定对应的参数值(例如VS)。 其实 main(int argc,char *argv[],char **env)才是 UNIX 和 LINUX 中的标准写法。其中,第一个参数 int ...原创 2018-08-30 16:45:13 · 2377 阅读 · 0 评论 -
OpenCV学习之路(四) OpenCV 中的几种数据结构
官方文档OpenCV数组或矩阵的操作函数通常我们在屏幕上看到的图像在转化到数字设备中时,记录的往往是图像中的每个点的数值(像素),即以像素点矩阵的形式进行存储。OpenCV 作为一个计算机视觉库,其主要的工作是处理和操作并进一步了解这些形式和信息,因此理解 OpenCV 是如何存储和处理图像是非常有必要的。Mat 结构的使用对于 OpenCV1.X 时代的基于 C 语言接口而建的图...原创 2018-08-30 18:33:45 · 998 阅读 · 0 评论 -
OpenCV学习之路(三) OpenCV快速上手之简单的图像处理及视频操作
目录 1.图像显示2.图像腐蚀3.图像模糊4.canny边缘检测5.读取并播放视频 1.图像显示新版本的OpenCV中,图像现实过程非常简单,只需用 imread 函数载入到新版本的图像存储数据结构 Mat 类中,然后使用 imshow 函数显示即可。本文使用的是VS2017编辑器,OpenCV3.4,新建控制台应用程序后,新建一个.cpp文件,添加如下代码:...原创 2018-08-30 16:45:36 · 2616 阅读 · 2 评论 -
OpenCV学习之路(五) 图像的载入、显示和输出
目录 图像的载入与显示输出图像到文件综合实例代码滑动条的创建和使用鼠标操作图像的载入与显示imread() 函数和 imshow() 函数完成了最简单的图像载入和显示。1. imread() 函数。原型如下:Mat imread(const string& filename, int flags = 1);(1)第一个参数,const stri...原创 2018-08-31 21:21:27 · 7346 阅读 · 1 评论 -
OpenCV学习之路(六) 基本图形的绘制
官方文档 作图相关的函数有 circle、clipLine、ellipse、ellipse2Poly、line、rectangle、polylines、类LineIterator。原创 2018-09-01 08:14:58 · 636 阅读 · 0 评论 -
OpenCV学习之路(十六) 重映射与仿射
目录重映射仿射变换简单示例代码:重映射仿射变换 重映射重映射就是把一个图像中某位置的像素放置到另一个图片指定位置过程。为了完成重映射过程有必要获得一些插值作为非整数像素坐标,因为原图像与目标图像的像素坐标不是一一对应的。我们通过重映射来表达每个像素的位置(x, y): ...原创 2018-09-04 08:07:12 · 753 阅读 · 0 评论 -
OpenCV学习之路(十七) 直方图
直方图均衡化直方图计算直方图对比反向投影原创 2018-09-04 08:09:34 · 206 阅读 · 0 评论 -
OpenCV学习之路(十八) 图像的轮廓
目录查找并绘制轮廓:查找并绘制物体的凸包使用多边形将轮廓包围图像的矩 查找并绘制轮廓查找并绘制凸包轮廓外接矩形和最小外接圆轮廓最小外接矩形和外接椭圆图像的矩 查找并绘制轮廓:1. findContours() 函数。查找轮廓。函数原型如下:void findContours(InputOutputArray image, Output...原创 2018-09-04 08:22:53 · 1710 阅读 · 0 评论 -
OpenCV学习之路(十九) 漫水填充算法和分水岭算法
分水岭算法原创 2018-09-04 09:15:48 · 1982 阅读 · 0 评论 -
OpenCV学习之路(十五) 霍夫变换
目录霍夫线变换霍夫圆变换简单示例代码: 霍夫线变换霍夫圆变换 霍夫变换是图像处理中从图像中识别几何形状的基本方法之一,应用很广泛,也有很多改进算法。主要用来从图像中分离出具有某种相同特征的几何形状。最基本的霍夫变换是从黑白图像中检测直线。在图像处理中可以通过霍夫变换可以快速的检测出直线或圆。霍夫线变换OpenCV 提供三种不同的霍夫线变换分别是:标准霍...原创 2018-09-03 20:24:51 · 703 阅读 · 0 评论