OpenCV

计算机视觉(computer vision)是人工智能的一个分支

 

在计算机眼中图像是长什么样子      

        图像在计算机中是由很多个像素点组成的,就像一个矩阵一样,矩阵中的数值是0-255,0是最暗,就是黑色,255是最亮,就是白色,共有红绿蓝三通道,

OpenCV_第1张图片

所有如果图片大小是500*500,则矩阵就是[500,500,3]

图像处理的第一步是把图像读进来转换成像素矩阵

 

视频也是由图像组成的,把每一帧(每一个静止图像)连在一起了,就形成看着像是动的视频了

 

图像基本操作

数据读取-图像

OpenCV_第2张图片OpenCV_第3张图片OpenCV_第4张图片OpenCV_第5张图片

数据读取-视频

OpenCV_第6张图片

截取部分图像数据(ROI,Region of interest)

OpenCV_第7张图片

颜色通道提取

OpenCV_第8张图片

OpenCV_第9张图片

边界填充

OpenCV_第10张图片OpenCV_第11张图片

数值计算

OpenCV_第12张图片OpenCV_第13张图片OpenCV_第14张图片

图像融合

OpenCV_第15张图片OpenCV_第16张图片OpenCV_第17张图片OpenCV_第18张图片

https://github.com/skyerhxx/blog-code/blob/master/%E5%9B%BE%E5%83%8F%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C.ipynb

https://github.com/skyerhxx/blog-code/blob/master/%E5%9B%BE%E5%83%8F%E6%93%8D%E4%BD%9C.zip

 

图像处理

图像阈值

OpenCV_第19张图片

OpenCV_第20张图片

图像平滑

说白了就是对图像进行各种滤波操作(卷积处理)

现在图像上有噪音点,想通过一些滤波或者是平滑操作去掉这些噪音点

 

OpenCV_第21张图片OpenCV_第22张图片OpenCV_第23张图片

图像形态学处理

腐蚀操作

OpenCV_第24张图片用腐蚀操作就能够去掉这些毛刺

OpenCV_第25张图片毛刺都没有了,线条变细了

OpenCV_第26张图片

iteration改成2、3就更细了

OpenCV_第27张图片OpenCV_第28张图片

OpenCV_第29张图片

OpenCV_第30张图片

膨胀操作

膨胀操作可以让变细的线条变粗,和腐蚀操作是互为逆操作的

OpenCV_第31张图片

腐蚀是在这种混合的情况下都变黑,而膨胀是在这种情况下都变白

OpenCV_第32张图片OpenCV_第33张图片

OpenCV_第34张图片

开运算与闭运算

开:先腐蚀再膨胀

闭:先膨胀再腐蚀

OpenCV_第35张图片

梯度运算

梯度=膨胀-腐蚀

提取轮廓

OpenCV_第36张图片

OpenCV_第37张图片

OpenCV_第38张图片

礼貌与黑帽

礼帽 = 原始输入-开运算结果

      提取出刺来
黑帽 = 闭运算-原始输入

    只留下一个大致轮廓

OpenCV_第39张图片

 OpenCV_第40张图片OpenCV_第41张图片

图像梯度处理

图像梯度-Sobel算子

 OpenCV_第42张图片

OpenCV_第43张图片

OpenCV_第44张图片

OpenCV_第45张图片OpenCV_第46张图片

OpenCV_第47张图片

OpenCV_第48张图片

OpenCV_第49张图片

OpenCV_第50张图片OpenCV_第51张图片

OpenCV_第52张图片

对变化会比较敏感

OpenCV_第53张图片

边缘检测

OpenCV_第54张图片

因为是一个叫Canny的人发表论文提出来,所以叫Canny边缘检测

非极大值抑制的一个基本应用举例:

OpenCV_第55张图片人脸检测过程中,检测人脸的位置可能会得出比较多的结果,好几个框,那么最终检测出来的只有一个,这个就是去的极大值。比如红框检测到是人脸的可能性99%,蓝框97%,黄框96%,那就是取红框了,黄框和蓝框就抑制了

 

OpenCV_第56张图片

OpenCV_第57张图片

OpenCV_第58张图片

OpenCV_第59张图片

OpenCV_第60张图片

Canny函数中的80,150就是就是minvalue和maxvalue

OpenCV_第61张图片

左边是80,150的,右边是50,100的

右边小一点的得到的信息更多,可以看出图上点更多

OpenCV_第62张图片

图像金字塔与轮廓检测

图像金字塔

OpenCV_第63张图片

OpenCV_第64张图片

从下往上走叫向下采样

OpenCV_第65张图片

OpenCV_第66张图片

如果先执行上采样再执行下采样得到的图片大小可能和原来一样,但是清晰度会变的,会损失一些信息,因为扩大的时候是拿0来填充的

OpenCV_第67张图片

OpenCV_第68张图片

OpenCV_第69张图片

拉普拉斯金字塔

OpenCV_第70张图片

OpenCV_第71张图片

OpenCV_第72张图片

图像轮廓

OpenCV_第73张图片

之前图像的边缘检测,是零零散散的线段,不能算作轮廓。轮廓首先得是一个整体的

OpenCV_第74张图片OpenCV_第75张图片

如果不img.copy(),下面的操作就会把原图像改变了

OpenCV_第76张图片OpenCV_第77张图片OpenCV_第78张图片

轮廓特征

OpenCV_第79张图片

轮廓近似

OpenCV_第80张图片

OpenCV_第81张图片

OpenCV_第82张图片

OpenCV_第83张图片

OpenCV_第84张图片

边界矩形

就是外接矩形

OpenCV_第85张图片

contours[x]  x的不同会选择不同的图形

OpenCV_第86张图片

外接圆

OpenCV_第87张图片

OpenCV_第88张图片

傅里叶变换

OpenCV_第89张图片OpenCV_第90张图片OpenCV_第91张图片

OpenCV_第92张图片

OpenCV_第93张图片

OpenCV_第94张图片

OpenCV_第95张图片

 

https://github.com/skyerhxx/blog-code/blob/master/%E5%9B%BE%E5%83%8F%E5%A4%84%E7%90%86.ipynb

https://github.com/skyerhxx/blog-code/blob/master/%E5%9B%BE%E5%83%8F%E6%93%8D%E4%BD%9C.zip

直方图与模板匹配

直方图

OpenCV_第96张图片

统计每个值出现的点的个数

OpenCV_第97张图片

(256,1)中的1是指二维的图像

OpenCV_第98张图片

mask操作

OpenCV_第99张图片

OpenCV_第100张图片

直方图均衡化

OpenCV_第101张图片OpenCV_第102张图片

OpenCV_第103张图片

OpenCV_第104张图片

自适应直方图均衡化

OpenCV_第105张图片

 

模板匹配

OpenCV_第106张图片

就是找左图在右图中的匹配的位置

OpenCV_第107张图片OpenCV_第108张图片

OpenCV_第109张图片

OpenCV_第110张图片

带归一化的结果都不太差

OpenCV_第111张图片OpenCV_第112张图片OpenCV_第113张图片

匹配多个对象

OpenCV_第114张图片

匹配的模板是一个金币

OpenCV_第115张图片

 

https://github.com/skyerhxx/blog-code/blob/master/%E7%9B%B4%E6%96%B9%E5%9B%BE%E4%B8%8E%E6%A8%A1%E6%9D%BF%E5%8C%B9%E9%85%8D.ipynb

https://github.com/skyerhxx/blog-code/blob/master/%E5%9B%BE%E5%83%8F%E5%A4%84%E7%90%86.zip

 

图像特征—harri角点检测

OpenCV_第116张图片

OpenCV_第117张图片OpenCV_第118张图片

 

参考:

https://www.bilibili.com/video/av59316056/?p=1

你可能感兴趣的:(OpenCV)