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局域网ip扫描示例分享
Apr 03 Python
Python中关于使用模块的基础知识
May 24 Python
python爬虫实现教程转换成 PDF 电子书
Feb 19 Python
Python单例模式实例详解
Mar 01 Python
python删除字符串中指定字符的方法
Aug 13 Python
python使用response.read()接收json数据的实例
Dec 19 Python
Python 限制线程的最大数量的方法(Semaphore)
Feb 22 Python
scrapy-redis的安装部署步骤讲解
Feb 27 Python
python:批量统计xml中各类目标的数量案例
Mar 10 Python
Python获取对象属性的几种方式小结
Mar 12 Python
python模拟斗地主发牌
Apr 22 Python
python复合条件下的字典排序
Dec 18 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
fleaphp下不确定的多条件查询的巧妙解决方法
2008/09/11 PHP
PHP form 表单传参明细研究
2009/07/17 PHP
PHP的SQL注入实现(测试代码安全不错)
2011/02/27 PHP
PHP调用MsSQL Server 2012存储过程获取多结果集(包含output参数)的详解
2013/07/03 PHP
php+html5使用FormData对象提交表单及上传图片的方法
2015/02/11 PHP
Thinkphp5框架实现获取数据库数据到视图的方法
2019/08/14 PHP
捕获关闭窗口的脚本
2009/01/10 Javascript
基于Jquery与WebMethod投票功能实现代码
2011/01/19 Javascript
javascript动画浅析
2012/08/30 Javascript
什么是json和jsonp,jQuery json实例详详细说明
2012/12/11 Javascript
把jQuery的类、插件封装成seajs的模块的方法
2014/03/12 Javascript
封装好的js判断操作系统与浏览器代码分享
2015/01/09 Javascript
javascript获取元素离文档各边距离的方法
2015/02/13 Javascript
js遍历json的key和value的实例
2017/01/22 Javascript
微信小程序实现横向增长表格的方法
2018/07/24 Javascript
webuploader分片上传的实现代码(前后端分离)
2018/09/10 Javascript
微信小程序图表插件wx-charts用法实例详解
2019/05/20 Javascript
微信小程序实现单个卡片左滑显示按钮并防止上下滑动干扰功能
2019/12/06 Javascript
vue 判断页面是首次进入还是再次刷新的实例
2020/11/05 Javascript
Python高效编程技巧
2013/01/07 Python
简单文件操作python 修改文件指定行的方法
2013/05/15 Python
python遍历数组的方法小结
2015/04/30 Python
python学习之第三方包安装方法(两种方法)
2015/07/30 Python
Python实现批量检测HTTP服务的状态
2016/10/27 Python
Python使用pyshp库读取shapefile信息的方法
2018/12/29 Python
python网络应用开发知识点浅析
2019/05/28 Python
浅析Python 多行匹配模式
2020/07/24 Python
CSS3的 fit-content实现水平居中
2017/09/07 HTML / CSS
资料员岗位职责
2013/11/17 职场文书
家长对孩子评语
2014/01/30 职场文书
群众路线教育实践活动总结
2014/10/30 职场文书
毕业论文指导教师评语
2014/12/30 职场文书
护士求职自荐信
2015/03/25 职场文书
详解Redis实现限流的三种方式
2021/04/27 Redis
pytorch 实现在测试的时候启用dropout
2021/05/27 Python
CSS布局之浮动(float)和定位(position)属性的区别
2021/09/25 HTML / CSS