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使用MySQLdb for Python操作数据库教程
Oct 11 Python
Python多进程同步Lock、Semaphore、Event实例
Nov 21 Python
Python错误提示:[Errno 24] Too many open files的分析与解决
Feb 16 Python
python爬虫实例详解
Jun 19 Python
Python Tkinter模块实现时钟功能应用示例
Jul 23 Python
python 从文件夹抽取图片另存的方法
Dec 04 Python
详解python解压压缩包的五种方法
Jul 05 Python
python读取raw binary图片并提取统计信息的实例
Jan 09 Python
python实现人机猜拳小游戏
Feb 03 Python
查看keras各种网络结构各层的名字方式
Jun 11 Python
使用python实现名片管理系统
Jun 18 Python
python3 os进行嵌套操作的实例讲解
Nov 19 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 编写的日历
2006/10/09 PHP
Zend Framework框架之Zend_Mail实现发送Email邮件验证功能及解决标题乱码的方法
2016/03/21 PHP
php实现不通过扩展名准确判断文件类型的方法【finfo_file方法与二进制流】
2017/04/18 PHP
php中curl和soap方式请求服务超时问题的解决
2018/06/11 PHP
jquery中dom操作和事件的实例学习 下拉框应用
2011/12/01 Javascript
使用javascript过滤html的字符串(注释标记法)
2013/07/08 Javascript
JQuery文字列表向上滚动的代码
2013/11/13 Javascript
代码分析jQuery四种静态方法使用
2015/07/23 Javascript
Js与Jq获取浏览器和对象值的方法
2016/03/18 Javascript
Angularjs实现mvvm式的选项卡示例代码
2016/09/08 Javascript
JavaScript实现DOM对象选择器
2016/09/24 Javascript
jQuery的extend方法【三种】
2016/12/14 Javascript
JavaScript中英文字符长度统计方法示例【按照中文占2个字符】
2017/01/17 Javascript
Vue制作Todo List网页
2017/04/26 Javascript
Vue的transition-group与Virtual Dom Diff算法的使用
2019/12/09 Javascript
如何用JS模拟实现数组的map方法
2020/07/30 Javascript
详解Python编程中基本的数学计算使用
2016/02/04 Python
Python格式化输出%s和%d
2018/05/07 Python
python+flask实现API的方法
2018/11/21 Python
Python 处理图片像素点的实例
2019/01/08 Python
Jupyter notebook在mac:linux上的配置和远程访问的方法
2019/01/14 Python
python实现点击按钮修改数据的方法
2019/07/17 Python
Django REST framework 视图和路由详解
2019/07/19 Python
python pygame实现滚动横版射击游戏城市之战
2019/11/25 Python
Python新手如何进行闭包时绑定变量操作
2020/05/29 Python
keras的backend 设置 tensorflow,theano操作
2020/06/30 Python
如何通过Python实现RabbitMQ延迟队列
2020/11/28 Python
css3模拟jq点击事件的实例代码
2017/07/06 HTML / CSS
什么是封装
2013/03/26 面试题
班主任工作年限证明
2014/01/12 职场文书
部队党性分析材料
2014/02/16 职场文书
民族团结先进集体事迹材料
2014/05/22 职场文书
经济类毕业生求职信
2014/06/26 职场文书
公务员考察材料
2014/12/23 职场文书
后勤工作个人总结
2015/02/28 职场文书
立春观后感
2015/06/18 职场文书