您好,我尝试使用以下基本命令使用网络摄像头显示视频 在 opencv 2.4.1 中:-
int main()
{ cv::Mat san;
cv::VideoCapture san_cap(0);
while(1)
{
san_cap.read(san);
cv::imshow("gp",san);
if(cv::waitKey(0) >=0)
break;
}
return 1;
}
在编译过程中我没有收到任何错误,但是在运行我的解决方案时我的输出视频卡在固定帧上并且在我的控制台中出现以下错误:-
VIDIOC_QUERYMENU:参数无效
逐行调试我的代码,我发现我在这一行出错
if(cv::waitKey(0) >= 0)
这行可能有什么错误???
最佳答案
我不知道你想用 cv::waitKey()
做什么,但我认为如果你把它改成这个,你的例子应该可以工作。如前所述,waitKey 应设置为 10 之类的值,并且您应始终检查 videoCapture 是否实际打开。如果无法打开,则说明您的硬件/驱动程序/操作系统/OpenCV 安装有问题。
int main() {
int waitKeyValue = 10;
cv::Mat san;
cv::VideoCapture san_cap(0);
if (san_cap.isOpened()) {
while (1) {
san_cap.read(san);
cv::imshow("gp", san);
int key = cv::waitKey(waitKeyValue);
if(key!=-1)cout<<key<<endl;
if (key == 27 || key == 1048586) {
if (waitKeyValue == 10)waitKeyValue = 0;
else waitKeyValue = 10;
}
}
} else cout << "videoCapture not working" << endl;
return 1;
}
关于c++ - 使用 OpenCV 2.4.1 显示视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11528111/