当前位置: 首页 > 知识库问答 >
问题:

opencv2: Python: cv2.视频作家

南宫凯康
2023-03-14

为什么下面的代码不保存视频?另外,网络摄像头的帧速率是否必须与VideoWriter帧大小完全匹配?

import numpy as np
import cv2
import time

def videoaufzeichnung(video_wdth, video_hight, video_fps, seconds):
    cap = cv2.VideoCapture(6)
    cap.set(3, video_wdth) # wdth
    cap.set(4, video_hight) #hight 
    cap.set(5, video_fps) #hight 
    
    # Define the codec and create VideoWriter object
    fps = cap.get(5)
    fourcc = cv2.VideoWriter_fourcc(*'XVID')
    out = cv2.VideoWriter('output.avi', fourcc, video_fps, (video_wdth, video_hight))
    #out = cv2.VideoWriter('output.avi', fourcc, 20.0, (640, 480))
    
    start = time.time()
    zeitdauer = 0
    while(zeitdauer < seconds):
        end = time.time()
        zeitdauer = end - start
        ret, frame = cap.read()
        if ret == True:
            frame = cv2.flip(frame, 180)
            # write the flipped frame
            out.write(frame)
    
            cv2.imshow('frame', frame)
            if cv2.waitKey(1) & 0xFF == ord('q'):
                break
        else:
            break
    
    # Release everything if job is finished
    cap.release()
    out.release()
    cv2.destroyAllWindows()

videoaufzeichnung.videoaufzeichnung(1024, 720, 10, 30)

共有2个答案

乜钱明
2023-03-14

输出-帧

席俊达
2023-03-14

我怀疑您正在使用OpenCV的libv4l版本进行视频I/O。OpenCV的libv4lAPI中有一个错误,它阻止VideoCapture::set方法更改视频分辨率。参见链接1、2和3。如果您执行以下操作:

...
frame = cv2.flip(frame,180)
print(frame.shape[:2] # check to see frame size
out.write(frame)
...

您会注意到,帧大小没有被修改以匹配函数参数中提供的分辨率。克服此限制的一种方法是手动调整帧大小以匹配分辨率参数。

...
frame = cv2.flip(frame,180)
frame = cv2.resize(frame,(video_wdth,video_hight)) # manually resize frame
print(frame.shape[:2] # check to see frame size
out.write(frame)
...
 类似资料:
  • 我们有一台摄像机,记录高FPS率-163的视频。 谢谢!

  • 视频驱动负责实现 LCUI 应用程序与操作系统中的视窗系统的交互,这些交互包括向 LCUI 应用程序提供屏幕尺寸、将组件的信息和渲染结果同步到对应的窗口中,是 LCUI 的几个驱动模块中最为复杂的一个。 表面 表面(Surface)是窗口的抽象,也是 LCUI 的组件与操作系统的窗口进行交互的中间层,它屏蔽了各个操作系统中的视窗操作接口的差异和实现细节,使得 LCUI 应用程序只需要专注于将图形内

  • 拍摄或从手机相册中选择图片或视频 参数 Object object 属性 类型 默认值 必填 说明 count number 9 否 最多可以选择的文件个数 mediaType Array.<string> ['image', 'video'] 否 文件类型 注意:mediaType为枚举值 建议开发者使用时只传一个值 如果传入两个值 优先video sourceType Array.<strin

  • 主要内容:HTML 音频/视频 DOM 参考手册,HTML 音频/视频 方法,HTML 音频/视频属性,HTML 音频/视频事件HTML 音频/视频 DOM 参考手册 HTML5 DOM 为 <audio> 和 <video> 元素提供了方法、属性和事件。 这些方法、属性和事件允许您使用 JavaScript 来操作 <audio> 和 <video> 元素。 HTML 音频/视频 方法 方法 描述 addTextTrack() 向音频/视频添加新的文本轨道。 canPlayType() 检测浏

  • 我需要提取5年前公司YouTube频道上的活动。我遇到了一个YouTube分析API的问题,因为它限制了我最近30天的活动。我正在考虑接下来尝试YouTube数据API V3,但我想首先在这里问一下,是否有人知道如何从YouTube频道中提取深层历史数据。我感兴趣的主要是每天每个视频的浏览量。我正在使用谷歌云平台,需要将数据存储在BigQuery中。 https://developers.goog

  • 问题内容: 我想用上传到S3的视频制作缩略图,我知道如何使用Node.js和ffmpeg制作缩略图。 根据此论坛帖子,我可以添加库: ImageMagick是当前默认情况下唯一提供的外部库,但是在创建Lambda函数时,您可以在提供的zip文件中包括所有其他依赖项。请注意,如果这是本机库或可执行文件,则需要确保它在Amazon Linux上运行。 但是如何将静态ffmpeg二进制文件放在AWS L