OpenCV-Python图像读取、显示与保存详解

Felix
Felix
发布时间:2026-10-16 | 6人浏览过
原创

本文详细介绍OpenCV-Python中图像的基本操作,包括使用cv2.imread读取不同格式图像、cv2.imshow配合waitKey显示图像以及cv2.imwrite保存图像。重点解析读入标志、保存质量参数及图像翻转、复制和颜色空间转换等常用技巧,帮助开发者快速掌握基础图像处理流程。

掌握OpenCV-Python中图像读取、显示和保存的核心函数:cv2.imread()、cv2.imshow()和cv2.imwrite()。

一、读入图像

通过调用cv2.imread(filepath,flags)函数来加载一副图片。

  • filepath:指定需要读取的图片完整路径。
  • flags:定义读取图片时的标志位。
  • cv2.IMREAD_COLOR:默认值,表示以彩色模式读入图片,忽略Alpha通道。
  • cv2.IMREAD_GRAYSCALE:以灰度模式读入图片。
  • cv2.IMREAD_UNCHANGED:完整读入图片,包含Alpha通道信息。
import numpy as np
import cv2
img = cv2.imread('1.jpg',cv2.IMREAD_GRAYSCALE)

二、显示图像

利用cv2.imshow(wname,img)函数展示图像,其中第一个参数为窗口名称,第二个参数为待显示的图像对象(由imread加载所得),窗口尺寸会自动适配图片大小。

cv2.imshow('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
#dv2.destroyWindow(wname)

cv2.waitKey()用于等待键盘输入,单位毫秒,指定等待时间内若检测到按键则返回该键的ASCII码并继续执行。

若超时未检测到按键,则返回-1。传入0表示无限期等待。

若不调用waitKey,图像窗口将瞬间关闭,无法观察到显示结果。

  • cv2.destroyAllWindow()用于销毁所有打开的窗口。
  • cv2.destroyWindow(wname)用于销毁指定的窗口。

三、保存图像

使用cv2.imwrite(file,img,num)函数将图像保存至文件。

第一个参数为保存的文件名,第二个参数为待保存的图像数据。

可选的第三个参数针对特定格式设置:JPEG格式下表示图像质量,取值0-100的整数,默认值为95;PNG格式下表示压缩级别,默认值为3。

注意事项:

  • cv2.IMWRITE_JPEG_QUALITY类型为long,必须转换为int类型。
  • cv2.IMWRITE_PNG_COMPRESSION,取值范围0至9,数值越高图像文件越小。
cv2.imwrite('1.png',img, [int( cv2.IMWRITE_JPEG_QUALITY), 95])
cv2.imwrite('1.png',img, [int(cv2.IMWRITE_PNG_COMPRESSION), 9])

四、图片操作

1、利用cv2.flip(img,flipcode)函数翻转图像,flipcode控制翻转方向。

  • flipcode = 0:沿x轴翻转。
  • flipcode > 0:沿y轴翻转。
  • flipcode < 0:x轴和y轴同时翻转。
imgflip = cv2.flip(img,1)

2、复制图像

imgcopy = img.copy()

3、颜色空间转换

#彩色图像转为灰度图像
img2 = cv2.cvtColor(img,cv2.COLOR_RGB2GRAY) 
#灰度图像转为彩色图像
img3 = cv2.cvtColor(img,cv2.COLOR_GRAY2RGB)
# cv2.COLOR_X2Y,其中X,Y = RGB, BGR, GRAY, HSV, YCrCb, XYZ, Lab, Luv, HLS

示例

读取一副图像,按下's'键保存后退出,按其他任意键则直接退出且不保存。

import numpy as np
import cv2
img = cv2.imread('1.jpg',cv2.IMREAD_UNCHANGED)
cv2.imshow('image',img)
k = cv2.waitKey(0)
if k == ord('s'): # wait for 's' key to save and exit
    cv2.imwrite('1.png',img)
    cv2.destroyAllWindows()
else: 
    cv2.destroyAllWindows()

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持本站。

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表