解决matlab代码中打开摄像头错误

在用matlab2013运行一个视觉算法的时候,出现了如下问题:

“Error using videoinput (line 319)
The FORMAT specified is not supported by this device. See IMAQHWINFO(ADAPTORNAME).”

原来是自己的摄像头支持的格式和代码中的格式不对应。

解决办法:

(1)

打开摄像头:

source.vid = videoinput('winvideo', 1);

set(source.vid,'ReturnedColorSpace','grayscale');
vidRes = get(source.vid, 'VideoResolution');
nBands = get(source.vid, 'NumberOfBands');
hImage = image( zeros(vidRes(2), vidRes(1), nBands) );
preview(source.vid, hImage);



查看摄像头信息:

[ruby]  view plain  copy
  1. >> win_info=imaqhwinfo('winvideo')  
  2.   
  3.   
  4. win_info =   
  5.   
  6.   
  7.        AdaptorDllName: [1x81 char]  
  8.     AdaptorDllVersion: '4.5 (R2013a)'  
  9.           AdaptorName: 'winvideo'  
  10.             DeviceIDs: {[1]}  
  11.            DeviceInfo: [1x1 struct]  

 DeviceIDs: {[1]}是设备ID号

 DeviceInfo: [1x1 struct]是设备信息,这里主要是图像获取设备的一些参数


[ruby]  view plain  copy
  1. >> dev_win_info=win_info.DeviceInfo  
  2. dev_win_info =   
  3.   
  4.   
  5.              DefaultFormat: 'MJPG_320x240'  
  6.        DeviceFileSupported: 0  
  7.                 DeviceName: 'Lenovo Q350 USB PC Camera'  
  8.                   DeviceID: 1  
  9.      VideoInputConstructor: 'videoinput('winvideo', 1)'  
  10.     VideoDeviceConstructor: 'imaq.VideoDevice('winvideo', 1)'  
  11.           SupportedFormats: {'MJPG_320x240'  'MJPG_640x480'}  
Default Format:‘MJPG_320x240"  是默认的图片格式
DeviceName: 'USB PC CAMERA P227'%设备名称
DeviceID: 1   设备号

ObjectConstructor: 'videoinput('winvideo', 1) 对象构建方式,这个绝大部分都是一样的
SupportedFormats:  我的机子上的摄像头支持的只有MJPG_320x240'    'MJPG_640x480两种格式 (好一点的摄像头支持几十种格式的都有!)—— ⊙﹏⊙!

还可以用

[ruby]  view plain  copy
  1. >> dev_win_info.SupportedFormats  

查看具体摄像头支持的各种格式

现在问题终于看到了,代码中的格式和摄像头的不匹配,代码中,

[ruby]  view plain  copy
  1. vid = videoinput('winvideo', 1, 'RGB24_640x480');  

明显不是摄像头支持的。那么只能改代码了

改为:

[ruby]  view plain  copy
  1. vid = videoinput('winvideo', 1, 'MJPG_640x480')  

要是下面还有很多要改为MJPG的,那么可以考虑在这里添加一句再把MJPG转回RGB的代码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值