OpenCV 无法识别网络摄像头,但 mplayer 成功
OpenCV fails to recognize webcam, but mplayer succeeds
作为大型项目的第一步,我尝试使用 OpenCV 显示网络摄像头的图像:
#include <stdlib.h>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
int
main()
{
cv::VideoCapture cap(-1);
if (!cap.isOpened())
exit(EXIT_FAILURE);
cv::Mat frame;
bool done = false;
while (!done) {
cap >> frame;
cv::imshow("webcam", frame);
done = (cv::waitKey(30) >= 0);
}
return EXIT_SUCCESS;
}
这个returns一个错误代码(!cap.isOpened()
通过,用gdb确认)。最初我有 0
而不是 -1
。搜索本站时提示-1
,但无济于事。正如另一位用户所建议的,我也尝试了 1
到 3
。
我可以使用 mplayer 显示我的网络摄像头,更具体地说 mplayer tv:// -tv driver=v4l2
。
v4l2
是 "video for linux" 驱动程序。我注意到 OpenCV 可以通过使用 -DWITH_V4L
和 -DWITH_LIBV4L
(Gentoo 中的 v4l
USE 标志)进行编译来安装此类驱动程序。用它重新编译OpenCV后,成功识别网络摄像头。显示图像似乎需要 GTK 支持。
作为大型项目的第一步,我尝试使用 OpenCV 显示网络摄像头的图像:
#include <stdlib.h>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
int
main()
{
cv::VideoCapture cap(-1);
if (!cap.isOpened())
exit(EXIT_FAILURE);
cv::Mat frame;
bool done = false;
while (!done) {
cap >> frame;
cv::imshow("webcam", frame);
done = (cv::waitKey(30) >= 0);
}
return EXIT_SUCCESS;
}
这个returns一个错误代码(!cap.isOpened()
通过,用gdb确认)。最初我有 0
而不是 -1
。搜索本站时提示-1
,但无济于事。正如另一位用户所建议的,我也尝试了 1
到 3
。
我可以使用 mplayer 显示我的网络摄像头,更具体地说 mplayer tv:// -tv driver=v4l2
。
v4l2
是 "video for linux" 驱动程序。我注意到 OpenCV 可以通过使用 -DWITH_V4L
和 -DWITH_LIBV4L
(Gentoo 中的 v4l
USE 标志)进行编译来安装此类驱动程序。用它重新编译OpenCV后,成功识别网络摄像头。显示图像似乎需要 GTK 支持。