python之cv2与图像的载入、显示和保存实例


Posted in Python onDecember 05, 2018

本文是OpenCV 2 Computer Vision Application Programming Cookbook读书笔记的第一篇。在笔记中将以Python语言改写每章的代码。

PythonOpenCV的配置这里就不介绍了。

注意,现在OpenCV for Python就是通过NumPy进行绑定的。所以在使用时必须掌握一些NumPy的相关知识!

图像就是一个矩阵,在OpenCV for Python中,图像就是NumPy中的数组!

如果读取图像首先要导入OpenCV包,方法为:

import cv2

读取并显示图像

在Python中不需要声明变量,所以也就不需要C++中的cv::Mat xxxxx了。只需这样:

img = cv2.imread("D:\cat.jpg")

OpenCV目前支持读取bmp、jpg、png、tiff等常用格式。更详细的请参考OpenCV的参考文档。

接着创建一个窗口

cv2.namedWindow("Image")

然后在窗口中显示图像

cv2.imshow("Image", img)

最后还要添上一句:

cv2.waitKey (0)

如果不添最后一句,在IDLE中执行窗口直接无响应。在命令行中执行的话,则是一闪而过。

完整的程序为:

import cv2 
 
img = cv2.imread("D:\\cat.jpg") 
cv2.namedWindow("Image") 
cv2.imshow("Image", img) 
cv2.waitKey (0) 
cv2.destroyAllWindows()

最后释放窗口是个好习惯!

创建/复制图像

新的OpenCV的接口中没有CreateImage接口。即没有cv2.CreateImage这样的函数。如果要创建图像,需要使用numpy的函数(现在使用OpenCV-Python绑定,numpy是必装的)。如下:

emptyImage = np.zeros(img.shape, np.uint8)

在新的OpenCV-Python绑定中,图像使用NumPy数组的属性来表示图像的尺寸和通道信息。如果输出img.shape,将得到(500, 375, 3),这里是以OpenCV自带的cat.jpg为示例。最后的3表示这是一个RGB图像。

也可以复制原有的图像来获得一副新图像。

emptyImage2 = img.copy();

如果不怕麻烦,还可以用cvtColor获得原图像的副本。

emptyImage3=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) 
#emptyImage3[...]=0

后面的emptyImage3[...]=0是将其转成空白的黑色图像。

保存图像

保存图像很简单,直接用cv2.imwrite即可。

cv2.imwrite("D:\\cat2.jpg", img)

第一个参数是保存的路径及文件名,第二个是图像矩阵。其中,imwrite()有个可选的第三个参数,如下:

cv2.imwrite("D:\\cat2.jpg", img,[int(cv2.IMWRITE_JPEG_QUALITY), 5])

第三个参数针对特定的格式: 对于JPEG,其表示的是图像的质量,用0-100的整数表示,默认为95。 注意,cv2.IMWRITE_JPEG_QUALITY类型为Long,必须转换成int。下面是以不同质量存储的两幅图:

python之cv2与图像的载入、显示和保存实例

对于PNG,第三个参数表示的是压缩级别。cv2.IMWRITE_PNG_COMPRESSION,从0到9,压缩级别越高,图像尺寸越小。默认级别为3:

cv2.imwrite("./cat.png", img, [int(cv2.IMWRITE_PNG_COMPRESSION), 0]) 
cv2.imwrite("./cat2.png", img, [int(cv2.IMWRITE_PNG_COMPRESSION), 9])

保存的图像尺寸如下:

python之cv2与图像的载入、显示和保存实例

还有一种支持的图像,一般不常用。

完整的代码为:

import cv2 
import numpy as np 
 
img = cv2.imread("./cat.jpg") 
emptyImage = np.zeros(img.shape, np.uint8) 
 
emptyImage2 = img.copy() 
 
emptyImage3=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) 
#emptyImage3[...]=0 
 
cv2.imshow("EmptyImage", emptyImage) 
cv2.imshow("Image", img) 
cv2.imshow("EmptyImage2", emptyImage2) 
cv2.imshow("EmptyImage3", emptyImage3) 
cv2.imwrite("./cat2.jpg", img, [int(cv2.IMWRITE_JPEG_QUALITY), 5]) 
cv2.imwrite("./cat3.jpg", img, [int(cv2.IMWRITE_JPEG_QUALITY), 100]) 
cv2.imwrite("./cat.png", img, [int(cv2.IMWRITE_PNG_COMPRESSION), 0]) 
cv2.imwrite("./cat2.png", img, [int(cv2.IMWRITE_PNG_COMPRESSION), 9]) 
cv2.waitKey (0) 
cv2.destroyAllWindows()

以上这篇python之cv2与图像的载入、显示和保存实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python读取csv文件示例(python操作csv)
Mar 11 Python
python读取浮点数和读取文本文件示例
May 06 Python
巧用python和libnmapd,提取Nmap扫描结果
Aug 23 Python
Python实现查找匹配项作处理后再替换回去的方法
Jun 10 Python
python对日志进行处理的实例代码
Oct 06 Python
详解Python进阶之切片的误区与高级用法
Dec 24 Python
Python中psutil的介绍与用法
May 02 Python
Python callable内置函数原理解析
Mar 05 Python
浅谈keras 的抽象后端(from keras import backend as K)
Jun 16 Python
pytorch VGG11识别cifar10数据集(训练+预测单张输入图片操作)
Jun 24 Python
Python join()函数原理及使用方法
Nov 14 Python
完美处理python与anaconda环境变量的冲突问题
Apr 07 Python
python存储16bit和32bit图像的实例
Dec 05 #Python
Python随机生成身份证号码及校验功能
Dec 04 #Python
python 从文件夹抽取图片另存的方法
Dec 04 #Python
使用Python实现微信提醒备忘录功能
Dec 04 #Python
flask-restful使用总结
Dec 04 #Python
Python读取YUV文件,并显示的方法
Dec 04 #Python
对Python3+gdal 读取tiff格式数据的实例讲解
Dec 04 #Python
You might like
用PHP即时捕捉PHP中的错误并发送email通知的实现代码
2013/01/19 PHP
php微信开发自定义菜单
2016/08/27 PHP
php多进程并发编程防止出现僵尸进程的方法分析
2020/02/28 PHP
Yii框架组件的事件机制原理与用法分析
2020/04/07 PHP
Jquery实现点击切换图片并隐藏显示内容(2种方法实现)
2013/04/11 Javascript
html页面显示年月日时分秒和星期几的两种方式
2013/08/20 Javascript
无刷新预览所选择的图片示例代码
2014/04/02 Javascript
jquery操作checked属性以及disabled属性的多种方法
2014/06/20 Javascript
jQuery表格列宽可拖拽改变且兼容firfox
2014/09/03 Javascript
js获取form表单所有数据的简单方法
2016/08/18 Javascript
jqGrid翻页时数据选中丢失问题的解决办法
2017/02/13 Javascript
详解vue项目首页加载速度优化
2017/10/18 Javascript
利用Javascript实现一套自定义事件机制
2017/12/14 Javascript
详解解决使用axios发送json后台接收不到的问题
2018/06/27 Javascript
layui中使用jquery控制radio选中事件的示例代码
2018/08/15 jQuery
vue-cli 使用axios的操作方法及整合axios的多种方法
2018/09/12 Javascript
python 系统调用的实例详解
2017/07/11 Python
Bottle框架中的装饰器类和描述符应用详解
2017/10/28 Python
Python编程产生非均匀随机数的几种方法代码分享
2017/12/13 Python
python初学之用户登录的实现过程(实例讲解)
2017/12/23 Python
对Django 转发和重定向的实例详解
2019/08/06 Python
django重新生成数据库中的某张表方法
2019/08/28 Python
Python实现bilibili时间长度查询的示例代码
2020/01/14 Python
python图形界面开发之wxPython树控件使用方法详解
2020/02/24 Python
python获取栅格点和面值的实现
2020/03/10 Python
使paramiko库执行命令时在给定的时间强制退出功能的实现
2021/03/03 Python
澳洲在线厨具商店:Kitchen Style
2018/05/05 全球购物
婴儿地球:Baby Earth
2018/12/25 全球购物
涉外文秘个人求职的自我评价
2013/10/07 职场文书
机关会计岗位职责
2014/04/08 职场文书
工伤赔偿协议书范本
2014/04/15 职场文书
赵氏孤儿观后感
2015/06/09 职场文书
小学开学典礼新闻稿
2015/07/17 职场文书
详解如何使用Node.js实现热重载页面
2021/05/06 Javascript
Java练习之潜艇小游戏的实现
2022/03/16 Java/Android
使用MybatisPlus打印sql语句
2022/04/22 SQL Server