- public static void OpenCamera(HWindowControl hwc, bool isLive = false, bool isColurs = true,
- string cameraName = "[0] ", string cameraType = "DirectShow")
- {
- HOperatorSet.GenEmptyObj(out ho_image);
- //销毁图像,不然造成内存泄漏
- ho_image.Dispose();
- ht_CameraHandle = new HTuple();
- ht_CameraHandle.Dispose();
- HOperatorSet.OpenFramegrabber(cameraType, 1, 1, 0, 0, 0, 0, "default", 8, isColurs ? "rgb" : "gray", -1, "false", "default",
- cameraName, 0, -1, out ht_CameraHandle);
- HOperatorSet.SetFramegrabberParam(ht_CameraHandle, "grab_timeout", 2000);
- //HOperatorSet.SetFramegrabberParam(ht_CameraHandle, "gamma", 116);
- HOperatorSet.GrabImageStart(ht_CameraHandle, -1);
- }
复制代码 这是打开相机的方法
这是采集图像与显示图像的方法
- public static void CollectImage(HWindowControl hwc)
- {
- HOperatorSet.OpenWindow(0, 0, hwc.Width, hwc.Height, hwc.HalconWindow, "visible", "", out ht_WindowHandle);//open window,将图片的长宽改为控件的长宽
- HDevWindowStack.Push(ht_WindowHandle);//入栈
- }</font>
复制代码- public static void ShowImage(HWindowControl hwc)
- {
- hwc.HalconWindow.ClearWindow();
-
复制代码
这个为打开相机调用方法
- private void btnConnectCamera_Click(object sender, EventArgs e)
- {
- Task.Run(() =>
- {
- try
- {
- HalconHelper.OpenCamera(hwcMain, this.ckbLive.Checked, !this.ckbBlackWhite.Checked);
- this.Invoke(new Action(() =>
- {
- this.btnCollectImage.Enabled = true;
- this.btnCloseCamera.Enabled = true;
- }));
- }
- catch (Exception ex)
- {
- MessageBox.Show(ex.Message);
- }
- });
- }
复制代码 这是图像采集与定时刷新
- private void btnCollectImage_Click(object sender, EventArgs e)
- {
- if (this.ckbLive.Checked)
- {
- updateTimer.Interval = 100;
- updateTimer.Tick += UpdateTimer_Tick;
- updateTimer.Enabled = true;
- HalconHelper.CollectImage(hwcMain);
- }
- else
- {
- HalconHelper.CollectImage(hwcMain);
- HalconHelper.ShowImage(hwcMain);
- }
- }
- private void UpdateTimer_Tick(object sender, EventArgs e)
- {
- HalconHelper.ShowImage(hwcMain);
- }
复制代码 这是关闭相机- private void btnCloseCamera_Click(object sender, EventArgs e)
- {
- updateTimer.Enabled = false;
- HalconHelper.CloseCamera();
- this.btnCloseCamera.Enabled = false;
- this.btnCollectImage.Enabled = false;
- }
复制代码 图片为界面
目前测试的时候是第一无论是单个图像或者显示视频就只会显示一次在HWindowControl,关闭相机再重新打开,控件就不更新了,试了控件的一些方法ClearWindow或者refresh都不管用,目前很是费解,想大家帮忙看下是哪里的问题,菜鸟一枚非常感谢!
|