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 re正则表达式模块(Regular Expression)
Jul 16 Python
Django admin美化插件suit使用示例
Dec 12 Python
详解Python3 中hasattr()、getattr()、setattr()、delattr()函数及示例代码数
Apr 18 Python
pandas.DataFrame选取/排除特定行的方法
Jul 03 Python
Python高级特性切片(Slice)操作详解
Sep 27 Python
解决python xlrd无法读取excel文件的问题
Dec 25 Python
Python3中函数参数传递方式实例详解
May 05 Python
python和mysql交互操作实例详解【基于pymysql库】
Jun 04 Python
python调用Matplotlib绘制分布点图
Oct 18 Python
python 定义类时,实现内部方法的互相调用
Dec 25 Python
PyTorch 普通卷积和空洞卷积实例
Jan 07 Python
Python应用实现双指数函数及拟合代码实例
Jun 19 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
15个小时----从修改程序到自己些程序
2006/10/09 PHP
基于mysql的bbs设计(三)
2006/10/09 PHP
php array_filter除去数组中的空字符元素
2020/06/21 PHP
php上传中文文件名乱码问题处理方案
2015/02/03 PHP
PHP实现微信对账单处理
2018/10/01 PHP
javascript void(0)的妙用
2009/10/21 Javascript
jQuery/CSS3图片特效插件整理推荐
2014/12/07 Javascript
jquery实现侧边弹出的垂直导航
2014/12/09 Javascript
AngularJS基础 ng-value 指令简单示例
2016/08/03 Javascript
JS实现随机颜色的3种方法与颜色格式的转化
2017/01/05 Javascript
JS正则截取两个字符串之间及字符串前后内容的方法
2017/01/06 Javascript
jQuery实现字体颜色渐变效果的方法
2017/03/29 jQuery
详解Vue开发微信H5微信分享签名失败问题解决方案
2018/08/09 Javascript
Node.js使用supervisor进行开发中调试的方法
2019/03/26 Javascript
小程序绑定用户方案优化小结
2019/05/15 Javascript
[06:53]DOTA2每周TOP10 精彩击杀集锦vol.3
2014/06/25 DOTA
[06:11]2014DOTA2国际邀请赛 专访团结一心的VG战队
2014/07/21 DOTA
python爬取淘宝商品详情页数据
2018/02/23 Python
Python fileinput模块如何逐行读取多个文件
2020/10/05 Python
python如何利用Mitmproxy抓包
2020/10/10 Python
HTML5 File接口在web页面上使用文件下载
2017/02/27 HTML / CSS
意大利在线大学图书馆:Libreria universitaria
2019/07/16 全球购物
怎样写演讲稿
2014/01/04 职场文书
电子商务专业学生职业生涯规划
2014/03/07 职场文书
对标管理实施方案
2014/03/12 职场文书
铲车司机岗位职责
2014/03/15 职场文书
酒店开业策划方案
2014/06/02 职场文书
酒店员工培训方案
2014/06/02 职场文书
煤矿安全知识竞赛活动总结
2014/07/07 职场文书
奉献家乡演讲稿
2014/09/16 职场文书
向国旗敬礼活动小结
2014/09/27 职场文书
2014年幼儿园教师工作总结
2014/11/08 职场文书
名人传读书笔记
2015/06/26 职场文书
宿舍管理制度范本
2015/08/07 职场文书
单身狗福利?Python爬取某婚恋网征婚数据
2021/06/03 Python
JavaScript中的LHS和RHS分析详情
2022/04/06 Javascript