c#把从摄像机发过来的数据流转换成图片用picturebox显示出来

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c#把从摄像机发过来的数据流转换成图片用picturebox显示出来相关的知识,希望对你有一定的参考价值。

如:public static extern System.Int32 TMCC_CapturePictureToBuffer(IntPtr hTmCC, System.String pFmt,System.IntPtr lpBuffer, ref int iBufferSize);
这个函数的在c++的源码是/**
*函 数: TMCC_CapturePictureToBuffer
*说 明: 当前显示视频抓图到指定缓冲
*参 数: hTmCC为控制句柄,lpBuffer为存放图片缓冲,iBufferSize为缓冲大小(输入为缓冲大小,输出实际数据大小),pFmt为格式
*返回值: 成功返回TMCC_ERR_SUCCESS,失败返回其它值
*/
int TMCC_CapturePictureToBuffer( HANDLE hTmCC, const char* pFmt, void* lpBuffer, int* iBufferSize );
现在我要把那个缓冲转换成byte数组,然后再保存图片,我该怎么办啊?急用。。。

参考技术A 直接用C#的指针去读hTmCC。

试一下用构建一个stream的方法。

c# 图片转二进制流

RT,比如说如何把picturebox1的图片转成流形式

参考技术A 你可以把它序列化,如下

using System.IO;
using System.Runtime.Serialization.Formatters.Binary;

private void Form1_Load(object sender, EventArgs e)

BinaryFormatter binaryFormatter = new BinaryFormatter();
Bitmap bit = pictureBox1.Image as Bitmap;
MemoryStream memoryStream = new MemoryStream();
binaryFormatter.Serialize(memoryStream, bit);//序列化
byte[] byteArr = memoryStream.ToArray();//这就是你要的

Bitmap bit = binaryFormatter.Deserialize(memoryStream);//反序列化
memoryStream.Dispose();
参考技术B System.IO.MemoryStream s = new System.IO.MemoryStream();

picturebox1.Image.Save(s, System.Drawing.Imaging.ImageFormat.Jpeg);

byte[] Data=s.ToArray();本回答被提问者采纳

以上是关于c#把从摄像机发过来的数据流转换成图片用picturebox显示出来的主要内容,如果未能解决你的问题,请参考以下文章

如何利用VLC或FFMPEG将HTTP的串流转换成RTMP

将二进制流转换成图片文件

opencv 如何能把从摄像头中抓取的两帐图片进行精确比较?

c# 从数据库中读取图片数据流,然后转换成图片显示到网页上?

如何使用ffmpeg库把从摄像头传回的bmp图像不断保存成视频?

JAVA Socket TCP InputStream输入流转换成可读的数据如何做?