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修改Excel数据的实例代码
Nov 01 Python
Python3搜索及替换文件中文本的方法
May 22 Python
wxPython中listbox用法实例详解
Jun 01 Python
Python生成数字图片代码分享
Oct 31 Python
python Pygame的具体使用讲解
Nov 03 Python
基于Numpy.convolve使用Python实现滑动平均滤波的思路详解
May 16 Python
Pandas中resample方法详解
Jul 02 Python
django url到views参数传递的实例
Jul 19 Python
基于python实现雪花算法过程详解
Nov 16 Python
Python 日期的转换及计算的具体使用详解
Jan 16 Python
Python PyQt5整理介绍
Apr 01 Python
Python Sqlalchemy如何实现select for update
Oct 12 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
咖啡的植物学知识
2021/03/03 咖啡文化
PHP模板引擎SMARTY
2006/10/09 PHP
IIS6.0+PHP5.x+MySQL5.x+Zend3.0x+GD+phpMyAdmin2.8x通用安装实例(已经完成)
2006/12/06 PHP
利用discuz实现PHP大文件上传应用实例代码
2008/11/14 PHP
解析CodeIgniter自定义配置文件
2013/06/18 PHP
PHP页面中文乱码分析
2013/10/29 PHP
Discuz7.2版的faq.php SQL注入漏洞分析
2014/08/06 PHP
PHP连接MySQL数据的操作要点
2015/03/20 PHP
php正则preg_replace_callback函数用法实例
2015/06/01 PHP
PHP中用Trait封装单例模式的实现
2019/12/18 PHP
js随机颜色代码的多种实现方式
2013/04/23 Javascript
Bootstrap所支持的表单控件实例详解
2016/05/16 Javascript
node-http-proxy修改响应结果实例代码
2016/06/06 Javascript
AngularJS基础 ng-options 指令详解
2016/08/02 Javascript
Vue2.0学习之详解Vue 组件及父子组件通信
2017/12/12 Javascript
IE8中jQuery.load()加载页面不显示的原因
2018/11/15 jQuery
vue打包之后生成一个配置文件修改接口的方法
2018/12/09 Javascript
JS实现处理时间,年月日,星期的公共方法示例
2019/05/31 Javascript
Vue v-model组件封装(类似弹窗组件)
2020/01/08 Javascript
Python函数式编程指南(三):迭代器详解
2015/06/24 Python
python中urlparse模块介绍与使用示例
2017/11/19 Python
详解TensorFlow在windows上安装与简单示例
2018/03/05 Python
python 字典 按key值大小 倒序取值的实例
2018/07/06 Python
Python玩转加密的技巧【推荐】
2019/05/13 Python
Python 一键获取百度网盘提取码的方法
2019/08/01 Python
Python 操作 ElasticSearch的完整代码
2019/08/04 Python
使用python修改文件并立即写回到原始位置操作(inplace读写)
2020/06/28 Python
Abe’s of Maine:自1979以来销售相机和电子产品
2016/11/21 全球购物
Space NK美国站:英国高端美妆护肤商城
2017/05/22 全球购物
在weblogic中发布ejb需涉及到哪些配置文件
2012/01/17 面试题
大学生自我鉴定范文
2013/12/28 职场文书
村优秀党员事迹材料
2014/01/15 职场文书
《第一朵杏花》教学反思
2014/04/16 职场文书
暑期社会实践心得体会
2014/09/02 职场文书
群众路线教育实践活动的心得体会
2014/09/03 职场文书
golang生成vcf通讯录格式文件详情
2022/03/25 Golang