OpenCV - 图像的IO操作

目录

[1. 读取图像 - cv.imread()](#1. 读取图像 - cv.imread())

[2. 显示图像 - cv.imshow()](#2. 显示图像 - cv.imshow())

[3. 保存图像 - imwrite()](#3. 保存图像 - imwrite())

[4. 总结](#4. 总结)


1. 读取图像 - cv.imread()

在OpenCV图像处理中,**API指的是OpenCV库提供的应用程序接口,**本质是一系列封装好的函数、类或方法,专门用于调用OpenCV的图像处理的能力,无需开发者手动编写底层算法。简单来说,这些API就是OpenCV给开发者的"工具按钮"。

读取图像要使用的API为:

python 复制代码
cv.imread('图片路径', 标志)

参数1:要读取图像的路径

**•**参数2:读取方式的标志

  1. cv.IMREAD_COLOR 或 1:以彩色模式加载图像,任何图像的透明度都将被忽略,这里默认参数

  2. cv.IMREAD_GRAYSCALE 或 0:以灰度模式加载图像

  3. cv.IMREAD_UNCHANGED 或 -1:按原样读取,包括alpha通道的加载图像模式

可以使用1、0、-1来分别代表上面三个标志

参考代码:

python 复制代码
import numpy as np
import cv2 as cv
# 以灰度形式读取图像
img_gray = cv.imread('test1.jpg', 0)
# 以彩色模式读取
img_color = cv.imread('test1.jpg', 1)

注意:如果加载的路径有错误,不会报错,会返回一个None值

2. 显示图像 - cv.imshow()

这个函数会创建一个窗口,并在里面显示图片矩阵

显示图像要使用的API为:

python 复制代码
cv.imshow('窗口名称', 图像矩阵)

参数1:显示图像的窗口名称,以字符串类型表示

参数2:要加载的图像

注意:在调用显示图像的API后,要调用cv.waitKey()给图像绘制留下时间,否则窗口会出现无响应情况,并且图像无法显示出来。

参考代码:

python 复制代码
#opencv中显示
cv.imshow('image', img)
cv.waitKey(0)
cv.destroyAllWindows()

1. cv2.waitKey(0) :这是一个键盘绑定函数,非常重要!

参数 0 表示程序会无期限等待用户的按键操作

如果你写成 cv2.waitKey(5000),则表示等待5秒(5000毫秒)后自动关闭窗口。

2. cv2.destroyAllWindows():销毁我们创建的所有窗口。这是一个好的编程习惯,用来清理内存。

为什么必须要有waitKey

因为没有它,窗口会一闪而过,你根本来不及看。waitKey让程序暂停,等你按下任意键后再继续执行后面的销毁命令。

3. 保存图像 - imwrite()

这个函数将处理后的图像矩阵(NumPy数组)保存成一个图片文件。

保存图像要使用的API为:

python 复制代码
cv.imwrite('保存的文件名', 图像矩阵)

参数1:文件名要保存在哪里,OpenCV会根据你指定的扩展名(如.jpg, .png)来决定保存的格式。

参数1:要保存的图像,你要保存的那个图像变量(比如我们刚才读进来的img,或者处理过的灰度图img_gray)。

python 复制代码
cv.imwrite('test1.png', img)

4. 总结

python 复制代码
import numpy as np
import cv2 as cv
 
# 1. 读取图像
img = cv.inread('test1.jpg', 0)
 
# 2. 显示图像
cv.imshow('image', img)
cv.waitKey(0)

# 3. 保存图像
cv.imwrite('test2.png', img)

# 最后关闭所有窗口
cv.destroyAllWindows()
相关推荐
CoovallyAIHub3 小时前
Pipecat:构建实时语音 AI Agent 的开源编排框架,500ms 级端到端延迟
深度学习·算法·计算机视觉
CoovallyAIHub4 小时前
Energies | 8版YOLO对8版Transformer实测光伏缺陷检测,RF-DETR-Small综合胜出
深度学习·算法·计算机视觉
梦醒过后说珍重5 小时前
医学图像超分辨率:如何构建“教科书级”的模型评测与交互式可视化流水线?
opencv
CoovallyAIHub5 小时前
2.5GB 塞进浏览器:Mistral 开源实时语音识别,延迟不到半秒
深度学习·算法·计算机视觉
scott1985126 小时前
扩散模型之(十六)像素空间生成模型
人工智能·深度学习·计算机视觉·生成式
no_work6 小时前
yolo摄像头下的目标检测识别集合
人工智能·深度学习·yolo·目标检测·计算机视觉
格林威7 小时前
工业相机参数解析:曝光时间与运动模糊的“生死博弈”
c++·人工智能·数码相机·opencv·算法·计算机视觉·工业相机
zl_vslam9 小时前
SLAM中的非线性优-3D图优化之相对位姿Between Factor-四元数(十二)
人工智能·算法·计算机视觉
格林威10 小时前
工业相机图像采集:Grab Timeout 设置建议——拒绝“假死”与“丢帧”的黄金法则
开发语言·人工智能·数码相机·计算机视觉·c#·机器视觉·工业相机
如若12312 小时前
WSL2 启动报错“拒绝访问“ E_ACCESSDENIED 完整解决方案
人工智能·pytorch·python·深度学习·计算机视觉