1. 程式人生 > 其它 >Maxmspjitter實現實時抓取攝像頭畫面並製成序列圖 (定時抓拍)

Maxmspjitter實現實時抓取攝像頭畫面並製成序列圖 (定時抓拍)

實時監控、拍照、錄影外設的影像畫面在B站上我已有所總結,見下面的網址。

https://www.bilibili.com/read/cv13149329?spm_id_from=333.999.0.0

而如何實現定時抓拍則需要另作討論。下面就以Maxmspjitter這個互動軟體為例來實現。下圖是Max中Patcher的參考結果。

首先

通過呼叫jit.dx.grab或者jit.grabjit.qt.grab獲取到外設攝像頭裝置以及其返回的畫面影像。我偷懶用了幫助直接扒下來的,輕鬆獲取引數配置[點選【getformatlist】],比如我預想的需求是1920*1080的解析度,要設成MJPG[1920*1080]。當然DIM屬性也要隨之更改。

接下來

通過grab節點的預留方法【exportimage】來儲存Matrix中的資訊,即儲存靜幀影象。具體語法可參考官方文件。很簡單,兩個引數,一個是儲存的路徑,一個是格式,支援JPEG\PNG\TIFF等格式。使用sprintf節點發送message給grab節點。

進一步

如果想要抓取序列影象,也就是有時間關聯的一系列影象,那麼每次儲存影象之前,定義序列的影象名稱,讓其相關,方便後期編輯。可參考上圖做法。【上圖的這塊邏輯也是參考了官方Form論壇的網友分享的Patcher,見下面這個網址】

https://cycling74.com/forums/jit-qt-grab-pictures

https://cycling74.com/forums/save-screenshot-of-a-video-with-bang

相隔的時間在metro節點上定義。

最後

最後的結果就是相隔2500毫秒拍一張照片,如下圖:

我把最重要的部分放大上傳。

有了序列圖片,後期就可大展身手了,不過這樣的命名或許還不是特別適用於序列動畫,或是在max中修改,或是借dos批處理、powershell等統一更改命名。我給出一個參考。

理想的序列圖命名格式如name_#####.png。但是目前還不確定在max中如何實現此命名,因此簡單處理,直接從0計數,匯入PR等後期剪輯環境沒有問題,如下。

最終的圖片檔案如下。

希望能幫到您,謝謝閱讀。