使用Python OpenCV处理图像之图像文件的打开、显示和保存操作

         前面我们使用Python OpenCV进行了图像的通道操作(使用Python中OpenCV库创建一幅图片的RGB通道图片),还使用OpenCV对微信头像进行处理(一个Pythoner获取微信国旗头像的正确途径,请不要再@微信官方了)。在这过程中我们发现了OpenCV库的强大之处。

今天,我们对OpenCV库的基本操作进行梳理。   

                                     不错的图像处理库O'pen'CV

 

【为什么选择OpenCV】

我们知道,Python中典型的图像库有很多,比如:OpenCV、PIL(Pillow)、skimage。Pillow模块提供了最简单最基本的数字图像处理功能,但功能不是很强大;skimage是基于scipy库的一款图像处理包,正确的写法是sciki-image,它是把图片作为numpy数组进行处理,在这一点上跟OpenCV图像处理方式比较类似,但是scipy库的学习我们还没涉及。因此,今天以OpenCV为例来进行图像处理。

为什么要用OpenCV?

OpenCV实质上是一个c++库,它提供了很多应用程序编写接口。当然,不止是Python了,像R、java、C等典型的编程语言都有接口予以提供。优点来了,就是我们在学习Python的时候掌握了OpenCV的操作,当学习其它语言调用OpenCV进行图像处理时,就会有一种似曾相识的赶脚,一举多得,何乐而不为呢?但是,OpenCV的唯一缺点就是更新速度比较慢。但相信我,这缺点不算什么,因为这个库算是比较成熟的一个库,即使更新速度慢,也丝毫不影响我们使用它进行任何图像处理。

【关于图像的打开】

对于图像的操作,当然打开是第一步,不同的库对于图像打开后返回的值是不一样的。我们使用pillow库和OpenCV库同时打开一张图片,看下它们返回的信息。

使用OpenCV和PIL打开图片测试

测试结果如下所示。

测试运行结

打开的图像信息中可以看到,OpenCV打开的图像能够真实无损反映该图像的信息,这些信息都是像素级的,对于图片处理能够更加精准地进行。而PIL的处理时封装在对象里面的,对于处理任何一个像素点,可扩展性和自定义性比较OpenCV就有点弱了,对比提供的方法,OpenCV也是远大于PIL库的。

【关于图像的显示】

图像的显示很简单,直接使用cv2.imshow(windowName, Img)函数即可。现在我们来打开一幅图像并显示它,代码如下图所示。

打开并显示图像

运行程序,执行效果如下图所示。

打开图像成功

对于程序中后两行内容解释如下:

cv2.waitKey():等待键盘响应函数,函数中可以传入具体的毫秒数,表示具体程序等待键盘输入的时间,如果传入特定的毫秒数,则特定毫秒数内按下任意键会返回该键的ASCII码值,程序将会继续运行,如果没有键盘输入则返回-1;如果传入参数为0,则表示持续等待键盘输入,该函数常用于检测是否有特定的键被按下

cv2.destroyAllWindow():删除我们建立的窗口,参数传入窗口名称即可。

我们可以先创建一个窗口,然后再加载显示图片,使用cv2.namedWindow(windowName, windowMode),窗口的windowMode下图会有展示,感兴趣的可以自己实验下,具体代码如下图所示。

先创建一个窗口再展示图像

【关于图像的保存】

图像的保存很简单,直接使用cv2.imwrite(imageName, Image)即可。同样我们打开上述图片,然后更改名称后将文件存储在本地,有人问了,这样有什么用?你可以试试更改图片的后缀名看一下,其实,这个命令可以更改图片类型哦,代码如下图所示。

保存图像文件代码成功运行,这里就不展示了。

本篇主要对OpenCV的基本操作进行了梳理。感兴趣的朋友可以自己敲代码试试。后续会有更精彩的内容哦,欢迎加关注。

转载自百家号:Python高手养成。

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值