Ubuntu16.04下Matlab R2015b调用摄像头报错的解决求助
解决Ubuntu 16.04 + MATLAB R2015b下摄像头无法被识别的问题
我来帮你排查这个摄像头识别的问题,先梳理下你的环境和遇到的问题:
你的环境信息
- 操作系统:Ubuntu 16.04
- MATLAB版本:R2015b
- 已安装组件:OS Generic Video Interface、USB Webcams
- 执行
imaqhwinfo的输出:
InstalledAdaptors: {'dcam' 'gentl' 'gige' 'linuxvideo'} MATLABVersion: '8.6 (R2015b)' ToolboxName: 'Image Acquisition Toolbox' ToolboxVersion: '4.10 (R2015b)'
遇到的问题
执行obj = videoinput('linuxvideo',1);preview(obj);时出现错误:
Error using videoinput (line 233) There are no devices installed for the specified ADAPTORNAME. See IMAQHWINFO.
同时运行webcam命令时提示:
No webcams have been detected. Please ensure the webcam is connected to the system.
分步解决方案
1. 先确认系统层面能识别摄像头
首先排除硬件或系统驱动的问题,打开终端执行:
ls /dev/video*
如果能看到/dev/video0(或类似的设备文件),说明系统已经识别到摄像头;如果没有输出,先做这些操作:
- 检查摄像头USB连接是否牢固,换个USB口试试
- 安装
v4l-utils工具包来排查视频设备:
sudo apt-get install v4l-utils v4l2-ctl --list-devices
这个命令会列出系统中所有可识别的视频设备,如果还是看不到,可能需要排查摄像头硬件或者Linux内核驱动的问题。
2. 检查MATLAB对视频设备的权限
Ubuntu中/dev/video设备默认属于video用户组,MATLAB运行时可能没有访问权限:
- 先查看当前用户是否在
video组里:
groups $USER
如果输出里没有video,执行以下命令添加(添加后需要重启系统或重新登录才能生效):
sudo usermod -a -G video $USER
- 要是不想重启,可以临时给设备文件加读写权限(重启后会失效):
sudo chmod 666 /dev/video0
完成后重启MATLAB,再尝试运行videoinput命令。
3. 验证MATLAB的linuxvideo适配器设备列表
在MATLAB命令行里执行以下代码,查看linuxvideo适配器能识别的具体设备:
info = imaqhwinfo('linuxvideo'); disp(info.DeviceInfo);
如果输出为空,说明MATLAB的适配器没找到系统里的设备,可能是R2015b的linuxvideo适配器对Ubuntu16.04的兼容性问题,可以试试手动指定设备参数:
% 尝试指定视频格式和分辨率 obj = videoinput('linuxvideo', 1, 'YUY2_640x480'); % 手动指定设备路径 set(obj, 'DevicePath', '/dev/video0'); preview(obj);
4. 替代方案(如果上述方法都无效)
如果原生接口始终无法识别,你可以用系统工具配合MATLAB来读取摄像头:
- 先安装
ffmpeg:
sudo apt-get install ffmpeg
- 在MATLAB中用
system命令调用ffmpeg抓取视频帧,或者将视频流保存为临时文件后再导入MATLAB处理。
内容的提问来源于stack exchange,提问作者evbo
相关产品推荐
相关产品推荐

