Maxmspjitter實現實時抓取攝像頭畫面並製成序列圖 (定時抓拍)
實時監控、拍照、錄影外設的影像畫面在B站上我已有所總結,見下面的網址。
https://www.bilibili.com/read/cv13149329?spm_id_from=333.999.0.0
而如何實現定時抓拍則需要另作討論。下面就以Maxmspjitter這個互動軟體為例來實現。下圖是Max中Patcher的參考結果。
首先
通過呼叫jit.dx.grab或者jit.grab、jit.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等後期剪輯環境沒有問題,如下。
最終的圖片檔案如下。
希望能幫到您,謝謝閱讀。