1.图像的读取、显示和保存

1.1 使用 OpenCV 读取与显示图像

一、读取图像

在 OpenCV 中,使用 imread() 函数读取图像,语法为:

cv2.imread(文件名, 标记符 (flag))

其中,文件名需要用单引号或双引号括起来。标记符默认值为 1,表示读入彩色图像(通道顺序为 BGR)。若标记符设为 0,则读入灰度图。

示例代码:

import cv2

# 以彩色模式读取图像
img1 = cv2.imread('001.bmp')

# 以灰度模式读取图像
img2 = cv2.imread('001.bmp', 0)

# 输出图像的形状信息
print(img1.shape, ' ', img2.shape)

二、显示图像

使用 OpenCV 显示图像的格式为:

cv2.imshow(显示名称, 图像数据)

其中,显示名称由用户自定义(不能为中文),需用单引号或双引号括起来。

通常,完成图片显示时,还需搭配 waitKey()destroyAllWindows() 函数。

  • waitKey() 是一个键盘绑定函数,时间尺度为毫秒级。设为 0 时,表示无限等待,直到用户关闭显示窗口。

  • destroyAllWindows() 用于关闭所有打开的窗口。若只需关闭特定窗口,可使用 destroyWindow(),在括号中指定窗口名。

示例代码:

import cv2

# 读取图像
img = cv2.imread('001.bmp')

# 显示图像
cv2.imshow("001", img)

# 等待用户操作
cv2.waitKey(0)

# 关闭所有窗口
cv2.destroyAllWindows()

 

1.2 使用 Matplotlib 读取与显示图像

一、读取图像

在 Matplotlib 中,利用 matplotlib.pyplot 模块的 imread() 函数实现图像数据读取,格式如下:

 

matplotlib.pyplot.imread("文件名称", 格式(format))

与 OpenCV 的读取方式不同,Matplotlib.pyplot 会根据图片本身特性自动判断是彩色图还是灰度图。

示例代码:

import matplotlib.pyplot as plt

# 读取图像
img = plt.imread('002.bmp')

二、显示图像

使用 matplotlib.pyplot 模块中的 imshow() 函数实现图像显示,常用格式为:

matplotlib.pyplot.imshow(文件名, 颜色图谱(cmap))

最后,需调用 show() 函数完成图像的实际显示。

完整示例代码:

import matplotlib.pyplot as plt

# 读取图像
img = plt.imread('002.bmp')

# 显示图像
plt.imshow(img)

# 添加图像标题
plt.title('002')

# 显示图像
plt.show()

 

1.3 图像的保存

图像的保存可以使用以下两种方法:

  • 使用 OpenCV 的 cv2.imwrite() 函数,格式为:cv2.imwrite("文件名", 图像数据)

  • 使用 Matplotlib 的 matplotlib.pyplot.imsave() 函数,格式为:matplotlib.pyplot.imsave("文件名", 图像数据)

视频读取与显示

以下是一个用于视频读取和显示的示例代码:

import cv2

# 初始化视频捕获对象,参数0表示使用笔记本摄像头,也可以替换为视频文件路径
capture = cv2.VideoCapture(0)

# 设置视频分辨率(可选)
capture.set(cv2.CAP_PROP_FRAME_WIDTH, 1280)
capture.set(cv2.CAP_PROP_FRAME_HEIGHT, 960)

# 循环读取视频帧
while True:
    # 读取视频帧,ref为返回值,frame为当前帧数据
    ref, frame = capture.read()
    
    # 复制当前帧用于后续处理
    source = frame.copy()
    
    # 显示原始彩色图像
    cv2.imshow("captureSrc", source)
    
    # 将当前帧转换为灰度图像并显示
    gray_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    cv2.imshow('captureGray', gray_frame)
    
    # 等待用户按键,若按下ESC键(键值为27),则退出循环
    if cv2.waitKey(1) == 27:
        break

# 释放视频捕获资源
capture.release()

# 关闭所有OpenCV窗口
cv2.destroyAllWindows()

# 保存最后一帧彩色图像到硬盘
cv2.imwrite('img.jpg', source)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值