matlab+snapshot采集图片
preview函數是從攝像頭獲取圖像直接在窗口中顯示
getsnapshot則是抓取一幀圖像。
對于圖像處理,當然是抓取圖像,然后處理,再顯示,顯然preview就不能滿足要求了。
但對于不少現有的代碼存在用getsnapshot函數獲取的幀率很低的問題,
http://www.mathworks.cn/cn/help/imaq/examples/acquiring-a-single-image-in-a-loop.html
上面這個網頁講的較詳細,
The GETSNAPSHOT function performs a lot of work when it is called. It must connect to the device, configure it, start the acquisition, acquire one frame, stop the acquisition, and then close the device. This means that the acquisition of one frame can take significantly longer than would be expected based on the frame rate of the camera. To illustrate this, call GETSNAPSHOT in a loop.
GETSNAPSHOT函數在調用的時候作了一系列處理,包括連接設備、配置、開始采集、獲取一幀圖像,停止采集、關閉設備。因此獲取一幀圖像需要花相當長的時間。因此通常情況下直接調用該函數會存在幀率低的問題,現象就是直接采集+顯示就會出現很卡的現象。
這個網頁也講了解決辦法,代碼貼在下邊供大家參考吧,也可以去參考原網頁。
[plain]?view plaincopy
使用以上代碼可以順利采集圖像,基本可以達到實時顯示。如果要對采集到的圖像進行處理,只需要imshow函數前添加處理代碼即可。
對于最后的delete(vidobj) 這句要解釋一下,如果不添加這一句,當程序結束再重新運行時,會提示設備被占用,不能從該設備獲取圖像。切記
最后的timePerFrame會在matlab主程序的窗口中顯示幀率
我的運行數據,雖然是不斷更新圖片,對于30幀每秒人眼基本看不出是圖片更新。
timePerFrame =
? ?0.0342
effectiveFrameRate =
? ?29.2812
end
總結
以上是生活随笔為你收集整理的matlab+snapshot采集图片的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: This function or var
- 下一篇: matlab2015a支持的usb we