摄像头采集画面改为内置视频

如何把程序调用摄像头而接收到的拍摄的画面,变成我的电脑内存储的视频。

就是在你接收拍摄画面的时候,保存到你的电脑设备里面。根据拍摄摄像头的api 找到对应的sdk 编写代码

用OBS就可以实现,可以了解下,里面有个虚拟摄像头。直接百度obs就行了。

你是用什么程序打开摄像头和电脑里的视频文件视频的呢?
建议使用OpenCV,即可以打开摄像头视频,也可以打开电脑存储的视频文件视频,也就能在它们之间来回切换了。
具体可以参考我写的这篇文章:
Win10系统,用C++调用OpenCV接口,播放本地视频文件,播放本地和网络摄像头_来灵的博客-CSDN博客_opencv 打开本地视频
Python调用OpenCV接口播放本地视频文件、本地和网络摄像头_来灵的博客-CSDN博客

视频文件是由一系列图像组成的,视频的每一帧都是一幅图像。
视频读取的基本步骤为:
(1)创建视频读取/捕获对象;
(2)获取视频的一帧图像;
(3)检查视频获取是否成功;
(4)释放视频读取/捕获对象。
保存视频文件的基本步骤为:
(1)设置写入视频的格式和参数;
(2)创建视频写入对象;
(3)写入一帧图像;
(4)释放视频写入对象。
OpenCV提供了VideoCapture类和VideoWriter类处理视频流,既可以处理视频文件,也可以处理摄像头设备。
给你一个例程:


# 【0106】视频文件的读取、播放和保存
import cv2 as cv

if __name__ == '__main__':
    # 创建视频读取/捕获对象
    vedioRead = "../images/nasa_m420p.mov"  # 读取视频文件的路径
    capRead = cv.VideoCapture(vedioRead)  # 实例化 VideoCapture 类

    # 设置写入视频图像的高,宽,帧速率和总帧数
    width = int(capRead.get(cv.CAP_PROP_FRAME_WIDTH))  # 960
    height = int(capRead.get(cv.CAP_PROP_FRAME_HEIGHT))  # 540
    fps = round(capRead.get(cv.CAP_PROP_FPS))  # 30
    frameCount = int(capRead.get(cv.CAP_PROP_FRAME_COUNT))  # 1826
    print(height, width, fps, frameCount)

    # 创建写入视频对象
    # fourcc = cv.VideoWriter_fourcc('X', 'V', 'I', 'D')  # 编码器设置 XVID
    fourcc = cv.VideoWriter_fourcc(*'XVID')  # 'X','V','I','D' 简写为 *'XVID'
    vedioWrite = "../images/nasa.avi"  # 写入视频文件的路径
    capWrite = cv.VideoWriter(vedioWrite, fourcc, fps, (width, height))

    # 读取视频文件,抽帧写入视频文件
    frameNum = 0  # 视频帧数初值
    timef = 30  # 设置抽帧间隔
    while capRead.isOpened():  # 检查视频捕获是否成功
        ret, frame = capRead.read()  # 读取下一帧视频图像
        if ret is True:
            frameNum += 1  # 读取视频的帧数
            cv.imshow(vedioRead, frame)  # 播放视频图像
            if (frameNum % timef == 0):  # 判断抽帧条件
                capWrite.write(frame)  # 将当前帧写入视频文件
            if cv.waitKey(1) & 0xFF == ord('q'):  # 按 'q' 退出
                break
        else:
            print("Can't receive frame at frameNum {}".format(frameNum))
            break

    capRead.release()  # 关闭读取视频文件
    capWrite.release()  # 关闭视频写入对象
    cv.destroyAllWindows()  # 关闭显示窗口