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()
相关推荐
moonsims1 分钟前
自主高性价比、高精度车规级姿态感知、倾角感知模组-应用消费级无人机、自动驾驶、机器人、智能制造、基础设施、智能穿戴等
人工智能
TMO Group 探谋网络科技3 分钟前
AI Agent工作原理:如何连接数据、决策与行动,助力企业数字化转型?
大数据·人工智能·ai
coder-pig5 分钟前
Holopix AI + TRAE SOLO | 复刻 GBA 游戏-“口袋妖怪“
人工智能·游戏
利剑 -~7 分钟前
Spring AI Alibaba 1.1版本
java·人工智能·spring
泰迪智能科技019 分钟前
分享|智能视觉分拣教学实训沙盘:高校AI视觉与工业应用的教学桥梁
人工智能
javpy13 分钟前
AI生成 Python小游戏 怪物防御战???
人工智能·python·pygame
半问18 分钟前
付费投流硬控互联网
人工智能·算法·互联网·推荐·流量
爱笑的眼睛1119 分钟前
超越SIFT与ORB:深入OpenCV特征检测API的设计哲学与高阶实践
java·人工智能·python·ai
西岸行者22 分钟前
学习Hammerstein-Wiener 模型,以及在回声消除场景中的应用
人工智能·学习·算法
拉姆哥的小屋25 分钟前
突破传统PINN瓶颈:基于LSTM-格林函数的3D瞬态温度场智能预测新方法
人工智能·3d·lstm