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使用functools模块中的partial函数生成偏函数
Jul 02 Python
python批量实现Word文件转换为PDF文件
Mar 15 Python
Pyspider中给爬虫伪造随机请求头的实例
May 07 Python
python 将print输出的内容保存到txt文件中
Jul 17 Python
Python3 Post登录并且保存cookie登录其他页面的方法
Dec 28 Python
python实现感知机线性分类模型示例代码
Jun 02 Python
flask 框架操作MySQL数据库简单示例
Feb 02 Python
解决python-docx打包之后找不到default.docx的问题
Feb 13 Python
如何利用Python给自己的头像加一个小国旗(小月饼)
Oct 02 Python
基于python爬取链家二手房信息代码示例
Oct 21 Python
TensorFlow低版本代码自动升级为1.0版本
Feb 20 Python
python读取pdf格式文档的实现代码
Apr 01 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 $_SERVER["REQUEST_URI"]获取值的通用解决方法
2010/06/21 PHP
在php和MySql中计算时间差的方法
2011/04/22 PHP
php使用cookie实现记住用户名和密码实现代码
2015/04/27 PHP
PhpStorm terminal无法输入命令的解决方法
2016/10/09 PHP
PHP解压ZIP文件到指定文件夹的方法
2016/11/17 PHP
利用PHP访问带有密码的Redis方法示例
2017/02/09 PHP
php str_getcsv把字符串解析为数组的实现方法
2017/04/05 PHP
PHP解析url并得到url参数方法总结
2018/10/11 PHP
yii框架结合charjs实现统计30天数据的方法
2020/04/04 PHP
jQuery 常见学习网站与参考书
2009/11/09 Javascript
Extjs TriggerField在弹出窗口显示不出问题的解决方法
2010/01/08 Javascript
Javascript事件实例详解
2013/11/06 Javascript
jquery插件之定时查询待处理任务数量
2014/05/01 Javascript
JS实现获取剪贴板内容的方法
2016/06/21 Javascript
js实现文字超出部分用省略号代替实例代码
2016/09/01 Javascript
vue自定义指令实现v-tap插件
2016/11/03 Javascript
jquery仿微信聊天界面
2017/05/06 jQuery
vue通过watch对input做字数限定的方法
2017/07/13 Javascript
Vue项目webpack打包部署到服务器的实例详解
2017/07/17 Javascript
详解JSONObject和JSONArray区别及基本用法
2017/10/25 Javascript
Vue项目报错:Uncaught SyntaxError: Unexpected token
2018/11/10 Javascript
微信小程序局部刷新触发整页刷新效果的实现代码
2018/11/21 Javascript
Python 代码性能优化技巧分享
2012/08/07 Python
Python入门之后再看点什么好?
2018/03/05 Python
Python callable内置函数原理解析
2020/03/05 Python
基于python实现对文件进行切分行
2020/04/26 Python
Python制作一个仿QQ办公版的图形登录界面
2020/09/22 Python
Python实现PS滤镜中的USM锐化效果
2020/12/04 Python
HTML5地理定位实例
2014/10/15 HTML / CSS
您的网上新华书店:文轩网
2016/08/24 全球购物
职业规划书如何设计?
2014/01/09 职场文书
给领导的检讨书
2014/02/16 职场文书
租房安全协议书
2014/08/20 职场文书
财产保全担保书
2015/01/20 职场文书
教师素质教育心得体会
2016/01/19 职场文书
pytorch中的model=model.to(device)使用说明
2021/05/24 Python