参考:
1、https://docs.opencv.org/3.2.0/
2、https://github.com/opencv/opencv/
OpenCV Tutorials
OpenCV简介
在Linux中安装
OpenCV结合gcc和CMake
使用OpenCV和Eclipse(插件CDT)
Windows安装
如何在“Microsoft Visual Studio”中使用OpenCV构建应用程序
Image Watch:在Visual Studio调试器中查看内存中的图像
Java开发简介
在Eclipse中使用OpenCV Java
Clojure开发OpenCV简介
Android开发入门
OpenCV4Android SDK
Android开发OpenCV
在基于CV应用程序的Android相机预览中使用OpenCL
在iOS中安装
基于ARM的Linux系统的交叉编译
用CUDA构建Tegra OpenCV
加载并显示图像
- 加载一个图像(使用cv :: imread)
- 创建一个命名的OpenCV窗口(使用cv :: namedWindow)
- 在OpenCV窗口中显示图像(使用cv :: imshow)
加载,修改和保存图像
- 使用cv :: imread加载图像
- 使用cv :: cvtColor将图像从BGR转换为灰度格式
- 将转换后的图像保存在磁盘上的文件中(使用cv :: imwrite)
与biicode依赖管理器一起使用OpenCV
编写OpenCV的文档
版本转换指南
核心功能(核心模块)
Mat - 基本的图像容器
如何使用OpenCV扫描图像,查找表和时间测量
- 如何通过图像的每个像素?
- OpenCV矩阵值如何存储?
- 如何衡量我们算法的性能?
- 什么是查找表,为什么使用它们?
在矩阵上进行掩码操作
图像操作
使用OpenCV添加(混合)两个图像
- 什么是线性混合以及为什么它是有用的;
- 如何使用cv :: addWeighted添加两个图像
改变图像的对比度和亮度!
- 访问像素值
- 用零初始化一个矩阵
- 了解cv :: saturate_cast做什么以及为什么它有用
- 获取有关像素变换的一些很酷的信息
基本绘图
- 使用cv :: Point在图像中定义2D点。
- 使用cv :: Scalar和它为什么有用
- 使用OpenCV函数cv :: line绘制一条线
- 使用OpenCV函数cv :: ellipse绘制一个椭圆
- 使用OpenCV函数cv :: rectangle绘制一个矩形
- 使用OpenCV函数cv :: circle绘制一个圆
- 使用OpenCV函数cv :: fillPoly绘制一个填充的多边形
OpenCV随机生成器和文本
- 使用随机数生成器类(cv :: RNG)以及如何从统一分布中获得一个随机数。
- 通过使用函数cv :: putText在OpenCV窗口上显示文本
离散傅立叶变换
- 什么是傅立叶变换,为什么使用它?
- 如何在OpenCV中做到这一点?
- cv :: copyMakeBorder(),cv :: merge(),cv :: dft(),cv ::
getOptimalDFTSize(),cv :: log()和cv :: normalize()函数的使用。
文件输入和输出使用XML和YAML文件
- 如何使用YAML或XML文件打印和读取文本和OpenCV文件?
- 如何为OpenCV数据结构做同样的事情?
- 如何为你的数据结构做到这一点?
- 使用OpenCV数据结构,如cv :: FileStorage,cv :: FileNode或cv ::
FileNodeIterator。
与OpenCV的互操作性1
- 与使用库的方式相比,OpenCV的版本2与第一版相比有什么变化
- 如何将一些高斯噪声添加到图像
- 什么是查找表,为什么使用它们?
OpenCV中的英特尔®IPP异步C / C ++库
图像处理(imgproc模块)
图像平滑
- cv::blur
- cv::GaussianBlur
- cv::medianBlur
- cv::bilateralFilter
腐蚀与膨胀
应用两个非常常见的形态学算子:膨胀和侵蚀。 为此,您将使用以下OpenCV函数:
更多的形态转换
使用OpenCV函数cv :: morphologyEx来应用形态转换,如:
- Opening
- Closing
- Morphological Gradient
- Top Hat
- Black Hat
通过形态操作提取水平线和垂直线
应用两个非常常见的形态算子(即膨胀和侵蚀),创建自定义内核,以便在水平和垂直轴上提取直线。 为此,您将使用以下OpenCV函数:
- cv::erode
- cv::dilate
- cv::getStructuringElement
图像金字塔
使用OpenCV函数cv :: pyrUp和cv :: pyrDown下采样或上采样给定的图像。
基本阈值操作
使用OpenCV函数cv :: threshold执行基本的阈值操作
阈值操作使用inRange
- 使用OpenCV函数cv :: inRange执行基本的阈值操作
- 根据像素值的范围检测对象
制作你自己的线性过滤器!
使用OpenCV函数cv :: filter2D创建您自己的线性过滤器。
图像添加边框
使用OpenCV函数cv :: copyMakeBorder来设置边框(额外的填充图像)。
Sobel导数
- 使用OpenCV函数cv :: Sobel来计算图像的导数。
- 使用OpenCV函数cv :: Scharr来为大小为3⋅3的内核计算更精确的导数
拉普拉斯算子
使用OpenCV函数cv :: Laplacian来实现拉普拉斯算子的离散模拟。
Canny边缘检测
使用OpenCV函数cv :: Canny来实现Canny边缘检测器。
霍夫曲线变换
使用OpenCV函数cv :: HoughLines和cv :: HoughLinesP来检测图像中的线。
霍夫圆变换
使用OpenCV函数cv :: HoughCircles来检测图像中的圆圈。
重新映射
使用OpenCV函数cv :: remap来实现简单的重新映射例程。
仿射变换
- 使用OpenCV函数cv :: warpAffine实现简单的重新映射例程。
- 使用OpenCV函数cv :: getRotationMatrix2D来获得一个2×3的旋转矩阵
直方图均衡化
- 什么是图像直方图,为什么它是有用的
- 通过使用OpenCV函数cv :: equalizeHist来均衡图像的直方图
直方图计算
- 使用OpenCV函数cv :: split将图像分成对应的平面。
- 通过使用OpenCV函数cv :: calcHist来计算图像数组的直方图
- 通过使用函数cv :: normalize来规范一个数组
直方图对比
- 使用函数cv :: compareHist得到一个数字参数,表示两个直方图相互匹配的程度。
- 使用不同的指标来比较直方图
反投影
- 什么是反投影以及为什么它是有用的
- 如何使用OpenCV函数cv :: calcBackProject来计算反投影
- 如何通过使用OpenCV函数cv :: mixChannels来混合不同的图像通道
模板匹配
- 使用OpenCV函数cv :: matchTemplate来搜索图像补丁和输入图像之间的匹配
- 使用OpenCV函数cv :: minMaxLoc来查找给定数组中的最大值和最小值(以及它们的位置)。
在图像中找到轮廓
- 使用OpenCV函数cv :: findContours
- 使用OpenCV函数cv :: drawContours
Convex Hull
使用OpenCV函数cv :: convexHull
为轮廓创建边界框和圆
使用OpenCV函数cv :: boundingRect
使用OpenCV函数cv :: minEnclosingCircle
创建边界轮廓的旋转框和椭圆
使用OpenCV函数cv :: minAreaRect
使用OpenCV函数cv :: fitEllipse
图片 Moments
使用OpenCV函数cv :: moments
使用OpenCV函数cv :: contourArea
使用OpenCV函数cv :: arcLength
点多边形测试
Use the OpenCV function cv::pointPolygonTest
基于距离变换和分水岭算法的图像分割
- 使用OpenCV函数cv :: filter2D为了执行一些laplacian过滤图像锐化
- 使用OpenCV函数cv :: distanceTransform为了获得二进制图像的派生表示,其中每个像素的值被其距离最近的背景像素
- 使用OpenCV函数cv :: watershed来隔离图像中的对象与背景
高级图形用户界面和媒体(highgui模块)
添加一个跟踪栏到我们的应用程序!
使用cv :: createTrackbar在OpenCV窗口中添加一个跟踪栏
图像输入和输出(imgcodecs模块)
用GDAL读取地理空间光栅文件
- 如何使用OpenCV imread加载卫星图像。
- 如何使用OpenCV imread来加载SRTM数字高程模型
- 给定图像和DEM的角点坐标,将高程数据与图像相关以找出每个像素的高程。
- 显示一个基本的,易于实现的地形热图的例子。
- 显示与正射影像相结合的DEM数据的基本用法。
视频输入和输出(视频模块)
视频输入与OpenCV和相似度测量
- 如何打开和阅读视频流
- 两种检查图像相似性的方法:PSNR和SSIM
使用OpenCV创建视频
- 如何使用OpenCV创建视频文件
- 什么类型的视频文件可以用OpenCV创建
- 如何从视频中提取给定的颜色通道
使用Kinect和其他OpenNI兼容的深度传感器
使用Creative Senz3D和其他Intel Perceptual Computing SDK兼容的深度传感器
摄像机标定和三维重建(calib3d模块)
方形棋盘的摄像机校准
- 通过在cmake配置中将BUILD_EXAMPLES设置为ON来编译opencv样本。
- 转到bin文件夹并使用imagelist_creator来创建图像的XML / YAML列表。
- 然后,运行校准样本来获取相机参数。 使用方形尺寸等于3厘米。
摄像机校准使用OpenCV
实时姿态估计纹理对象
- 读取3D纹理对象模型和对象网格。
- 从相机或视频输入。
- 从场景中提取ORB特征和描述符。
- 使用Flann匹配器匹配场景描述符和模型描述符。
- 使用PnP + Ransac进行姿态估计。
- 线性卡尔曼滤波器的不良姿态抑制。
交互式摄像机校准应用
2D功能框架(feature2d模块)
Harris角点探测
- 什么特征和为什么他们是重要的
- 使用函数cv :: cornerHarris使用Harris-Stephens方法检测拐角。
Shi-Tomasi角点探测
使用函数cv :: goodFeaturesToTrack使用Shi-Tomasi方法检测拐角。
创建你自己的角点探测器
- 使用OpenCV函数cv :: cornerEigenValsAndVecs来查找特征值和特征向量,以确定像素是否是拐角。
- 使用OpenCV函数cv :: cornerMinEigenVal来查找拐角检测的最小特征值。
- 通过使用上面的两个函数来实现我们自己的Harris探测器以及Shi-Tomasi探测器。
检测子像素中的角点位置
使用OpenCV函数cv :: cornerSubPix来查找更精确的角位置(比整数像素更精确)。
特征检测
- 使用cv :: FeatureDetector接口为了找到兴趣点。 特别:
- 使用cv :: xfeatures2d :: SURF及其函数cv :: xfeatures2d :: SURF ::detect执行检测过程
- 使用函数cv :: drawKeypoints绘制检测到的关键点
特征描述
- 使用cv :: DescriptorExtractor接口来查找与关键点相对应的特征矢量。 特别:
- 使用cv :: xfeatures2d :: SURF及其函数cv :: xfeatures2d :: SURF ::compute来执行所需的计算。
- 使用cv :: BFMatcher来匹配特征向量
- 使用函数cv :: drawMatches绘制检测到的匹配。
FLANN特征匹配
使用cv :: FlannBasedMatcher接口,通过使用多维空间中的聚类和搜索模块来执行快速高效的匹配
Features2D + Homography找到一个已知的对象
- 使用函数cv :: findHomography来查找匹配关键点之间的转换。
- 使用函数cv :: perspectiveTransform来映射点。
检测平面物体
本教程的目标是学习如何使用feature2d和calib3d模块来检测场景中已知的平面物体。
AKAZE本地特征匹配
AKAZE和ORB平面跟踪
视频分析(视频模块)
如何使用背景减法
对象检测(对象模块)
Cascade分类器
- 使用cv :: CascadeClassifier类来检测视频流中的对象。 特别是,我们将使用以下功能:
- cv :: CascadeClassifier :: load加载一个.xml分类器文件。 它可以是Haar 或LBP分类器
- cv :: CascadeClassifier :: detectMultiScale执行检测。
Cascade分类器训练
机器学习(ml模块)
支持向量机简介
使用OpenCV函数cv :: ml :: SVM :: train来构建基于SVM和cv :: ml :: SVM :: predict的分类器,以测试其性能。
用于非线性可分离数据的支持向量机
- 当无法线性分离训练数据时,定义SVM的优化问题。
- 如何配置参数以适应您的SVM的这类问题。
主成分分析(PCA)简介
使用OpenCV类cv :: PCA来计算对象的方向。
计算摄影(照片模块)
高动态范围成像
图像拼接(拼接模块)
高级拼接API(拼接类)
- 使用由高级拼接API提供的拼接
- 了解如何使用预先配置的拼接器配置来使用不同的相机型号拼接图像。
GPU加速计算机视觉(cuda模块)
GPU上的相似性检查(PSNR和SSIM)
OpenCV iOS
OpenCV iOS Hello
- 将OpenCV框架与Xcode链接起来
- 如何使用OpenCV和Xcode编写简单的Hello World应用程序。
OpenCV iOS - 图像处理
OpenCV iOS - 视频处理
OpenCV Viz
启动Viz
- 打开一个可视化窗口。
- 按名称访问窗口。
- 启动事件循环。
- 启动事件循环一段给定的时间。
构成的一个小部件
- 将小部件添加到可视化窗口
- 使用Affine3设置小部件的姿势
- 沿一个轴旋转和翻转一个小部件
转换
- 如何使用makeTransformToGlobal来计算姿势
- 如何使用makeCameraPose和Viz3d :: setViewerPose
- 如何通过坐标轴和视锥观察摄像头的位置
创建小部件
- 使用WidgetAccessor和VTK创建您自己的小部件。
- 在可视化窗口中显示您的小部件。