我想同时拍摄视频和照片.
我有两个按钮.
1.当用户点击一个时,它必须拍摄视频和
2.另一个按钮然后它必须停止录制视频和拍照.
现在我正在尝试录音机和相机,但它不能正常工作,
也注意不是两个在同一时间我想一个接一个地做反之亦然..
任何人都可以告诉我一个好主意.
谢谢.
我正在构建一个OpenCV应用程序,它从相机中捕获视频,并在删除背景后将其覆盖在另一个视频上.
我无法达到合理的速度,因为它以大约1 fps的速度播放输出,而我的背景移除工作速度为3fps.
有没有办法以正常速度显示背景视频并以3fps覆盖已处理的视频?
我试着评论我的代码,我意识到问题主要在于渲染部分本身.我尝试显示视频和我的网络摄像头,我注意到用openCV显示的实际fps和视频的fps有所下降.
这是示例代码:
void main()
{
CvCapture* capture, *Vcap;
capture = cvCaptureFromCAM(0);
if(!capture)
{
printf("Video Load Error");
}
Vcap = cvCaptureFromAVI("bgDemo.mp4");
//printf("\nEntered BGR");
if(!Vcap)
{
printf("Video Load Error");
}
while(1)
{
IplImage* src = cvQueryFrame(Vcap);
if(!src)
{
Vcap = cvCaptureFromAVI("bgDemo.mp4");
continue;
}
IplImage* bck1 = cvCreateImage(cvGetSize(src),8,3);
cvResize(src,bck1,CV_INTER_LINEAR);
cvShowImage("BCK",bck1);
cvWaitKey(1);
}
}
Run Code Online (Sandbox Code Playgroud) 我有一个多播 UDP 视频流,我需要我的 OPenCV (Emgu) 2.4.x 应用程序来捕获和处理(“客户端”)。
在客户端,我可以使用 VLC(udp://xx.yy.zz.aaa:1234,但是我的应用程序无法捕获这个 udp 流。我的代码很简单(
Capture cap = new Capture ("udp://@212.1.1.1:1234");
Run Code Online (Sandbox Code Playgroud)
ps 我已经尝试过并且 2/o @ 也在该地址上尝试过 rtp。没运气 :-/
OpenCV 是否直接允许“捕获”UDP 流?或者我是否需要在客户端上运行 VLC 以将视频重新传输为 rtp 或 http 或其他......?
谢谢。
如何才能检测连接的视频设备能够提供的最大分辨率?
我不想捕获任何东西,只需从v4l2中检索此信息.
谢谢!
我正在尝试从 ip 摄像头捕获视频并将其保存为 avi 视频文件。同时脚本将包含人脸的帧保存为 jpeg 文件。当脚本执行这些工作时,cpu 使用率约为 100%。因此,我只想在面部检测上限制帧速率。
我的代码是:
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
now = datetime.datetime.now()
strtime = str(now)
cap = cv2.VideoCapture('rtsp://root:root@10.10.10.56:554/stream/profile1=r')
fourcc = cv2.VideoWriter_fourcc(*'XVID')
out = cv2.VideoWriter('1/video/%s.avi' % strtime,fourcc, 10.0 , (960,540))
if cap.isOpened():
while(True):
if cap.set(cv2.CAP_PROP_FPS,4):
try:
ret, frame = cap.read()
if ret==True:
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
out.write(frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
faces = face_cascade.detectMultiScale(gray,
scaleFactor=1.5,
minNeighbors=6,
minSize=(30,30))
for (x,y,w,h) in faces:
cv2.rectangle(frame,(x,y),(x+w,y+h),(255,0,0),
cv2.imwrite('1/frames/%sf%s.jpg'%(now,str(cap.get(cv2.CAP_PROP_POS_FRAMES))), frame)
cv2.imshow('frame', frame)
except KeyboardInterrupt:
cap.release()
out.release()
cv2.destroyAllWindows()
sys.exit(0)
pass
else: …
Run Code Online (Sandbox Code Playgroud) 我有一个完美运行的 gstreamer 管道,它可以接收摄像头流,将其编码为 H.264 视频,将其保存到一个文件中,并将其显示在屏幕上,如下所示:
gst-launch-1.0 -v autovideosrc ! tee name = t ! queue ! omxh264enc !
'video/x-h264, stream-format=(string)byte-stream' ! h264parse ! qtmux !
filesink location=test.mp4 t. ! queue ! videoscale ! video/x-raw,
width=480,height=270 ! xvimagesink -e sync=false
Run Code Online (Sandbox Code Playgroud)
现在,我正在尝试做一些更简单的事情,只需将流记录到文件中(不显示在屏幕上),这似乎不起作用!它写入文件但无法播放。到目前为止我尝试过的是:
gst-launch-1.0 -v autovideosrc ! queue ! omxh264enc ! 'video/x-h264,
stream-format=(string)byte-stream' ! h264parse ! qtmux ! filesink
location=test.mp4 sync=false
Run Code Online (Sandbox Code Playgroud)
我也可以删除队列元素,但结果相同:
gst-launch-1.0 -v autovideosrc ! omxh264enc ! 'video/x-h264,
stream-format=(string)byte-stream' ! h264parse ! qtmux ! filesink
location=test.mp4 sync=false
Run Code Online (Sandbox Code Playgroud)
它似乎没有给出任何错误,但只是没有将有效的流写入我的文件接收器。
在 Windows 10 build 10.1607.14393.10(又称周年纪念版)上,我无法再获取 MJPG 捕获流。曾经是 MJPG 和 YUY2 分辨率,现在我在 DirectShow(内核流)和 Media Foundation MJPG 中仅获得 YUY2,然后在 IBaseFilter 源连接到任何内容之前将媒体类型转换为 NV12。尝试使用不同相机的多个系统。有什么想法可能是错的吗?
640x480 @30 YUY2
...
640x480 @30 MJPG <- gone
...
DirectShow:
com_t<IAMStreamConfig> sc;
if_failed_return_result(camera_output_pin->QueryInterface(&sc));
int number_of_capabilities = 0;
int capability_size = 0;
if_failed_return(sc->GetNumberOfCapabilities(&number_of_capabilities, &capability_size), -1);
for (int i = 0; i < number_of_capabilities && k < count; i++) {
VIDEO_STREAM_CONFIG_CAPS scc;
assert(sizeof(scc) == capability_size);
AM_MEDIA_TYPE* mt = null;
if_failed_return(sc->GetStreamCaps(i, &mt, (BYTE*)&scc), -1);
...
Run Code Online (Sandbox Code Playgroud)
在MMF中:
640x480 @30 YUY2
...
640x480 @30 …
Run Code Online (Sandbox Code Playgroud) webcam directshow video-capture ms-media-foundation windows-10
我使用 AVFoundation 创建一个自定义视频录制应用程序。问题是当录制达到 13 秒长度时,声音从结果视频中完全消失。我用代码设置相机:
private func configure(_ mode: CameraMode) {
guard let devices = AVCaptureDevice.devices(withMediaType: AVMediaTypeVideo) as? [AVCaptureDevice] else {return}
for device in devices {
if device.position == .back {
do {
let input = try AVCaptureDeviceInput(device: device)
if session.canAddInput(input) {
session.addInput(input)
}
configureVideoOutput(for: device)
session.startRunning()
} catch (let error) {
print(error)
}
}
}
}
private func configureVideoOutput(for device: AVCaptureDevice) {
if device.hasMediaType(AVMediaTypeVideo) && session.canAddOutput(sessionVideoOutput) {
session.beginConfiguration()
session.sessionPreset = AVCaptureSessionPresetHigh
guard let devices = AVCaptureDevice.devices(withMediaType: AVMediaTypeAudio) as? [AVCaptureDevice] …
Run Code Online (Sandbox Code Playgroud) AVCaptureMovieFileOutput
当我的应用程序启动时,我试图使用将设备摄像头录制到视频文件中。令我非常沮丧的是,我无法让它工作:
我可以AVCaptureVideoPreviewLayer
很好地查看视频源,所以我的会话连接正确。
它将输出到的文件尚不存在,并且位于可写目录中。
API 调用或AVCaptureSessionRuntimeError
通知未返回任何错误。
我的AVCaptureFileOutputRecordingDelegate
方法根本没有被调用。
我在示例代码之后尝试了示例代码,更令人抓狂的是其中一些似乎确实有效。
我想并排使用两个视频来编写一个视频文件,但最终输出文件在任何视频播放器中都无法播放。这是我的代码:
from __future__ import print_function
import numpy as np
import argparse
import cv2
import tkinter as tk
from tkinter import filedialog
import os
import os.path
ap = argparse.ArgumentParser()
ap.add_argument("-o", "--output", type=str, default="sample.avi",
help="path to output video file")
ap.add_argument("-f", "--fps", type=int, default=100.0,
help="FPS of output video")
ap.add_argument("-c", "--codec", type=str, default="MJPG",
help="codec of output video")
args = vars(ap.parse_args())
root = tk.Tk()
root.withdraw()
source_video = filedialog.askopenfilename(title="Select file")
sign = filedialog.askopenfilename(title="Select file")
print("[INFO] Capturing video...")
cap1 = cv2.VideoCapture(source_video)
cap2 = cv2.VideoCapture(sign)
fourcc = cv2.VideoWriter_fourcc(*args["codec"]) …
Run Code Online (Sandbox Code Playgroud) video-capture ×10
opencv ×4
avfoundation ×2
linux ×2
android ×1
c ×1
directshow ×1
emgucv ×1
gstreamer ×1
ios ×1
python ×1
python-3.x ×1
recorder ×1
resolution ×1
swift ×1
udp ×1
v4l2 ×1
video ×1
visual-c++ ×1
webcam ×1
windows-10 ×1