python opencv 实现读取、显示、写入图像的方法


Posted in Python onJune 08, 2020

 opencv是一个强大的图像处理和计算机视觉库,实现了很多实用算法,值得学习和深究下。

opencv包安装

·

这里直接安装opencv-python包(非官方): pip install opencv-python

官方文档:https://opencv-python-tutroals.readthedocs.io/en/latest/

1、读取图像

import cv2
image=cv2.imread("dog2.jpg",1)

说明:

第二个参数是一个标志,它指定了读取图像的方式。

  • cv.IMREAD_COLOR: 加载彩色图像。任何图像的透明度都会被忽视。它是默认标志。
  • cv.IMREAD_GRAYSCALE:以灰度模式加载图像
  • cv.IMREAD_UNCHANGED:加载图像,包括alpha通道

注意除了这三个标志,你可以分别简单地传递整数1、0或-1。

即使图像路径出现了错误,也不会报错,而是print(image)会输出None。

2、显示图像

cv2.imshow("image",image)
cv2.waitKey(0)
cv2.destroyAllWindows()

说明:

使用函数cv.imshow()在窗口中显示图像。窗口自动适合图像尺寸。

cv.waitKey()是一个键盘绑定函数。其参数是以毫秒为单位的时间。该函数等待任何键盘事件指定的毫秒。如果您在这段时间内按下任何键,程序将继续运行。如果0被传递,它将无限期地等待一次敲击键。它也可以设置为检测特定的按键,例如,如果按下键 a 等,我们将在下面讨论。

注意 除了键盘绑定事件外,此功能还处理许多其他GUI事件,因此你必须使用它来实际显示图像。

cv.destroyAllWindows()只会破坏我们创建的所有窗口。如果要销毁任何特定的窗口,请使用函数cv.destroyWindow()在其中传递确切的窗口名称作为参数。

注意在特殊情况下,你可以创建一个空窗口,然后再将图像加载到该窗口。在这种情况下,你可以指定窗口是否可调整大小。这是通过功能cv.namedWindow()完成的。默认情况下,该标志为cv.WINDOW_AUTOSIZE。但是,如果将标志指定为cv.WINDOW_NORMAL,则可以调整窗口大小。当图像尺寸过大以及向窗口添加跟踪栏时,这将很有帮助。

cv2.namedWindow('image',cv.WINDOW_NORMAL)
cv2.imshow('image',image)
cv2.waitKey(0)
cv2.destroyAllWindows()

3、写入图像

使用函数cv.imwrite()保存图像。

第一个参数是文件名,第二个参数是要保存的图像。cv.imwrite('messigray.png',img)

这会将图像以PNG格式保存在工作目录中。

在下面的程序中,以灰度加载图像,显示图像,按s保存图像并退出,或者按ESC键直接退出而不保存。

import numpy as np
import cv2 
img = cv.imread('dog2.jpg',0)
cv.imshow('image',img)
k = cv.waitKey(0)
if k == 27:   # 等待ESC退出
 cv.destroyAllWindows()
elif k == ord('s'): # 等待关键字,保存和退出
 cv.imwrite('dog2gray.png',img)
 cv.destroyAllWindows()

如果使用的是64位计算机,则必须k = cv.waitKey(0)按如下所示修改行:k = cv.waitKey(0) & 0xFF

4、结合使用matplotlib

import numpy as np
import cv2 as cv
from matplotlib import pyplot as plt
img = cv.imread('messi5.jpg',0)
plt.imshow(img, cmap = 'gray', interpolation = 'bicubic')
plt.xticks([]), plt.yticks([]) # 隐藏 x 轴和 y 轴上的刻度值
plt.show()

警告:OpenCV加载的彩色图像处于BGR模式。但是Matplotlib以RGB模式显示。因此,如果使用OpenCV读取彩色图像,则Matplotlib中将无法正确显示彩色图像。

总结

到此这篇关于python opencv 实现读取、显示、写入图像的方法的文章就介绍到这了,更多相关python opencv 图片读取显示写入内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
使用python的chardet库获得文件编码并修改编码
Jan 22 Python
Python重新引入被覆盖的自带function
Jul 16 Python
Python实现 多进程导入CSV数据到 MySQL
Feb 26 Python
Python下实现的RSA加密/解密及签名/验证功能示例
Jul 17 Python
Python 爬虫之Beautiful Soup模块使用指南
Jul 05 Python
Python日志无延迟实时写入的示例
Jul 11 Python
django重新生成数据库中的某张表方法
Aug 28 Python
python字典排序的方法
Oct 12 Python
Python处理PDF与CDF实例
Feb 26 Python
Python 多线程共享变量的实现示例
Apr 17 Python
Python读写锁实现实现代码解析
Nov 28 Python
pytest进阶教程之fixture函数详解
Mar 29 Python
python:删除离群值操作(每一行为一类数据)
Jun 08 #Python
pyecharts在数据可视化中的应用详解
Jun 08 #Python
python numpy实现rolling滚动案例
Jun 08 #Python
Python如何向SQLServer存储二进制图片
Jun 08 #Python
python求numpy中array按列非零元素的平均值案例
Jun 08 #Python
Python过滤掉numpy.array中非nan数据实例
Jun 08 #Python
使用Python FastAPI构建Web服务的实现
Jun 08 #Python
You might like
PHP编程与应用
2006/10/09 PHP
一个MYSQL操作类
2006/11/16 PHP
php socket方式提交的post详解
2008/07/19 PHP
PHP中文件上传的一个问题
2010/09/04 PHP
Linux下CoreSeek及PHP扩展模块的安装
2012/09/23 PHP
php.ini修改php上传文件大小限制的方法详解
2013/06/17 PHP
ThinkPHP3.1新特性之动态设置自动完成和自动验证示例
2014/06/19 PHP
PHP使用数组实现矩阵数学运算的方法示例
2017/05/29 PHP
转一个日期输入控件,支持FF
2007/04/27 Javascript
js中匿名函数的N种写法
2010/09/08 Javascript
解析JavaScript中点号“.”的多义性
2013/12/02 Javascript
Javascript自定义函数判断网站访问类型是PC还是移动终端
2014/01/10 Javascript
Javascript this 关键字 详解
2014/10/22 Javascript
node.js中的path.delimiter方法使用说明
2014/12/09 Javascript
angularjs 处理多个异步请求方法汇总
2015/01/06 Javascript
animate 实现滑动切换效果【实例代码】
2016/05/05 Javascript
JavaScript数据类型转换的注意事项
2016/07/31 Javascript
javascript事件捕获机制【深入分析IE和DOM中的事件模型】
2016/12/15 Javascript
layui表格实现代码
2017/05/20 Javascript
基于 Immutable.js 实现撤销重做功能的实例代码
2018/03/01 Javascript
在Vue组件中获取全局的点击事件方法
2018/09/06 Javascript
JavaScript学习笔记之DOM操作实例分析
2019/01/08 Javascript
javascript操作元素的常见方法小结
2019/11/13 Javascript
vue实现列表滚动的过渡动画
2020/06/29 Javascript
微信小程序连接服务器展示MQTT数据信息的实现
2020/07/14 Javascript
Python删除指定目录下过期文件的2个脚本分享
2014/04/10 Python
解决Python3.5+OpenCV3.2读取图像的问题
2018/12/05 Python
pandas ix &iloc &loc的区别
2019/01/10 Python
浅谈python处理json和redis hash的坑
2020/07/16 Python
CSS3教程:新增加的结构伪类
2009/04/02 HTML / CSS
CSS3之多背景background使用示例
2013/10/18 HTML / CSS
西班牙汉普顿小姐:购买帆布鞋和太阳镜
2016/10/23 全球购物
爱尔兰灯和灯具网上商店:Lights.ie
2018/03/26 全球购物
Linux机考试题
2015/10/16 面试题
思想工作总结范文
2015/08/12 职场文书
Go语言带缓冲的通道实现
2021/04/26 Golang