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()
相关推荐
一点.点39 分钟前
SafeDrive:大语言模型实现自动驾驶汽车知识驱动和数据驱动的风险-敏感决策——论文阅读
人工智能·语言模型·自动驾驶
concisedistinct1 小时前
如何评价大语言模型架构 TTT ?模型应不应该永远“固定”在推理阶段?模型是否应当在使用时继续学习?
人工智能·语言模型·大模型
找了一圈尾巴1 小时前
AI Agent-基础认知与架构解析
人工智能·ai agent
jzwei0231 小时前
Transformer Decoder-Only 参数量计算
人工智能·深度学习·transformer
小言Ai工具箱1 小时前
PuLID:高效的图像变脸,可以通过文本提示编辑图像,通过指令修改人物属性,个性化文本到图像生成模型,支持AI变脸!艺术创作、虚拟形象定制以及影视制作
图像处理·人工智能·计算机视觉
白熊1881 小时前
【计算机视觉】基于深度学习的实时情绪检测系统:emotion-detection项目深度解析
人工智能·深度学习·计算机视觉
TextIn智能文档云平台1 小时前
PDF文档解析新突破:图表识别、公式还原、手写字体处理,让AI真正读懂复杂文档!
图像处理·人工智能·算法·自然语言处理·pdf·ocr
老任与码1 小时前
Spring AI(2)—— 发送消息的API
java·人工智能·spring ai
AI改变未来1 小时前
智慧城市新力量!AI如何助力社会治理创新?
人工智能·ai·智慧城市·ai应用
Panesle2 小时前
HunyuanCustom:文生视频框架论文速读
人工智能·算法·音视频·文生视频