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 判断一个进程是否存在
Apr 09 Python
Python解析nginx日志文件
May 11 Python
Python中处理字符串之isalpha()方法的使用
May 18 Python
python实现指定文件夹下的指定文件移动到指定位置
Sep 17 Python
python中使用 xlwt 操作excel的常见方法与问题
Jan 13 Python
python操作日志的封装方法(两种方法)
May 23 Python
python获取当前文件路径以及父文件路径的方法
Jul 10 Python
Python帮你微信头像任意添加装饰别再@微信官方了
Sep 25 Python
关于ResNeXt网络的pytorch实现
Jan 14 Python
Pytorch 计算误判率,计算准确率,计算召回率的例子
Jan 18 Python
Python合并多张图片成PDF
Jun 09 Python
Python Pygame实战之塔防游戏的实现
Mar 17 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下获取客户端ip地址的函数
2010/03/15 PHP
Uncaught exception com_exception with message Failed to create COM object
2012/01/11 PHP
php注销代码(session注销)
2012/05/31 PHP
php安装ssh2扩展的方法【Linux平台】
2016/07/20 PHP
php中preg_replace_callback函数简单用法示例
2016/07/21 PHP
PHP strcmp()和strcasecmp()的区别实例
2016/11/05 PHP
php基于协程实现异步的方法分析
2019/07/17 PHP
JavaScript中创建类/对象的几种方法总结
2013/11/29 Javascript
JavaScript四种调用模式和this示例介绍
2014/01/02 Javascript
jquery实现可横向和竖向展开的动态下滑菜单效果
2015/08/24 Javascript
javascript for-in有序遍历json数据并探讨各个浏览器差异
2015/11/30 Javascript
纯js代码实现简单计算器
2015/12/02 Javascript
jQuery EasyUI菜单与按钮详解
2016/07/13 Javascript
使用Ajax与服务器(JSON)通信实例
2016/11/04 Javascript
Jquery鼠标放上去显示全名的实现方法
2017/02/06 Javascript
Koa2 之文件上传下载的示例代码
2018/03/29 Javascript
jQuery实现的两种简单弹窗效果示例
2018/04/18 jQuery
JavaScript实现多态和继承的封装操作示例
2018/08/20 Javascript
Element-ui之ElScrollBar组件滚动条的使用方法
2018/09/14 Javascript
JS实现的tab页切换效果完整示例
2018/12/18 Javascript
vue组件之间的数据传递方法详解
2019/04/19 Javascript
vue.js路由mode配置之去掉url上默认的#方法
2019/11/01 Javascript
python3 破解 geetest(极验)的滑块验证码功能
2018/02/24 Python
python 通过xml获取测试节点和属性的实例
2018/03/31 Python
解决使用PyCharm时无法启动控制台的问题
2019/01/19 Python
python matplotlib:plt.scatter() 大小和颜色参数详解
2020/04/14 Python
keras 多gpu并行运行案例
2020/06/10 Python
利用pipenv和pyenv管理多个相互独立的Python虚拟开发环境
2020/11/01 Python
西班牙最好的在线购买葡萄酒的商店:Vinoseleccion
2019/10/30 全球购物
VICHY薇姿俄罗斯官方网上商店:法国护肤品牌,火山温泉水
2019/11/22 全球购物
Lucene推荐的分页方式是什么?
2015/12/07 面试题
解除劳动关系协议书范文
2014/09/11 职场文书
单位员工收入证明样本
2014/10/09 职场文书
2015年公司国庆放假通知
2015/07/30 职场文书
辞职报告(范文三篇)
2019/08/27 职场文书
python析构函数用法及注意事项
2021/06/22 Python