阿汛的opencv学习笔记(二)

图片的基本处理方式

上一篇文章中我们在opencv中完成了读取图片、视频、与摄像头中的信息,此时我们看见的是原图像,就是rgb三通道的图像,这样的图像计算机无法直接读取,因此我们要对图像进行处理后再交给计算机来处理。
处理图片我们需要用到numpy库,安装方法很简单:

pip3 install numpy 

numpy是矩阵处理的库,这样就明白了吧,可以把图片当做矩阵(每个通道是一个255x255的矩阵)的叠加。
先导入一张图片:

img = cv2.imread('D:/cv1/timg.jpg')

1.灰度化
灰度化是给图片降维的一种方法,结果和手机滤镜中的黑白一样,就是俗称的黑白相片:

img_gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

这句的意思是将图片转为灰色,cv2.cvtColor(图片变量名,转换命令)函数可以将图片转为任何颜色,opencv中RGB设定为BGR
2.模糊化
模糊化就是让图片变虚,降低它的清晰度,为什么要降低它的清晰度呢?因为计算机只能直接读取二进制图像,也就是非黑即白的图像,与上面灰度画的图像不同,非黑即白的二值图像只有两种颜色,且没有深浅之分,这样图片在转化中的小体积颗粒就会形成一些影响计算机识别的或黑或白的点,我们程这种点为噪点,模糊化可以将较小的点在没有图像没有二值化之前混到大点或主图中来起到降噪的作用。

img_blur1 = cv2.GaussianBlur(img_gray,(7,7),0)

代码含义:模糊化命令(图像变量名,(此处可以理解为马赛克的粗细),此处理解为模糊程度)
3.边缘化处理
其实说白了就是把图像先转为二进制的图像,之后再把图像的轮廓给勾出来,一般是黑底白边。

img_canny = cv2.Canny(img,300,200)

边缘化处理,效果类似于生成二进制图像,但是描了边,后面的数越大,噪点越少,貌似是横纵比例的关系,有待深究。(英文教程,这里我没听懂说的啥,手动捂脸,要准确意思请去官网查询)
这一步不是降噪只是单纯的勾画边缘。
4.膨胀与侵蚀
先上代码:

img_dialation = cv2.dilate(img_canny,kernel,iterations=1)
#iterations的数值越大,所显示的线条就越粗,这一步操作是膨胀
img_eroded = cv2.erode(img_dialation,kernel,iterations=1)
#这一步是侵蚀

膨胀与侵蚀其实是两个相反的过程,但这两个步骤一般会同时出现
这两个过程的组合叫做降噪
膨胀就是让上面边缘化操作描的边变粗,粗到将线条附近的噪点与线条融为一个粗线条,之后再侵蚀,就是让这个粗线条恢复原来的样子,此时因为噪点与粗线条在一起所以也被侵蚀掉了,噪点就被清除了,或者说降低了噪点数量,所以成为降噪。当然,也可以先侵蚀到把噪点消除,线条变细,再膨胀将线条恢复。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值