Re: [請益] 快速更新圖片(影像監控)
※ 引述《archon (三腳貓的把戲)》之銘言:
: 呼~~~ 感謝板友們熱心的幫忙跟指導,這支程式總算搞定了!
: 用的方法如下...
: 1. Server 端寫一支應用程式X,
: 用 OpenCV 函式 cvSaveImage() 不斷將 webcam 的畫面存成圖檔,
你的目的是要將 IplImage 結構中的影像資料壓縮傳送到遠端電腦,
這個作法我曾經也想過,但硬碟的 I/O 絕對會拖垮整個效能,
因為我個人要應用的平台,是以 DirectX 為基底,
因此作法上,我採用轉換記憶體儲存的方式,
將從WebCAM擷取的 IplImage 轉換成 D3D9 的 LPDIRECT3DTEXTURE9
( code 我列於下)
http://rafb.net/p/piEhZY49.html
接著呼叫 D3DXSaveTextureToFileInMemory() (詳細請查 DXSDK)
取得影像的"記憶體區塊",
再來透過網路傳送出去。
接收端收到再還原(D3DXCreateTextureFromFileInMemoryEx())
就可以顯示畫面了。
: 同時,也開一個 port 處理 client 的 http request
: 2. client 端用 javascript 死命的發 request (30 ms reload 一次)
: 圖片的路徑指向到應用程式X開的 port
: 3. X收到 request 後,就把圖檔加上 http header 回傳
: 效果還挺不錯的,在區域網路裡有 30fps 以上,
: 不會出現 [x],也不會因為 reload 的關係造成畫面讀取不完全而閃爍。
: 乍看之下,跟 stream 應該是沒什麼差別~~~
: 應該還可以再修改一下,現在是用 cvSaveImage() 先存成 jpg,
: 之後讀檔,再加上 http header 後通通寫進一塊記憶體裡,再 send() 出去;
: 先存檔後讀檔這個動作似乎是多餘的,
: 待我把 OpenCV 函式裡的資料型態弄清楚一點後,
: 應該會直接用記憶體資料搬運,對系統負擔比較小...
: 另外,目前只能服務 single client,
: 在 server 端需要改寫一下才能有 multi-client 的功能...
: ... 這都是後話了 :p
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 134.208.3.133
→
04/03 19:38, , 1F
04/03 19:38, 1F
推
04/03 20:06, , 2F
04/03 20:06, 2F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 7 之 7 篇):