OpenCV计算机视觉 01 图像与视频的读取操作&颜色通道

目录

下载相关模块与导入

读取图片

读取图片的灰度图

视频文件读取

提取RGB颜色通道

下载相关模块与导入

终端下载镜像源模块

python 复制代码
pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple

导入模块

python 复制代码
import cv2  # 读取的格式是BGR  numpy
import numpy as np
读取图片
python 复制代码
import cv2
import numpy as np
a = cv2.imread('opencv.png')
print(a)
cv2.imshow('a1',a)
b = cv2.waitKey(0)
print(b)
cv2.destroyAllWindows()
print(f'shape:{a.shape}')
print(f'dtype:{a.dtype}')
print(f'size:{a.size}')
读取图片的灰度图
python 复制代码
import cv2
b = cv2.imread('opencv.png',cv2.IMREAD_GRAYSCALE)
cv2.imshow('grey',b)
w = cv2.waitKey(0)
print(w)
cv2.imwrite('at1_gry.png',b)
print("图像形状 (shape):", b.shape)
print("图像数据类型 (dtype):", b.dtype)
print("图像大小 (size):", b.size)
'''图片保存'''
cv2.imwrite(r'opencv_grey.png',b)
视频文件读取
python 复制代码
import cv2
# 打开视频文件
video_capture = cv2.VideoCapture('转场.mp4')
# 检查视频是否成功打开
if not video_capture.isOpened():
    print("无法打开视频文件")
    exit()
# 循环读取视频帧
while True:
    # 逐帧读取视频
    ret, frame = video_capture.read()  #ret是布尔值,表示是否成功读取了帧,frame 是读取到的帧
    # 检查是否成功读取帧
    if not ret:
        break
    # 将图像从一种颜色空间转换为另一种颜色空间。
    frame=cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
    # 显示当前帧
    cv2.imshow('Video', frame)
    # 检查用户是否按下 'esc' 键,如果是则退出循环
    if cv2.waitKey(100) == 27:
        break
# 释放资源
video_capture.release()
cv2.destroyAllWindows()
python 复制代码
'''ROI:区域感兴趣(Region of Interest)的缩写。它指的是图像或视频中感兴趣的特定区域,需要进行分析或处理。
ROI可以由用户手动选择,也可以使用计算机视觉算法自动检测。'''
a = cv2.imread(r'opencv.png')
b = a[100:300,100:300]  #直接对numpy数组进行切片
cv2.imshow('yuantu',a)
cv2.imshow('qiepian',b)
cv2.waitKey(100000)
cv2.destroyAllWindows()
提取RGB颜色通道
python 复制代码
import cv2
# 1. 读取图像
a = cv2.imread(r'opencv.png')
# 2. 提取颜色通道
a1 = a[:, :, 0]  # 蓝色通道(B通道)
a2 = a[:, :, 1]  # 绿色通道(G通道)
a3 = a[:, :, 2]  # 红色通道(R通道)
# 或者使用 cv2.split() 来分离颜色通道
b, g, r = cv2.split(a)
# b 包含蓝色通道
# g 包含绿色通道
# r 包含红色通道
​
cv2.imshow('result1', b)
# 4. 设置窗口显示时间,单位为毫秒(这里设置为100秒,可以根据需要调整)
cv2.waitKey(100000)
# 5. 关闭所有窗口
cv2.destroyAllWindows()
复制代码
注意:我们这里是显示蓝色通道的图像,但是所显示的图片确实灰色的,那是因为只显示蓝色通道时,
实际上是将蓝色通道作为亮度值,而将绿色和红色通道设置为默认的最大值,也就是255。这会导致图像呈现为灰色。
想要展示只包含蓝色通道信息的彩色图像,可以将图像中的绿色通道和红色通道设为0,即移除绿色和红色,只保留蓝色。
python 复制代码
import cv2
a = cv2.imread(r'opencv.png')
# 复制原始图像以避免更改原始图像
a_new = a.copy()
a_new[:, :, 1] = 0  # 绿色通道设为0
a_new[:, :, 2] = 0  # 红色通道设为0
# 创建一个窗口来显示修改后的图像,并将其命名为'result'
cv2.imshow('result2', a_new)
cv2.waitKey(100000)
cv2.destroyAllWindows()
复制代码
合并颜色通道
python 复制代码
import cv2
# 1. 读取图像
a = cv2.imread(r'opencv.png')
# 2. 提取颜色通道
a1 = a[:, :, 0]  # 蓝色通道(B通道)
a2 = a[:, :, 1]  # 绿色通道(G通道)
a3 = a[:, :, 2]  # 红色通道(R通道)
# 或者使用 cv2.split() 来分离颜色通道
b, g, r = cv2.split(a)
# b 包含蓝色通道  g 包含绿色通道  r 包含红色通道
# 使用cv2.merge()函数将三个通道重新合并成一个图像
img = cv2.merge((b, g, r))
# img = cv2.merge((a1,a2,a3)) 或者使用这行代码
cv2.imshow('result3', img)
cv2.waitKey(100000)
cv2.destroyAllWindows()
相关推荐
一瞬祈望6 小时前
⭐ 深度学习入门体系(第 20 篇): 如何从 0 到 1 训练一个稳定、可复现的深度学习模型
人工智能·深度学习
lkbhua莱克瓦246 小时前
RAG到RGA:生成式AI的范式演进
人工智能·llm·prompt·大语言模型·rag·rga
youcans_6 小时前
【DeepSeek论文精读】17. 通过可扩展查找的条件记忆:大语言模型稀疏化的新维度
论文阅读·人工智能·语言模型·长短时记忆网络·稀疏
dagouaofei6 小时前
AI 生成 2026 年工作计划 PPT,模板与结构能力对比
人工智能·python·powerpoint
燕双嘤7 小时前
深度学习:激活函数,优化器
人工智能·深度学习
蜡笔小新..7 小时前
从零学习 RL :初识强化学习
人工智能·强化学习·rl
m0_603888717 小时前
More Images, More Problems A Controlled Analysis of VLM Failure Modes
人工智能·算法·机器学习·ai·论文速览
ICscholar7 小时前
ROC曲线解读
人工智能·机器学习
丝斯20117 小时前
AI学习笔记整理(44)——大规模预训练模型数据处理管道Pipeline
人工智能·笔记·学习
向量引擎小橙7 小时前
Sora开启“世界模拟器”新纪元:谁将定义AI的物理世界?
人工智能