Re: [請益] 快速更新圖片(影像監控)

看板Programming作者 (這就是人生啊)時間16年前 (2008/04/03 19:34), 編輯推噓1(101)
留言2則, 2人參與, 最新討論串7/7 (看更多)
※ 引述《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
網路部份我是使用 JRTPLIB 這個C函式庫
04/03 19:38, 1F

04/03 20:06, , 2F
拜收... 我研究一下 <(_ _)>
04/03 20:06, 2F
文章代碼(AID): #17zC2lrx (Programming)
討論串 (同標題文章)
文章代碼(AID): #17zC2lrx (Programming)