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

持续更新中……

猜你喜欢

转载自blog.csdn.net/lxy_2011/article/details/78713032