转:虚拟机Ubuntu打开摄像头失败及OpenCV打开摄像头超时的问题

虚拟机Ubuntu打开摄像头失败及OpenCV打开摄像头超时的问题

 转载来自:https://blog.csdn.net/qq_30155503/article/details/79460420

平台版本:Ubuntu 14.04 + Opencv 3.4.0

    最近着手用opencv实现人脸识别,遇到一些问题:在虚拟机Ubuntu上安装好opencv库后,编译官方自带的示例samples/cpp/example_cmake成功,运行竟然失败!!!

错误输出:

Built with OpenCV 3.4.0
Capture is opened
select timeout
select timeout
OpenCV Error: Assertion failed (total() == 0 || data != __null) in Mat, file /root/library/opencv/opencv-3.4.0/modules/core/include/opencv2/core/mat.inl.hpp, line 500
terminate called after throwing an instance of 'cv::Exception'
  what():  /root/library/opencv/opencv-3.4.0/modules/core/include/opencv2/core/mat.inl.hpp:500: error: (-215) total() == 0 || data != __null in function Mat

已放弃 (核心已转储)

打开摄像头超时!!!

这究竟是什么原因呢?

首先,当然是百度一下,竟然找不到解决方法。算了,还是靠自己好。

问题的出现,一般不会因为代码问题,毕竟是官方给出来的示例啊,有足够的理由相信它是靠谱的。

那可能是:库的安装问题?摄像头问题?其他???

若是库问题的话,自行找个简单可靠的HelloWorld程序来测试下。

这里我直接预言,是摄像头问题!

一、虚拟机Ubuntu检测摄像头是否已正常插入

    插上USB摄像头,在/dev下并未发现有video设备?是因为摄像头连接在了主机上,而非虚拟机。因此,需要将设备移到虚拟机上。

    虚拟机连接摄像头: 

“虚拟机(M) -> 可移动设备(D) -> Logitech USB Camera -> 连接(断开与主机的连接)”

    即可发现 /dev下有了 video0 设备。

二、虚拟机Ubuntu上打开摄像头

    Ubuntu上如何打开摄像头?这里需要安装一个软件“cheese”。

1、安装“cheese”,打开摄像头

    “cheese”是一个使用摄像头进行拍照和摄像,并可以使用一些花哨的特效,可以让你与他人分享你的乐趣。

    安装:    $ sudo apt-get install cheese

    运行:    $ cheese

    发现摄像头灯亮了,但画面黑黑一片(等待一段时间或会出现不完整图像,并且卡住不动)

    Ubuntu打开摄像头失败,难怪opencv打开摄像头会超时。问题应该就出现在这里!!!

    这个问题,百度能找到解决办法。

2、设置虚拟机,成功打开摄像头

    在虚拟机上打开 “虚拟机(M) -> 设置(S)”

    点击“USB控制器”,更换“USB兼容性(C)”:若是USB 2.0 则换成USB 3.0,若是USB 3.0 则换成USB 2.0。

    设置完成后虚拟机会自动重启。

3、再次运行“cheese”打开摄像头

    首先断开虚拟机的摄像头,再重新连接。(操作见上)

    运行cheese,结果如图:

成功打开摄像头!

三、OpenCV打开摄像头

    回到 samples/cpp/example_cmake 下,

    编译运行:

    $ cmake . & make & ./samples/cpp/example_cmake

    

    搞定,收工!

    备注:此博客专为解决【Ubuntu14.04安装Opencv3.4.0】问题而生

猜你喜欢

转载自blog.csdn.net/hyl999/article/details/86551115