python - 尝试在不打开和显示窗口python的情况下录制网络摄像头视频
问题描述
您好,我遵循了https://www.codingforentrepreneurs.com/blog/how-to-record-video-in-opencv-python/的教程,但它在录制视频时会显示视频。我希望能够在不弹出此视频的情况下录制它,但它不起作用。这是教程中的代码:
import os
import cv2
filename = 'video.avi'
frames_per_second = 24.0
res = '720p'
# Set resolution for the video capture
# Function adapted from https://kirr.co/0l6qmh
def change_res(cap, width, height):
cap.set(3, width)
cap.set(4, height)
# Standard Video Dimensions Sizes
STD_DIMENSIONS = {
"480p": (640, 480),
"720p": (1280, 720),
"1080p": (1920, 1080),
"4k": (3840, 2160),
}
# grab resolution dimensions and set video capture to it.
def get_dims(cap, res='1080p'):
width, height = STD_DIMENSIONS["480p"]
if res in STD_DIMENSIONS:
width,height = STD_DIMENSIONS[res]
## change the current caputre device
## to the resulting resolution
change_res(cap, width, height)
return width, height
# Video Encoding, might require additional installs
# Types of Codes: http://www.fourcc.org/codecs.php
VIDEO_TYPE = {
'avi': cv2.VideoWriter_fourcc(*'XVID'),
#'mp4': cv2.VideoWriter_fourcc(*'H264'),
'mp4': cv2.VideoWriter_fourcc(*'XVID'),
}
def get_video_type(filename):
filename, ext = os.path.splitext(filename)
if ext in VIDEO_TYPE:
return VIDEO_TYPE[ext]
return VIDEO_TYPE['avi']
cap = cv2.VideoCapture(0)
out = cv2.VideoWriter(filename, get_video_type(filename), 25, get_dims(cap, res))
while True:
ret, frame = cap.read()
out.write(frame)
cv2.imshow('frame',frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
out.release()
cv2.destroyAllWindows()```
解决方案
推荐阅读
- c# - iText7 and C#, put a filled shape in a table cell
- android - Dagger 2 @Component.Builder dependencies missing setters error
- ios - 如何在苹果 IAP 中以编程方式向用户退款?
- java - hashcode() 与 toString().hashcode();
- r - 在R中选择一行数据框并按升序或降序排列列
- github - 在 AWX 上更新 Git 子模块
- google-chrome-extension - 在客户端操作之前获取页面的服务器响应
- python - 循环遍历 wx.TextCtrl.GetValue() 以启用处理重复单词时继续跟踪单词的位置
- splunk - Splunk 错误指定至少一个命名组
- angular - 从角度选项中提取 id