python opencv图像处理基本操作的示例分析

发布时间:2021-11-12 13:33:52 作者:柒染
来源:亿速云 阅读:132

本篇文章给大家分享的是有关python opencv图像处理基本操作的示例分析,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

①读取图像

python opencv图像处理基本操作的示例分析

②显示图像

python opencv图像处理基本操作的示例分析

该函数中,name是显示窗口的名字,可输入任意字符串,img就是读取的图片矩阵。

waitKey()意思是图片停留的时间,若设为0,则会一直保留直到关闭图片。

③视频读取

python opencv图像处理基本操作的示例分析

使用VideoCapture方法读取视频,若可以成功读取,则vc.read()返回的第一个参数就是True,否则为False。返回的第二个参数frame就是读取的视频图片。此时只能读取一张。

python opencv图像处理基本操作的示例分析

该函数可以将读取的图片按照设定的速度依次展示,cv.waitKey中的数值越小,展示的速度越快。

gray处只是把图片设置成了灰度图像,直接用frame展示也可以,就是原图。最后的0xFF==27就是ESC键,按下这个键就会退出。

④图像截取

python opencv图像处理基本操作的示例分析

因为图像读取的是矩阵,因此使用矩阵的截取方法即可。

⑤颜色通道提取及还原

python opencv图像处理基本操作的示例分析

python opencv图像处理基本操作的示例分析

CV读取图像的时候,彩色是BGR而非RBG,使用split以及merge方法进行提取和还原。

python opencv图像处理基本操作的示例分析

通过将其他通道设置为0,即可展示只保留某一颜色通道的图像。

⑥边界填充

python opencv图像处理基本操作的示例分析

python opencv图像处理基本操作的示例分析

指定大小后,有不同的填充方法,通过borderType来进行设置。

⑦数值计算

若通过矩阵计算方式直接相加,则当结果超过255的时候,会进行取余操作。

若通过cv.add方法,则超过255的会全部截断为255

python opencv图像处理基本操作的示例分析

图像尺寸的修改:cv.resize(图像矩阵,尺寸长宽元组)

⑧图像融合

python opencv图像处理基本操作的示例分析

通过cv.addWeighted对图像进行融合,参数分别为:第一张图,权值,第二张图,权值,微调的度。给的权值相当于对图像取了个透明度。两张图会直接重叠在一起。

2.阈值与平滑处理

①设定阈值并对图像处理

python opencv图像处理基本操作的示例分析

通过cv.threshold对图像进行阈值处理,上面的代码中,127就是阈值,255是最大值。后面是处理的方法,比如BINARY是处理为0和1,即显示的图片只有黑和白。加上INV就是反转过来,也就是白和黑。

python opencv图像处理基本操作的示例分析

②图像平滑-均值滤波

python opencv图像处理基本操作的示例分析

blur方法,传入的第一个参数是图像,第二个是核大小。 也就是以多大的范围去处理图像,比如3*3或者5*5等。

③图像平滑-方框滤波

python opencv图像处理基本操作的示例分析

④图像平滑-高斯滤波

python opencv图像处理基本操作的示例分析

⑤图像平滑-中值滤波

python opencv图像处理基本操作的示例分析

对lena图像通过以上的滤波方式进行滤波,发现中值滤波的效果最好,因为中值滤波会直接舍弃掉噪音,而其他的滤波方式都是需要考虑噪音在内,并进行计算的。

3.图像的形态学处理

①腐蚀操作

python opencv图像处理基本操作的示例分析

kernel依旧是核,跟上面的一样,代表处理的范围大小。erode方法中的参数分别为:待处理的图像,核,迭代次数。每一次迭代都会侵蚀掉一部分图像。因此如果有细的毛刺会直接被侵蚀掉,粗的线条会变细。迭代次数越多,侵蚀的部分越大。

②膨胀操作

python opencv图像处理基本操作的示例分析

该操作相当于腐蚀操作的逆操作。会把原来的内容扩展。如果原来的图就带毛刺,膨胀后毛刺会变大。

③开运算和闭运算

python opencv图像处理基本操作的示例分析

python opencv图像处理基本操作的示例分析

开闭运算其实就是膨胀和腐蚀运算的结合,有一个先后顺序,如上图。都是通过morphologyEx方法来实现的,改变其中的参数即可。

4.图像梯度处理

①梯度运算

python opencv图像处理基本操作的示例分析

梯度就是膨胀-腐蚀所得到的边界。依旧是morphologyEx方法来实现。

②礼帽与黑帽

python opencv图像处理基本操作的示例分析

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

黑帽 = 闭运算-原始输入

其实就是把上面两种运算包装成了函数

③图像的梯度处理

三种算子:Sobel, Scharr, Laplacian

python opencv图像处理基本操作的示例分析

上面代码中Sobel算子和Scharr算子输入的参数为:待处理的图片,图像深度(通常指定为-1就可以),x方向,y方向

因此若只指定x为1,其实是计算了一半。需要把数值修改为绝对值,并计算y=1,x=0的情况下的另一半,两者融合起来,才会是完整的处理。

python opencv图像处理基本操作的示例分析

Scharr算子:把左右数值变大,结果更明显。

Laplacian算子:对变化更敏感,对噪音点也敏感。通常不单独使用拉普拉斯算子。原理是中心点和周围点比较,不需要输入x和y。

5.边缘检测

①Canny边缘检测

流程:

1.使用高斯滤波器,平滑图像,滤除噪声
2.计算图像中每个像素点的梯度强度和方向
3.应用非极大值抑制,以消除边缘检测带来的杂散效应
4.应用双阈值检测来确定真实的和潜在的边缘
5.通过抑制孤立的弱边缘完成最终的边缘检测

python opencv图像处理基本操作的示例分析

以上是两种边缘检测的对比,结果如下

python opencv图像处理基本操作的示例分析

该方法会设置两个阈值,大于高阈值的地方保留,低于低阈值的地方舍弃,在高低之间的地方,若和保留的地方有链接则保留,否则舍弃。

可以看出,阈值设定的高的时候,细节变少。低的时候,细节变多。

以上就是python opencv图像处理基本操作的示例分析,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注亿速云行业资讯频道。

推荐阅读:
  1. python大神进阶路线
  2. Mongodb基本操作与Python连接mongodb并进行基础操作的示例分析

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

python opencv

上一篇:如何搭建redis集群

下一篇:Django中的unittest应用是什么

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》