我正在尝试以 60fps(最好是 1080p)的速度从 Logitech Brio 进行录制。它应该可以工作,因为我可以让它在 OBS 上工作,并且许多其他人已经实现了设置。
这是我用来尝试以这种速率捕获的代码:
// Do some grabbing
cv::VideoCapture video_capture;
video_capture.set(cv::CAP_PROP_FRAME_WIDTH, 1920);
video_capture.set(cv::CAP_PROP_FRAME_HEIGHT, 1080);
video_capture.set(cv::CAP_PROP_FPS, 60);
{
INFO_STREAM("Attempting to capture from device: " << device);
video_capture = cv::VideoCapture(device);
// Read a first frame often empty in camera
cv::Mat captured_image;
video_capture >> captured_image;
}
if (!video_capture.isOpened())
{
FATAL_STREAM("Failed to open video source");
return 1;
}
else INFO_STREAM("Device or file opened");
cv::Mat captured_image;
video_capture >> captured_image;
我应该为 Brio 做哪些不同的事情?
我遇到了同样的问题:相同的相机,无法更改分辨率或 fps。经过数小时的研究和挖掘互联网,我找到了一个解决方案:需要使用 DSHOW 并且需要改为从捕获设备 1(而不是 0)读取。以下代码供引用
fourcc = cv2.VideoWriter_fourcc('M','J','P','G')
cap = cv2.VideoCapture()
cap.open(cameraNumber + 1 + cv2.CAP_DSHOW)
cap.set(cv2.CAP_PROP_FOURCC, fourcc)
cap.set(cv2.CAP_PROP_FRAME_WIDTH, 1920)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 1080)
cap.set(cv2.CAP_PROP_FPS, 60)
抱歉,我只用 Python 做了这个,但我希望同样的解决方案适用于 C++我假设你可以按照
video_capture = cv::VideoCapture(device + 1 + cv::CAP_DSHOW);
我是一名优秀的程序员,十分优秀!