在用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);
查看攝像頭信息:
>> win_info=imaqhwinfo('winvideo')
win_info =
AdaptorDllName: [1x81 char]
AdaptorDllVersion: '4.5 (R2013a)'
AdaptorName: 'winvideo'
DeviceIDs: {[1]}
DeviceInfo: [1x1 struct]
DeviceIDs: {[1]}是設備ID號
DeviceInfo: [1x1 struct]是設備信息,這裏主要是圖像獲取設備的一些參數
>> dev_win_info=win_info.DeviceInfo
dev_win_info =
DefaultFormat: 'MJPG_320x240'
DeviceFileSupported: 0
DeviceName: 'Lenovo Q350 USB PC Camera'
DeviceID: 1
VideoInputConstructor: 'videoinput('winvideo', 1)'
VideoDeviceConstructor: 'imaq.VideoDevice('winvideo', 1)'
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兩種格式 (好一點的攝像頭支持幾十種格式的都有!)—— ⊙﹏⊙!
還可以用
>> dev_win_info.SupportedFormats
查看具體攝像頭支持的各種格式
現在問題終於看到了,代碼中的格式和攝像頭的不匹配,代碼中,
vid = videoinput('winvideo', 1, 'RGB24_640x480');
明顯不是攝像頭支持的。那麼只能改代碼了
改爲:
vid = videoinput('winvideo', 1, 'MJPG_640x480')
要是下面還有很多要改爲MJPG的,那麼可以考慮在這裏添加一句再把MJPG轉回RGB的代碼。