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调用cmd命令行制作刷博器
Jan 13 Python
在Python中使用AOP实现Redis缓存示例
Jul 11 Python
Python实现的简单模板引擎功能示例
Sep 02 Python
python编程之requests在网络请求中添加cookies参数方法详解
Oct 25 Python
Python实现基于二叉树存储结构的堆排序算法示例
Dec 08 Python
python+ffmpeg视频并发直播压力测试
Mar 06 Python
树莓派采用socket方式文件传输(python)
Jun 22 Python
Python实现最大子序和的方法示例
Jul 05 Python
Pytorch释放显存占用方式
Jan 13 Python
以SQLite和PySqlite为例来学习Python DB API
Feb 05 Python
Python直接赋值及深浅拷贝原理详解
Sep 05 Python
matplotlib bar()实现百分比堆积柱状图
Feb 24 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
php iconv() : Detected an illegal character in input string
2010/12/05 PHP
PHP中is_file不能替代file_exists的理由
2014/03/04 PHP
php去除二维数组的重复项方法
2015/11/03 PHP
Yii2.0预定义的别名功能小结
2016/07/04 PHP
通过php动态传数据到highcharts
2017/04/05 PHP
PHP下 Mongodb 连接远程数据库的实例代码
2017/08/30 PHP
Laravle eloquent 多对多模型关联实例详解
2017/11/22 PHP
JavaScript代码编写中各种各样的坑和填坑方法
2014/06/06 Javascript
[原创]推荐10款最热门jQuery UI框架
2014/08/19 Javascript
jquery增加和删除元素的方法
2015/01/14 Javascript
javascript实现秒表计时器的制作方法
2017/02/16 Javascript
JavaScript使用递归和循环实现阶乘的实例代码
2018/08/28 Javascript
vue中导出Excel表格的实现代码
2018/10/18 Javascript
node读写Excel操作实例分析
2019/11/06 Javascript
pandas对指定列进行填充的方法
2018/04/11 Python
python求解数组中两个字符串的最小距离
2018/09/27 Python
对python 中re.sub,replace(),strip()的区别详解
2019/07/22 Python
详解Python中正则匹配TAB及空格的小技巧
2019/07/26 Python
详解PyTorch中Tensor的高阶操作
2019/08/18 Python
Python列表切片常用操作实例解析
2019/12/16 Python
Python如何将函数值赋给变量
2020/04/28 Python
使用HTML5 IndexDB存储图像和文件的示例
2018/11/05 HTML / CSS
白宫黑市官网:White House Black Market
2016/11/17 全球购物
汽车技术服务英文求职信范文
2014/01/02 职场文书
初一体育教学反思
2014/01/29 职场文书
财务部总监岗位职责
2014/03/12 职场文书
学生期末评语大全
2014/04/30 职场文书
高职教师先进事迹材料
2014/08/24 职场文书
运动会广播稿200字(10篇)
2014/10/12 职场文书
工作会议简报
2015/07/20 职场文书
vue3如何优雅的实现移动端登录注册模块
2021/03/29 Vue.js
Django项目如何正确配置日志(logging)
2021/04/29 Python
golang gopm get -g -v 无法获取第三方库的解决方案
2021/05/05 Golang
Nginx配置根据url参数重定向
2022/04/11 Servers
Python经常使用的一些内置函数
2022/04/11 Python