cv2.cvtColor()/cv2.VideoCapture/cap.read()

1.cv2.cvtColor()

cv2.cvtColor(src, code[, dst[, dstCn]])

其中:

  • src:输入图像。
  • code:色彩空间转换代码。例如,cv2.COLOR_BGR2RGB 将一个 BGR 颜色空间的图像转换为 RGB 颜色空间的图像,cv2.COLOR_BGR2GRAY 将一个 BGR 颜色空间的图像转换为灰度图像。
  • dst:输出图像,可选参数。如果不提供此参数,则结果将存储在 src 中。
  • dstCn:输出图像中的通道数。如果此参数为零或与输入图像的通道数不同,则输出图像中的通道数将根据 code 参数自动确定。

例如,将一张 BGR 格式的图片转换为 RGB 格式,代码如下:

  • import cv2
    
    img = cv2.imread("image.jpg")  # 加载 BGR 格式图片
    img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)  # 转换为 RGB 格式
    

    这里,cv2.imread() 是 OpenCV 库中读取图像的函数。默认情况下,它读取的图像格式为 BGRcv2.cvtColor() 函数用于将 BGR 格式的图像转换为 RGB 格式。cv2.VideoCapture读出的帧格式默认是BGR格式,即每个像素由蓝色、绿色和红色三个分量组成。

2.cv2.VideoCapture

cv2.VideoCapture(index or filename, apiPreference=None)

其中参数 index 为设备索引或视频文件名,如果需要打开摄像头则使用设备索引,一般情况下设备索引为 0 或 1,如果需要打开视频文件则使用文件名。参数 apiPreference 表示视频编程接口的偏好,可以为 cv2.CAP_ANYcv2.CAP_VFWcv2.CAP_DSHOWcv2.CAP_MSMF 等。函数返回一个 cv2.VideoCapture 对象,通过该对象可以获取视频帧并进行处理。

示例:

import cv2

# 打开摄像头,设备索引为0
cap = cv2.VideoCapture(0)

while True:
    # 读取一帧视频
    ret, frame = cap.read()
    # 显示帧
    cv2.imshow('frame', frame)

    # 等待按键事件
    key = cv2.waitKey(1)
    if key == ord('q'):
        break

# 释放资源
cap.release()
cv2.destroyAllWindows()

3.cap.read()

ret, frame = cap.read()

cap.read() 是 OpenCV 中用来读取视频帧的函数,它会从 cv2.VideoCapture 对象 cap 中读取一帧视频数据,返回两个值:

  • ret:bool 类型,表示是否成功读取到一帧视频,成功为 True,失败为 False。
  • frame:numpy.ndarray 类型,表示读取到的一帧视频数据,它的格式一般是 BGR,可以使用 cv2.cvtColor 函数将其转换为其他格式,如 RGB。

4.

frame = torch.from_numpy(frame.transpose((2, 0, 1))).float()

在cv2中,读取到的视频帧一般是numpy数组格式,维度顺序为高度、宽度和通道数(H×W×C),而在PyTorch中,输入数据通常是张量格式,维度顺序为通道数、高度和宽度(C×H×W)。因此,我们需要将读取到的视频帧的维度顺序从(H×W×C)转换为(C×H×W)

这行代码将 frame 转换为 PyTorch 中的张量,并且将通道维度放在了最前面。具体来说,这里首先使用 numpy.transpose() 函数将通道维度(默认为最后一维)移到第一维,然后使用 torch.from_numpy() 函数将 numpy.ndarray 转换为 PyTorch 张量,最后将张量的类型转换为 float

该代码的作用是将 OpenCV 读取的视频帧转换为 PyTorch 张量,方便后续使用 PyTorch 进行模型训练等操作。

 

 

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值