C# 获取普通USB摄像头的像素数据,并将还原成图片。。。

我获取摄像头的数据(是一个长614400个字节的数组,我的摄像头像素是640*480的),然后将它还原成图片并显示在picturebox里,为什么我还原的图片变成右边那样... 我获取摄像头的数据(是一个长614400个字节的数组,我的摄像头像素是640*480的),然后将它还原成图片并显示在picturebox里,为什么我还原的图片变成右边那样了啊。。。
GCHandle hObject = GCHandle.Alloc(VideoData, GCHandleType.Pinned);
IntPtr pObject = hObject.AddrOfPinnedObject();
if (hObject.IsAllocated)
{
hObject.Free();
}
BitmapData bmpData = new BitmapData();
bmpData.Width = bitmapinfo.bmiHeader.biWidth;
bmpData.Height = bitmapinfo.bmiHeader.biHeight;
bmpData.Scan0 = pObject;
bmpData.PixelFormat = PixelFormat.Format16bppRgb565;
bmpData.Stride = VideoData.Length / bmpData.Height;
bitmap = new Bitmap(bmpData.Width, bmpData.Height, bmpData.Stride, bmpData.PixelFormat, bmpData.Scan0);
展开
 我来答
百度网友8c512873d
2012-11-29 · 超过40用户采纳过TA的回答
知道小有建树答主
回答量:196
采纳率:0%
帮助的人:103万
展开全部
这涉及到你捕捉的数据的格式,及你程序对数据格式解析是否正确。
预计你在这里是找不到答案的。
另:WINDOWS下的图片的坐标是在左上角,即显示图片时高度的参数设定为负值,否则图片是倒立的。不知是否以你有帮助
更多追问追答
追问
bitmapinfo = new VideoAPI.BITMAPINFO();
bitmapinfo.bmiHeader.biSize = VideoAPI.SizeOf(bitmapinfo.bmiHeader);
bitmapinfo.bmiHeader.biWidth = mWidth;
bitmapinfo.bmiHeader.biHeight = mHeight;
bitmapinfo.bmiHeader.biBitCount = 16;
bool b = VideoAPI.SendMessage(lwndC, VideoAPI.WM_CAP_SET_VIDEOFORMAT, VideoAPI.SizeOf(bitmapinfo), ref bitmapinfo);
这种方法设置不成功
追答
设置不成功具体是指什么?未能具体看到你的程序,只能从语法和逻辑上判断~
C#中操作指针在函数前要做一些内存上的属性设定,有忘记没?
最后一句SENDMESSAGE是复制图片数据吗?
其它的我也想不出了~
酒话灬醉人
2019-11-18
知道答主
回答量:1
采纳率:0%
帮助的人:660
展开全部
解决了吗?有源代码吗
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式