C# picturebox的Image 取得網路攝像頭圖像資料


版权声明:本文为CSDN博主「吕家少爷」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_43240642/java/article/details/101430811

PS. CSDN的作者也是我本人! 

有個項目使用了攝影機,其為網路線傳輸資料的。內附的DLL是靠
Function: MVImageDrawHwnd(…) 〈-- 用Handle接受資料
Function: MVImageDraw(…) 〈-- 用hdc接受資料
原本使用了第一個Function, 把picturebox的Handle傳過去,MVImageDrawHwnd(hCameraImage, picturebox1.Handle,…) 結果Picturebox1裡面可以看到了影像。以單張的為例,Picturebox的卷軸一卷就不見了。檢查了picturebox1.Image內,發現是null。可是這圖像不是眼睛看到就好,我是要處理的。網站搜尋了一下,都沒有找到解決方法。拉里拉雜的話不談。直接把我解決的方式如下說了!我是使用了第二的Function實踐之!其實也該感謝搜尋的網站內容,很有啟發性!
  • 在抓到摄影機的解析度时,先設定global Bitmap變數的大小:
GrabImageData = new Bitmap(w, h);
  • 在攝影機獲取圖像的函式內使用如下的程序:

picGrab.Image = GrabImageData; //指定picGrab之Image為GrabImageData(Bitmap型態)
Graphics g = Graphics.FromImage(picGrab.Image); //產生Graphics在picGrab上
IntPtr pptt2 = g.GetHdc(); //取得g之hdc                
MVAPI.MVImage.MVImageDraw(m_hImage, pptt2, 0, 0); //將取得相機之影像傳到建立在picGrab上之Bitmap,其連接在GrabImageData
g.ReleaseHdc(); //Release HDC
g.Dispose(); //釋放g 資源
  • 在前項所列的g.ReleaseHdc跟g.Dispose是要的!如果沒加,我試的結果是圖像會不順,有停頓感!

留言

這個網誌中的熱門文章

C# 不規則陣列不定長度設定方法

多維陣列的Resize

C#利用DateTime估計程式執行時間