之間的困惑,我使用羅技pro9000高清網絡攝像頭。其中有2 mp zeiss lence,可以捕捉高清視頻等。我的代碼[不完全相同,但集成在單一功能中。實際分辨率/插位圖格式
現在,如果我使用分辨率高達1600×1200的一切問題,工作正常。和接收的字節大小如下
for 640 x 480 VideoHeader.dwBytesUsed are 921600
for 1600 x 1200 VideoHeader.dwBytesUsed are 5760000
from 1600 x 1200 to 3264 x 2448 VideoHeader.dwBytesUsed are 5760000
但是從1600×1200字節大小是一樣的1600×1200,但我的程序不能隱蔽數據爲位圖我的事件儘量位圖的大小設置爲更高的分辨率1600 x 1200,但沒有任何作品我只得到底部模糊或拉伸預覽位圖底部的多個圖像。 我知道,這就是所謂的插值 我的問題是,其中插在驅動器,我訪問或通過公司 給出的相機應用程序實際執行的方式做我得到插值數據或者我要實現我的程序算法。 什麼困惑我的是,如果駕駛員仍返回1600×1200倍的圖像和軟件從羅技插補圖像3264 X 2448的大小,如果這是一個情況,爲什麼我沒有收到來自設備的事件將1600×1200像我設置視頻格式的初始化代碼3264 X 2448 [我已設置位24和相機使用Format24bppRgb像素格式] 誰能幫助我!....
我的代碼是
Private Sub FrameCallBack(ByVal lwnd As IntPtr, ByVal lpVHdr As IntPtr)
Dim _SnapSize As Size = New Size(640, 480)
'Dim _SnapSize As Size = New Size(1600, 1200)
Dim _SnapSize As Size = New Size(3264, 2448)
Dim VideoHeader As New Avicap.VIDEOHDR
Dim VideoData(-1) As Byte
VideoHeader = CType(Avicap.GetStructure(lpVHdr, VideoHeader), Avicap.VIDEOHDR)
VideoData = New Byte(VideoHeader.dwBytesUsed - 1) {}
Marshal.Copy(VideoHeader.lpData, VideoData, 0, VideoData.Length)
Dim _SnapFormat As System.Drawing.Imaging.PixelFormat = PixelFormat.Format24bppRgb
Dim outBit As Bitmap
If Me.IsValidData Then
outBit = New Bitmap(_SnapSize.Width, _SnapSize.Height, _SnapFormat)
Dim bitData As BitmapData
bitData = outBit.LockBits(New Rectangle(Point.Empty, _SnapSize), ImageLockMode.WriteOnly, _SnapFormat)
outBit.UnlockBits(bitData)
GC.Collect()
GC.WaitForPendingFinalizers()
End If
End Sub