Playing with OpenCV

Posted J-A

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Playing with OpenCV相关的知识,希望对你有一定的参考价值。

一、从双目立体视差图中重建三维点云



1.【视差与深度信息

2.【用VS+Opencv3.1从双目立体视差图中重建三维点云


二、斑点检测

Opencv中提供了SimpleBlobDetector的特征点检测方法。



Reference:

1.【 Opencv中SimpleBlobDetector的使用(斑点检测)

2.【Opencv2.4.9源码分析——SimpleBlobDetector


三、寻找图像中最亮的点

逐行遍历,计算像素值最大的点。


四、用OpenCV实现Photoshop算法

1.图像旋转

  • warpAffine
  • getRotationMatrix2D

2.图像剪切

  • MouseCallBack
  • rect

3.图像匹配

  • matchTemplate
  • minMaxLoc

4.抠图

  • imgmask
  • floodFill

5.亮度对比度调整

  • adjustBrightnessContrast

6.毛玻璃效果



7.图像修复



8.图像取反



9.图像马赛克



Reference:

1.【用OpenCV实现Photoshop算法


五、bwareopen算法

自己需要用写了一个,和Matlab中bwareaopen的效果应该是几乎一致的,依赖于opencv新函数connectedComponentsWithStats,再也不用先找轮廓再填充了。



六、单目相机标定

输入5张图,得到out_camera_data.xml,采用张正友标定算法。


七、扫描全能王软件

相信很多人手机里都装了个“扫描全能王”APP,平时可以用它来可以扫描一些证件、文本,确实很好用,第一次用的时候确实感觉功能很强大啊算法很牛逼啊。但是仔细一想,其实这些实现起来也是很简单的,我想了下,实现的步骤应该就只有下面三个:

  • 将证件轮廓找到
  • 提取证件矩形轮廓四点进行透视变换
  • 二值化


Reference:

1.[OpenCV探索之路(二十二):制作一个类“全能扫描王”的简易扫描软件


八、生成棋盘格




九、图片校正

对任意倾斜的图片,校正到水平位置。





十、腐蚀膨胀

  • getStructuringElement
  • erode
  • dilate

十一、找到图片中的方块



   


   

十二、图像拼接

图像拼接在实际的应用场景很广,比如无人机航拍,遥感图像等等,图像拼接是进一步做图像理解基础步骤,拼接效果的好坏直接影响接下来的工作,所以一个好的图像拼接算法非常重要。

再举一个身边的例子吧,你用你的手机对某一场景拍照,但是你没有办法一次将所有你要拍的景物全部拍下来,所以你对该场景从左往右依次拍了好几张图,来把你要拍的所有景物记录下来。那么我们能不能把这些图像拼接成一个大图呢?我们利用opencv就可以做到图像拼接的效果!

Reference:

1.【OpenCV探索之路(二十四)图像拼接和图像融合技术


十三、寻找最大内切圆

  • FindBigestContour
  • pointPolygonTest




十四、拼图游戏

  • 随机调换所有的子图像序列的位置,用于在 Splite image中显示
  • 鼠标回调函数,用于获取需要查找的子图像在原图像中的位置,并叠加显示在目标图像中

Reference:

1.【儿时经典“手游”—拼图板小游戏Opencv实现


十五、获得物体的主要方向

  • 分别获得每个工件的轮廓;
  • 处理每个轮廓,采用pca(主成分分析)方法,获得所有轮廓点的集合的中点,主要方向等信息;
  • 绘图并返回结果。

Reference:

1.【如何获得物体的主要方向?】


十六、图像细化




Reference:

1.http://wenku.baidu.com/link?url=EWMEJdckKwG-Ws4cG1iGCoggiClRA98TsFglT8keOGUZC-9gLLw4x_TjFRLAMYvFvt0kc6-wREScy674VKGakurs-iAOr4XZ0Xdx-PtoEga

2.细化算法

3.论文 A fast parallel algorithm for thinning digital patterns

———-

十七、寻找轮廓中心点

  • 阈值
  • 寻找轮廓
  • 计算中心点




十八、黏连细胞计数

  • 寻找该图像的最小凸闭包,
  • 凸闭包和凹图形相减得到凹区域
  • 提取凹区域的轮廓
  • 按照区域面积大小最为权重,选取最大的两个区域作为凹点所在区域
  • 遍历这两个区域,寻找距离最短的两个点作为凹点
  • 基于该两个凹点分割



Reference:

1.【【opencv】凹点切分,种子计数,细胞计数前提 17/7/25更新


十九、去除印章

  • 通道选择
  • 二值化



二十、检测椭圆和边

  • HoughLinesP
  • findContours
  • fitEllipse



GitHub:https://github.com/joeaaron/LearningOpenCV

持续更新中……

以上是关于Playing with OpenCV的主要内容,如果未能解决你的问题,请参考以下文章

(转) Playing FPS games with deep reinforcement learning

UVA1482 LA5059 Playing With StonesSG函数

GYM 101061 I. Playing with strings(有待更新)

视差图的 OpenCv 深度估计

UVA 1482 Playing With Stones

计算距离(视差)OpenCV