Python OpenCV图像处理:读取、显示与保存完整指南

洛溪
洛溪
发布时间:2026-10-14| 5人浏览过
原创

本文详细介绍如何使用Python和OpenCV库进行图像的基本操作。涵盖cv2.imread的读取模式与参数、cv2.imshow的窗口显示及键盘绑定机制、cv2.imwrite的文件保存方法,以及解决OpenCV BGR与Matplotlib RGB色彩空间差异的技巧。

OpenCV简介与安装

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,则无限期等待按键。该函数也可用于检测特定按键,下文将讨论。

注意,除了处理键盘绑定事件外,此功能还处理许多其他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

OpenCV与Matplotlib结合使用

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 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。