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+django实现文件上传
Jan 17 Python
简单的python协同过滤程序实例代码
Jan 31 Python
python opencv实现图片旋转矩形分割
Jul 26 Python
详解Django中CBV(Class Base Views)模型源码分析
Feb 25 Python
浅谈django2.0 ForeignKey参数的变化
Aug 06 Python
python3调用windows dos命令的例子
Aug 14 Python
python set集合使用方法解析
Nov 05 Python
基于梯度爆炸的解决方法:clip gradient
Feb 04 Python
Python使用graphviz画流程图过程解析
Mar 31 Python
Django微信小程序后台开发教程的实现
Jun 03 Python
Pytorch损失函数nn.NLLLoss2d()用法说明
Jul 07 Python
python 如何引入协程和原理分析
Nov 30 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 写文本日志实现代码
2010/05/18 PHP
php通过执行CutyCapt命令实现网页截图的方法
2016/09/30 PHP
php中__toString()方法用法示例
2016/12/07 PHP
PHP实现的文件上传类与用法详解
2017/07/05 PHP
浅谈PHP中pack、unpack的详细用法
2018/03/12 PHP
javascript第一课
2007/02/27 Javascript
JS创建类和对象的两种不同方式
2014/08/08 Javascript
textarea不能通过maxlength属性来限制字数的解决方法
2014/09/01 Javascript
jQuery平滑旋转幻灯片特效代码分享
2015/09/07 Javascript
jQuery AJAX timeout 超时问题详解
2016/06/21 Javascript
Vue系列:通过vue-router如何传递参数示例
2017/01/16 Javascript
Jquery-data的三种用法
2017/04/18 jQuery
mongoose设置unique不生效问题的解决及如何移除unique的限制
2017/11/07 Javascript
Vue源码中要const _toStr = Object.prototype.toString的原因分析
2018/12/09 Javascript
如何基于原生javaScript生成带图片的二维码
2019/11/21 Javascript
python实现基于两张图片生成圆角图标效果的方法
2015/03/26 Python
python使用socket向客户端发送数据的方法
2015/04/29 Python
python文件特定行插入和替换实例详解
2017/07/12 Python
Python编程之gui程序实现简单文件浏览器代码
2017/12/08 Python
Python判断一个文件夹内哪些文件是图片的实例
2018/12/07 Python
Python3.6实现带有简单界面的有道翻译小程序
2019/04/16 Python
python绘制已知点的坐标的直线实例
2019/07/04 Python
解决在pycharm运行代码,调用CMD窗口的命令运行显示乱码问题
2019/08/23 Python
关于ResNeXt网络的pytorch实现
2020/01/14 Python
python+playwright微软自动化工具的使用
2021/02/02 Python
CSS3 border-radius圆角的实现方法及用法详解
2020/09/14 HTML / CSS
美国非常受欢迎的Spa品牌:Bliss必列斯
2018/04/10 全球购物
夜大毕业生自我鉴定
2013/10/31 职场文书
小学后勤管理制度
2014/01/14 职场文书
2014年建筑工作总结
2014/11/26 职场文书
初三毕业评语
2014/12/26 职场文书
好员工观后感
2015/06/17 职场文书
新学期感想
2015/08/10 职场文书
2016年教师寒假学习心得体会
2015/10/09 职场文书
Nginx域名转发https访问的实现
2021/03/31 Servers
Python 数据科学 Matplotlib图库详解
2021/07/07 Python