Graphics 混淆实际分辨率/插值位图格式

Graphics 混淆实际分辨率/插值位图格式,graphics,gdi,webcam,Graphics,Gdi,Webcam,我使用的是罗技pro9000高清网络摄像头。其中有2 mp蔡司镜头,可拍摄高清视频等 我的代码[不完全相同,但集成在单个函数中 现在的问题是,如果我使用高达1600 x 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.dwByte

我使用的是罗技pro9000高清网络摄像头。其中有2 mp蔡司镜头,可拍摄高清视频等 我的代码[不完全相同,但集成在单个函数中

现在的问题是,如果我使用高达1600 x 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 x 1200的更高分辨率,字节大小与1600 x 1200相同,但我的程序无法将该数据转换为位图。我尝试将位图大小设置为1600 x 1200,但没有效果。我在预览位图底部得到的只是模糊的或拉伸的多个图像。 我知道这叫做插值 我的问题是,在我访问的驱动程序或公司提供的相机应用程序中,插值实际上是在哪里实现的 意味着我要得到插值数据,还是必须在我的程序中实现算法。 让我困惑的是,如果驱动程序仍然返回1600 x 1200图像,而Logitech的软件正在将图像插值为3264 x 2448大小。如果是这种情况,那么为什么我没有从设备事件中获取1600 x 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

首先非常抱歉,我完全忘记了这个问题

答案是——这些结构是针对本机API的

我的相机是200万像素的镜头,分辨率为1600 x 1200,拍摄出了正确的图像 数学很简单

1600 x 1200=1920000总像素

像素格式为24 bpp意味着每个像素3个字节图像的总大小为5760000

这个镜头不能再产生超过2 mb的数据,这就是为什么1600x1200是这个相机的硬件分辨率限制,而硬件不负责插值更高分辨率的图像,这就是为什么我必须在从相机获取原始图像后手动进行插值

这正是我所做的;我捕获1600x1200的图像,并编写图像处理算法来创建插值并提高图像质量。 该项目正在创建一个廉价的书籍扫描设备,用于文档扫描。该项目已成功完成,并已被我们的客户使用