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中用于计算对数的log()方法
May 15 Python
Flask数据库迁移简单介绍
Oct 24 Python
对python实时得到鼠标位置的示例讲解
Oct 14 Python
django之对FileField字段的upload_to的设定方法
Jul 28 Python
Python编程中类与类的关系详解
Aug 08 Python
使用Python实现分别输出每个数组
Dec 06 Python
Django 限制访问频率的思路详解
Dec 24 Python
基于python3抓取pinpoint应用信息入库
Jan 08 Python
Python中常见的数制转换有哪些
May 27 Python
详解python模块pychartdir安装及导入问题
Oct 22 Python
python 三种方法实现对Excel表格的读写
Nov 19 Python
OpenCV-Python模板匹配人眼的实例
Jun 08 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
中国站长站 For Dede4.0 采集规则
2007/05/27 PHP
Yii 访问 Gii(脚手架)时出现 403 错误
2018/06/06 PHP
javascript encodeURI和encodeURIComponent的比较
2010/04/03 Javascript
浅析jQuery Mobile的初始化事件
2015/12/03 Javascript
JavaScript获取当前url根目录(路径)
2016/06/17 Javascript
HTML中setCapture、releaseCapture 使用方法浅析
2016/09/25 Javascript
详解Vue2.0里过滤器容易踩到的坑
2017/06/01 Javascript
浅谈vue的踩坑路
2017/08/31 Javascript
AngularJS实现与后台服务器进行交互的示例讲解
2018/08/13 Javascript
关于JS模块化的知识点分享
2019/10/16 Javascript
vue使用prop可以渲染但是打印台报错的解决方式
2019/11/13 Javascript
node.js中Buffer缓冲器的原理与使用方法分析
2019/11/23 Javascript
使用 UniApp 实现小程序的微信登录功能
2020/06/09 Javascript
JSON stringify方法原理及实例解析
2020/10/23 Javascript
ant-design-vue中tree增删改的操作方法
2020/11/03 Javascript
使用C语言扩展Python程序的简单入门指引
2015/04/14 Python
python 二分查找和快速排序实例详解
2017/10/13 Python
在Python程序员面试中被问的最多的10道题
2017/12/05 Python
使用python将时间转换为指定的格式方法
2018/11/12 Python
使用matplotlib中scatter方法画散点图
2019/03/19 Python
Python设置matplotlib.plot的坐标轴刻度间隔以及刻度范围
2019/06/25 Python
PyCharm 在Windows的有用快捷键详解
2020/04/07 Python
Django Xadmin多对多字段过滤实例
2020/04/07 Python
python3排序的实例方法
2020/10/20 Python
CSS3绘制六边形的简单实现
2016/08/25 HTML / CSS
让ie浏览器成为支持html5的浏览器的解决方法(使用html5shiv)
2014/04/08 HTML / CSS
Weekendesk意大利:探索多种引人入胜的周末主题
2016/10/14 全球购物
彪马英国官网:PUMA英国
2019/02/11 全球购物
27个经典Linux面试题及答案,你知道几个?
2014/03/11 面试题
高中毕业自我鉴定范文
2013/10/02 职场文书
生产副总岗位职责
2013/11/28 职场文书
2014年社区工作总结
2014/11/18 职场文书
党校毕业个人总结
2015/02/28 职场文书
2015年车间主任工作总结
2015/05/21 职场文书
Java 数组的使用
2022/05/11 Java/Android
Win10系统搭建ftp文件服务器详细教程
2022/08/05 Servers