参考:https://www.coder.work/article/2085334
内容:在winform和opencvsharp的环境下,利用一个button事件控制相机(打开和关闭),并将相机获取的图片显示在picturebox中。
private void 打开相机_Click(object sender, EventArgs e)
{
try
{
if (打开相机.Text.Equals("打开相机"))
{
CaptureCamera();
打开相机.Text = "关闭相机";
isCameraRunning = 1;
}
else
{
capture.Release();
打开相机.Text = "打开相机";
isCameraRunning = 0;
}
}
catch (NullReferenceException exception)
{
MessageBox.Show(exception.Message);
}
}
private void CaptureCamera()
{
camera = new Thread(new ThreadStart(CaptureCameraCallback));
camera.Start();
}
private void CaptureCameraCallback()
{
frame = new Mat();
capture = new VideoCapture();
capture.Open(0);
while (isCameraRunning == 1)
{
bool read_success = capture.Read(frame);
if (!read_success)
{
MessageBox.Show("无法读取摄像头的帧!!!", "提示:");
}
else
{ //防止状态切换太快,读到空值
if (frame.Height == 0) continue;
image = BitmapConverter.ToBitmap(frame);
pictureBox1.Image = image;
image = null;
}
//Cv2.WaitKey(20);
}
}
来源:oschina
链接:https://my.oschina.net/u/4414407/blog/4926909