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解析json之ValueError: Expecting property name enclosed in double quotes: line 1 column 2(char 1)
Jul 06 Python
详解python中executemany和序列的使用方法
Aug 12 Python
django实现同一个ip十分钟内只能注册一次的实例
Nov 03 Python
Python基于matplotlib实现绘制三维图形功能示例
Jan 18 Python
Python实现的多叉树寻找最短路径算法示例
Jul 30 Python
为什么str(float)在Python 3中比Python 2返回更多的数字
Oct 16 Python
通过python爬虫赚钱的方法
Jan 29 Python
Python协程操作之gevent(yield阻塞,greenlet),协程实现多任务(有规律的交替协作执行)用法详解
Oct 14 Python
Python 实现递归法解决迷宫问题的示例代码
Jan 12 Python
python实现四人制扑克牌游戏
Apr 22 Python
Python单元测试及unittest框架用法实例解析
Jul 09 Python
详解Python爬虫爬取博客园问题列表所有的问题
Jan 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
PHP漏洞全解(详细介绍)
2012/11/13 PHP
支持中文的PHP按字符串长度分割成数组代码
2015/05/17 PHP
PHP 获取 ping 时间的实现方法
2017/09/29 PHP
PHP7扩展开发之hello word实现方法详解
2018/01/15 PHP
Windows上php5.6操作mongodb数据库示例【配置、连接、获取实例】
2019/02/13 PHP
背景音乐每次刷新都可以自动更换
2007/02/01 Javascript
浅析Bootstrap缩略图组件与警示框组件
2016/04/29 Javascript
JS闭包与延迟求值用法示例
2016/12/22 Javascript
微信小程序实现自定义picker选择器弹窗内容
2020/05/26 Javascript
基于Layui自定义模块的使用方法详解
2019/09/14 Javascript
vue实现百度语音合成的实例讲解
2019/10/14 Javascript
js实现限定范围拖拽的示例
2020/10/26 Javascript
html中创建并调用vue组件的几种方法汇总
2020/11/17 Javascript
跟老齐学Python之Import 模块
2014/10/13 Python
在Python中操作日期和时间之gmtime()方法的使用
2015/05/22 Python
Python输入二维数组方法
2018/04/13 Python
在python下读取并展示raw格式的图片实例
2019/01/24 Python
详解python中sort排序使用
2019/03/23 Python
Python内置random模块生成随机数的方法
2019/05/31 Python
python opencv 图像拼接的实现方法
2019/06/27 Python
介绍一款python类型检查工具pyright(推荐)
2019/07/03 Python
对Django中的权限和分组管理实例讲解
2019/08/16 Python
Python socket模块方法实现详解
2019/11/05 Python
使用python代码进行身份证号校验的实现示例
2019/11/21 Python
python中有函数重载吗
2020/05/28 Python
Python基于httpx模块实现发送请求
2020/07/07 Python
python用Tkinter做自己的中文代码编辑器
2020/09/07 Python
HTML5 Canvas鼠标与键盘事件demo示例
2013/07/04 HTML / CSS
HTML5 Canvas之测试浏览器是否支持Canvas的方法
2015/01/01 HTML / CSS
Expedia印度尼西亚站:预订酒店、廉价航班和度假套餐
2018/01/31 全球购物
台湾最大网路书店:博客来
2018/03/18 全球购物
Nike瑞典官方网站:Nike.com (SE)
2018/11/26 全球购物
英国和国际包裹递送:ParcelCompare
2019/08/26 全球购物
外贸主管求职简历的自我评价
2013/10/23 职场文书
销售目标责任书
2014/07/23 职场文书
VS2019连接MySQL数据库的过程及常见问题总结
2021/11/27 MySQL