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 27 Python
python处理csv中的空值方法
Jun 22 Python
在pyqt5中QLineEdit里面的内容回车发送的实例
Jun 21 Python
解决py2exe打包后,总是多显示一个DOS黑色窗口的问题
Jun 21 Python
Python笔记之代理模式
Nov 20 Python
使用python接受tgam的脑波数据实例
Apr 09 Python
Python操作Jira库常用方法解析
Apr 10 Python
解决jupyter notebook 前面书写后面内容消失的问题
Apr 13 Python
django 解决扩展自带User表遇到的问题
May 14 Python
Django rest framework分页接口实现原理解析
Aug 21 Python
Python利用pip安装tar.gz格式的离线资源包
Sep 14 Python
python requests模块的使用示例
Apr 07 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连接mysql数据库代码
2009/03/10 PHP
php foreach循环中使用引用的问题
2013/11/06 PHP
php中mail函数发送邮件失败的解决方法
2014/12/24 PHP
百度工程师讲PHP函数的实现原理及性能分析(三)
2015/05/13 PHP
ThinkPHP5&5.1框架关联模型分页操作示例
2019/08/03 PHP
jquery中对表单的基本操作代码
2010/07/29 Javascript
js 关键词高亮(根据ID/tag高亮关键字)案例介绍
2013/01/21 Javascript
jQuery实现时尚漂亮的弹出式对话框实例
2015/08/07 Javascript
JavaScript动态创建form表单并提交的实现方法
2015/12/10 Javascript
node.js+express制作网页计算器
2016/01/17 Javascript
Javascript的表单验证-提交表单
2016/03/18 Javascript
jQuery复制节点用法示例(clone方法)
2016/09/08 Javascript
thinkphp标签实现bootsrtap轮播carousel实例代码
2017/02/19 Javascript
使用Node.js实现简易MVC框架的方法
2017/08/07 Javascript
js生成word中图片处理方法
2018/01/06 Javascript
基于vue实现网站前台的权限管理(前后端分离实践)
2018/01/13 Javascript
Vue Extends 扩展选项用法完整实例
2019/09/17 Javascript
[03:38]TI4西雅图DOTA2前线报道 71专访
2014/07/08 DOTA
python简单猜数游戏实例
2015/07/09 Python
Python工程师面试题 与Python Web相关
2016/01/14 Python
Python 2.x如何设置命令执行的超时时间实例
2017/10/19 Python
python 随机森林算法及其优化详解
2019/07/11 Python
Python 等分切分数据及规则命名的实例代码
2019/08/16 Python
解决Pycharm中恢复被exclude的项目问题(pycharm source root)
2020/02/14 Python
CSS3截取字符串实例代码【推荐】
2018/06/07 HTML / CSS
eBay意大利购物网站:eBay.it
2019/09/04 全球购物
业务代表的岗位职责
2013/11/16 职场文书
会计岗位职责模板
2014/03/12 职场文书
《故都的秋》教学反思
2014/04/15 职场文书
网络编辑求职信
2014/04/30 职场文书
教师节演讲稿
2014/05/06 职场文书
因个人原因离职的辞职信范文
2015/05/12 职场文书
go语言求任意类型切片的长度操作
2021/04/26 Golang
Redis如何实现分布式锁
2021/08/23 Redis
Java 实现限流器处理Rest接口请求详解流程
2021/11/02 Java/Android
Winsows11性能如何? win11性能测评多核竟比Win10差了10%
2021/11/21 数码科技