其他分享
首页 > 其他分享> > opencv学习笔记Day02:读取视频流

opencv学习笔记Day02:读取视频流

作者:互联网

文章目录

读取视频流

cv2.getcapture()用法,使用函数 cap.get(propId)来获得视频的一些参数信息。这里 propId 可以是 0 到 18 之间的任何整数。每一个数代表视频的一个属性:

"""capture video from camera"""
import numpy as np
import cv2


# create a VideoCapture object
cap=cv2.VideoCapture(0)

# create a video object
# FourCC是4字节码,确定视频的编码格式
fourcc=cv2.VideoWriter_fourcc(*'DIVX') 

# create a videowriter object 
# element:1>filename 2>specify FourCC encoding 3,4>play frequency and frame 5>isColor label,True is color map  
out=cv2.VideoWriter('output,mp4',fourcc,20.0,(640,480))

while(cap.isOpened()):
    # Capture frame by frame
    ret,frame=cap.read()
    if ret==True:
        # flip image
        frame=cv2.flip(frame,1)
        # write next video frame
        out.write(frame)
        cv2.imshow('frame',frame)

    
        # display the resulting frame
    
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break
    #else:
    #    break
    
# release the capture
cap.release()
out.release()
cv2.destroyAllWindows()

run,你就可以在屏幕中看到自己的样子,是灰度的图像,只有当你在鼠标点击video之后,按键敲入q之后,才能结束当前程序。

屏幕插入文本

"""read video"""
# encoding: utf-8
import cv2

# 声明一个 VideoCapture 对象。他的参数可以是设备的索引号,或者是一个视频文件。
# 设备索引号就是在指定要使用的摄像头。
# 一般的笔记本电脑都有内置摄像头。所以参数就是0。你可以通过设置成 1 或 者其他的来选择别的摄像头。
# 之后,你就可以一帧一帧的捕获视频了。
# 有时cap可能不能成功的初始化摄像头设备。这种情况下上面的代码会报错。你可以使用cap.isOpened(),
# 来检查是否成功初始化了。如果返回值是 True,那就没有问题。否则就要使用函数 cap.open()。
cap = cv2.VideoCapture(0)

# cap.get(propId)
# 你可以使用函数 cap.get(propId)来获得视频的一些参数信息。这里 propId 可以是 0 到 18 之间的任何整数。每一个数代表视频的一个属性
# cap.set(propId,value)
# 其中的一些值可以使用cap.set(propId,value)来修改,value就是你想要设置成的新值。

# 注意:当你的程序报错时,检查是否初始化成功
# cap.isOpened()
# cap.open():如果没有初始化成功,调用打开方法
while (cap.isOpened()):
# while (True):   # Capture(捕获) frame-by-frame
    # cap.read() # 返回两个值,一个布尔值(True/False)一个ndarray值。
    # 如果帧读取的是正确的,就是 True。
    # 所以最后你可以通过检查他的返回值来查看视频文件是否已经到了结尾。

    # ndarray是抓取、解码并返回下一个视频帧
    # <class 'numpy.ndarray'>,抓取不到返回为None
    ret,frame = cap.read()
    # 测试输出
    print(ret)
    print(frame)
    print(type(frame))

    # 在这里进行对每一帧的操作
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    #  Display the resulting frame
    print(gray.shape)

    # 字体设置
    font = cv2.FONT_HERSHEY_SIMPLEX
    img=cv2.putText(gray, 'video', (10, 180), font, 5, (255, 255, 255), 20)
    cv2.imshow('frame',img)
    cv2.waitKey(25)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

#  When everything done,release the capture
cap.release()
cv2.destroyAllWindows()

打开摄像头的功能还要读者自己去尝试,这里就不上图。。。函数的使用方法和参数已经大多作了注释,可以先看看。。

标签:cap,get,Day02,frame,视频流,cv2,opencv,VideoCapture,propId
来源: https://blog.csdn.net/qq_45416295/article/details/104722938