看板 C_Sharp 關於我們 聯絡資訊
最近工作上碰到一個困境 要撰寫一隻即時影像的程式 原本我用QT撰寫,老闆以這邊都只會寫C#當理由,希望我用C#重寫 重寫完後,效能出問題了orz||| Graphics g = Graphics.FromImage(bmp_tmp); // foreach(...) g.DrawImage( bmp, rect1, rect2, GraphicsUnit.Pixel ); g.Dispose(); ... // 將bmp_tmp丟到UI上面 目前一個已知的瓶頸在於這邊 當stream每個frame都要做一次DrawImage的時候,速度上會跟C++有明顯落差. C++我的習慣就是init狀態下就new好記憶體,用指標的方式去複製影像資料 但是C#這些技巧都不管用 orz 想請教一下,在C#上面處理影像,是否有比較快的做法 這次真的被老闆難倒了orz||| 補充,影像解析度是2592*1944,DrawImage的rect約640*480,四個rect. 及時串流的fps約30,但是可以跳frame. -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.34.167.9 ※ 文章網址: https://www.ptt.cc/bbs/C_Sharp/M.1457426443.A.E75.html ※ 編輯: hidog (1.34.167.9), 03/08/2016 16:45:04
erspicu: C#處理這種東西怎麼快都會有極限 可以考慮顯示的部分 03/08 18:23
erspicu: 改用WRAPPER的方式用WIN32 API比較快 03/08 18:24
Litfal: 可以考慮用WPF,UI Draw的效率好很多 03/08 18:26
erspicu: http://tinyurl.com/hrsufh7 參考 03/08 18:26
wvsrugby: graphics 的生命週期改成跟bmp_tmp相同,或可改善。 03/08 18:29
Litfal: 是說你直接用UI的Graphics不就好了,可以少畫一次 03/08 18:35
Litfal: 這個問題的重點在resize太花時間,用WPF應該會有不小改善 03/08 18:37
hidog: ok!! 感謝 03/08 19:13
O187: c#處理影像請改用unsafe指標 03/08 21:07
SANDER00: 啊不會把你的C++包成Dll給Csharp用噢 03/22 01:55
hidog: 主要是沒辦法從指標轉回C#的bitmap物件啦... 03/22 10:28
hidog: 卡住的原因在這邊...||| 03/22 10:28