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()
相关推荐
东临碣石822 分钟前
【英伟达AI论文】多模态大型语言模型的高效长视频理解
人工智能·语言模型·自然语言处理
我去热饭3 分钟前
【完整记录】基于腾讯云HAI+DeepSeek快速开发法律咨询(小律师)辅助平台过程
人工智能
CoovallyAIHub4 分钟前
一码难求的Manus,又对计算机视觉产生冲击?复刻开源版已在路上!
人工智能·深度学习·计算机视觉
是理不是里_5 分钟前
人工智能里的深度学习指的是什么?
人工智能·深度学习
AI_Echoes8 分钟前
用代理知识蒸馏方法克服错误的文档摄取和RAG策略
人工智能
泰迪智能科技019 分钟前
企业数据挖掘平台×DeepSeek强强联合,多种应用场景适用
人工智能·数据挖掘
X204619 分钟前
我的新开源Markify!专为 LLM 优化的开源文档解析神器,轻松破解 PDF 难题!融合MinerU和markitdown!
人工智能·llm
我感觉。30 分钟前
【机器学习chp11】聚类(K均值+高斯混合模型+层次聚类+基于密度的聚类DBSCAN+基于图的聚类+聚类的性能评价指标)
人工智能·机器学习·聚类·k均值
IT古董33 分钟前
【漫话机器学习系列】125.普拉托变换(Platt Scaling)
人工智能·机器学习