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之让人欢喜让人忧的迭代
Oct 02 Python
给Python初学者的一些编程技巧
Apr 03 Python
Python基于pygame实现图片代替鼠标移动效果
Nov 11 Python
Python自定义进程池实例分析【生产者、消费者模型问题】
Sep 19 Python
Python使用getpass库读取密码的示例
Oct 10 Python
NumPy.npy与pandas DataFrame的实例讲解
Jul 09 Python
Python设计模式之桥接模式原理与用法实例分析
Jan 10 Python
使用 Python 快速实现 HTTP 和 FTP 服务器的方法
Jul 22 Python
flask 实现token机制的示例代码
Nov 07 Python
Python2与Python3关于字符串编码处理的差别总结
Sep 07 Python
pytorch 带batch的tensor类型图像显示操作
May 20 Python
教你用python实现一个无界面的小型图书管理系统
May 21 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将网址字符串转换成超链接(网址或email)
2010/05/25 PHP
php调用新浪短链接API的方法
2014/11/08 PHP
php中ob_get_length缓冲与获取缓冲长度实例
2014/11/20 PHP
idTabs基于JQuery的根据URL参数选择Tab插件
2012/04/11 Javascript
解决JS浮点数运算出现Bug的方法
2013/03/12 Javascript
javascript实现促销倒计时+fixed固定在底部
2013/09/18 Javascript
JavaScript设置首页和收藏页面的小例子
2013/11/11 Javascript
设置jsf的选择框h:selectOneMenu为不可编辑状态的方法
2014/01/07 Javascript
jquery实现弹出层遮罩效果的简单实例
2014/03/03 Javascript
jQuery弹出层插件Lightbox_me使用指南
2015/04/21 Javascript
JS简单实现多级Select联动菜单效果代码
2015/09/06 Javascript
javascript 删除数组元素和清空数组的简单方法
2017/02/24 Javascript
Vue.js 表单控件操作小结
2018/03/29 Javascript
JS获取浏览器地址栏的多个参数值的任意值实例代码
2018/07/24 Javascript
vue中的watch监听数据变化及watch中各属性的详解
2018/09/11 Javascript
Vue动态面包屑功能的实现方法
2019/07/01 Javascript
Python设计模式之观察者模式实例
2014/04/26 Python
python中的迭代和可迭代对象代码示例
2017/12/27 Python
Python实现爬虫设置代理IP和伪装成浏览器的方法分享
2018/05/07 Python
mvc框架打造笔记之wsgi协议的优缺点以及接口实现
2018/08/01 Python
python爬虫获取百度首页内容教学
2018/12/23 Python
python PrettyTable模块的安装与简单应用
2019/01/11 Python
将数据集制作成VOC数据集格式的实例
2020/02/17 Python
python GUI库图形界面开发之PyQt5信号与槽机制、自定义信号基础介绍
2020/02/25 Python
Python多线程threading创建及使用方法解析
2020/06/17 Python
Python测试框架:pytest学习笔记
2020/10/20 Python
只要五步 就可以用HTML5/CSS3快速制作便签贴特效(图)
2012/06/04 HTML / CSS
人力资源管理专业自荐书范文
2014/02/10 职场文书
教师求职信
2014/06/17 职场文书
2014年终个人总结报告
2015/03/09 职场文书
植树节新闻稿
2015/07/17 职场文书
基层党建工作简报
2015/07/21 职场文书
护士自荐信范文(2016推荐篇)
2016/01/28 职场文书
Python OpenCV 图像平移的实现示例
2021/06/04 Python
Go遍历struct,map,slice的实现
2021/06/13 Golang
css清除浮动clearfix:after的用法详解(附完整代码)
2023/05/21 HTML / CSS