解決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);



查看攝像頭信息:

>> 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的代碼。







發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章