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访问MySQL封装的常用类实例
Nov 11 Python
Python实现的简单hangman游戏实例
Jun 28 Python
深入解析Python中的lambda表达式的用法
Aug 28 Python
Python中字典的setdefault()方法教程
Feb 07 Python
python自定义异常实例详解
Jul 11 Python
python spyder中读取txt为图片的方法
Apr 27 Python
python正则表达式去除两个特殊字符间的内容方法
Dec 24 Python
Python+OpenCV图片局部区域像素值处理改进版详解
Jan 23 Python
python 中的命名空间,你真的了解吗?
Aug 19 Python
如何在scrapy中捕获并处理各种异常
Sep 28 Python
解决python3.x安装numpy成功但import出错的问题
Nov 17 Python
python UIAutomator2使用超详细教程
Feb 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(一)
2012/03/21 PHP
ASP Json Parser修正版
2009/12/06 Javascript
关于用Jquery的height()、width()计算动态插入的IMG标签的宽高的问题
2010/12/08 Javascript
jQuery 1.5最新版本的改进细节分析
2011/01/19 Javascript
jQuery setTimeout传递字符串参数报错的解决方法
2014/06/09 Javascript
jQuery使用$.get()方法从服务器文件载入数据实例
2015/03/25 Javascript
第三篇Bootstrap网格基础
2016/06/21 Javascript
JavaScript中的事件委托及好处
2016/07/12 Javascript
js实现StringBuffer的简单实例
2016/09/02 Javascript
Js查找字符串中出现次数最多的字符及个数实例解析
2016/09/05 Javascript
Javascript 判断两个IP是否在同一网段实例代码
2016/11/28 Javascript
js 博客内容进度插件详解
2017/02/19 Javascript
JavaScript Uploadify文件上传实例
2017/02/28 Javascript
jQuery实现动态删除LI的方法
2017/05/30 jQuery
JavaScript的六种继承方式(推荐)
2017/06/26 Javascript
详解JavaScript按概率随机生成事件
2017/08/02 Javascript
深入理解Vue.js源码之事件机制
2017/09/27 Javascript
node.js通过axios实现网络请求的方法
2018/03/05 Javascript
vue-cli脚手架build目录下utils.js工具配置文件详解
2018/09/14 Javascript
vue-cli项目中使用echarts图表实例
2018/10/22 Javascript
[02:26]2016国际邀请赛8月3日开战 中国军团出征西雅图
2016/08/02 DOTA
python简单猜数游戏实例
2015/07/09 Python
python和bash统计CPU利用率的方法
2015/07/10 Python
python实现将文件夹下面的不是以py文件结尾的文件都过滤掉的方法
2018/10/21 Python
python算法与数据结构之冒泡排序实例详解
2019/06/22 Python
解决Python正则表达式匹配反斜杠''\''问题
2019/07/17 Python
Python3加密解密库Crypto的RSA加解密和签名/验签实现方法实例
2020/02/11 Python
python 用pandas实现数据透视表功能
2020/12/21 Python
通过一张图教会你CSS3倒影的实现
2017/09/26 HTML / CSS
英国领先的珍珠首饰品牌:Orchira
2016/09/11 全球购物
法国在线宠物店:zooplus.fr
2018/02/23 全球购物
数控专业推荐信范文
2013/12/02 职场文书
2014年上半年工作自我评价
2014/01/18 职场文书
事业单位竞聘上岗实施方案
2014/03/28 职场文书
小学生学雷锋演讲稿
2014/04/25 职场文书
2019已经过半,你知道年中工作总结该怎么写吗?
2019/07/03 职场文书