我想创建一个可以从网络摄像头读取数据的应用程序。它使真正明亮的像素变红(现在)。但我无法将其写入图像框。那么问题是什么? //对不起英文
private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
WebCam camera = new WebCam();
if (!camera.IsConnected())
{
camera.Connect();
}
else
{
Application.Exit();
}
// for (int x = 0; x <= 10000; x++)
// {
camera.Update();
MemoryStream ms = new MemoryStream();
camera.CalcBitmap().Save(ms, ImageFormat.Bmp);
byte[] bitmapData = ms.ToArray();
/*
int i = 54;
while (i <= (bitmapData.Length - 2))
{
if ((bitmapData[i] >= 240) & (bitmapData[i + 1] >= 240) & (bitmapData[i + 2] >= 240))
{
bitmapData[i] = 255;
bitmapData[i + 1] = 0;
bitmapData[i + 2] = 0;
i += 3;
}
}*/
MemoryStream stream = new MemoryStream(bitmapData);
pictureBox1.Image = new Bitmap(stream);
// }
}
答案 0 :(得分:0)
因此,在经历了很多痛苦之后,我将图片框功能留空,我将所有内容写入了一个按钮功能。它奏效了!我仍然不知道是什么问题,但我认为即使连接了网络摄像头,图片框也很累。
public partial class Form1 : Form
{
public static WebCam camera = new WebCam();
private void button1_Click(object sender, EventArgs e)
{
if (!camera.IsConnected())
{
camera.Connect();
camera.Update();
MemoryStream ms = new MemoryStream();
camera.CalcBitmap().Save(ms, ImageFormat.Bmp);
byte[] bitmapData = ms.ToArray();
MemoryStream stream = new MemoryStream(bitmapData);
pictureBox1.Image = new Bitmap(stream);
}
else
{
Application.Exit();
}
}
public void pictureBox1_Paint(object sender, PaintEventArgs e)
{
}
答案 1 :(得分:-1)
您必须在拥有非托管资源的对象上调用Dispose(),以便释放内存。
MemoryStream ms = null
try{
//your code
}
finally{
if(ms != null){
ms.Dispose()
}
}