首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用C++以60fps的速度流式传输Logitec C922

使用C++以60fps的速度流式传输Logitec C922
EN

Stack Overflow用户
提问于 2017-08-25 22:43:02
回答 1查看 2.2K关注 0票数 2

我想用C++的网络摄像头(如罗技C922)捕捉图像。有没有人能成功地用60fps和720p的摄像头捕捉到图像?我阅读了下面线程中的代码并添加了"cap.set(CAP_PROP_FPS,60)",但帧速率保持在30fps左右。How to set camera fps in opencv?

然后我发布了同样的问题,但论坛正在维护中。http://answers.opencv.org/question/172992/streaming-logitec-c922-at-60fps-with-c/我将两个建议的代码都添加到了我的代码中。结果表明,fps值为33.3。在我使用cap.set(CAP_PROP_EXPOSURE,-5)的情况下,FPS是60.0,因为我在办公室,晚上在这里。我尝试使用较低的CAP_PROP_EXPOSURE值(例如-10),但是fps没有改变。使用imshow显示的图像在60fps时没有明显更新。有什么我能做的吗?

这是我使用的代码。

代码语言:javascript
运行
复制
VideoCapture cap(0); //capture the video from web cam

if (!cap.isOpened())  // if not success, exit program
{
    cout << "Cannot open the web cam" << endl;
    return -1;
}
cap.set(CV_CAP_PROP_FOURCC, CV_FOURCC('M','J','P','G'));
cap.set(CAP_PROP_FPS, 60);
cap.set(CAP_PROP_EXPOSURE, -5);
cap.set(CV_CAP_PROP_FRAME_WIDTH, 1280);
cap.set(CV_CAP_PROP_FRAME_HEIGHT, 720);

cout << cap.get(CAP_PROP_FPS) << endl;

cvNamedWindow("img");
time_t cap_start, cap_end;
Mat frame;
double MAX_FRAME_NUM = 100;
time(&cap_start);
for (int n = 0; n < MAX_FRAME_NUM; n++) {
    cap >> frame;
}
time(&cap_end);
double fps = MAX_FRAME_NUM / difftime(cap_end, cap_start);
cout << "fps:" << fps << endl;
cv::waitKey(0);

环境信息OpenCv: 3.3.0操作系统: Windows 10专业版集成开发环境: Visual Studio 2017处理器: i7-7560U内存16 USB: 3.0

致以最好的问候,gellpro

EN

回答 1

Stack Overflow用户

发布于 2018-05-16 22:27:30

我偶然发现这个相机也有同样的问题。我的环境是Ubuntu18.04,Python3.6.5和OpenCV 3.4。

我发现你的第一个链接中的this solution正在工作:

代码语言:javascript
运行
复制
cap.set(CV_CAP_PROP_FOURCC, CV_FOURCC('M', 'J', 'P', 'G'));

对于python,我使用的代码是:

代码语言:javascript
运行
复制
cap = cv2.VideoCapture(0)
cap.set(cv2.CAP_PROP_FOURCC, cv2.VideoWriter_fourcc('M','J','P','G'))
cap.set(cv2.CAP_PROP_FPS, 60)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45883952

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档