标签:mamicode 失败 bsp strong oid 管理 exception 右键 start
在对vs进行环境配置好以后,就可以开始与halcon联合进行实战。本篇就对图像的采集进行总结。通过构建采集相机GrabImage类的三个方法实现图像的采集:
最后用IrisSkin4实现WinForm窗体换皮肤。
先看一下实现的效果:
??????????如何实现呢?
一,创建vs工程,创建 GrabImage类(便于调用)
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using HalconDotNet; namespace 采集图像 { public class GrabImage { HTuple hv_AcqHandle; //打开相机窗口的引用句柄 HObject ho_Image;//定义图片变量 HTuple imageWidth, imageHeight;//定义宽高 public void open() { try { HOperatorSet.GenEmptyObj(out ho_Image);// 初始化本地图像空间的变量 //打开本地相机 HOperatorSet.OpenFramegrabber("DirectShow", 1, 1, 0, 0, 0, 0, "default", 8, "rgb", -1, "false", "default", "[0] Integrated Camera", 0, -1, out hv_AcqHandle); //开始采集图像 HOperatorSet.GrabImageStart(hv_AcqHandle, -1); } catch (Exception) { System.Windows.Forms.MessageBox.Show("打开相机失败!");//报错 } } //构造单次采集图像方法 public void grabimage(HWindowControl HW) { //清空窗体halconwindows HW.HalconWindow.ClearWindow(); //采集图像 HOperatorSet.GrabImageAsync(out ho_Image, hv_AcqHandle, -1); //转成黑白图像 HOperatorSet.Rgb1ToGray(ho_Image, out ho_Image); //图片自适应窗口 HOperatorSet.GetImageSize(ho_Image, out imageWidth, out imageHeight); HOperatorSet.SetPart(HW.HalconWindow, 0, 0, imageHeight - 1, imageWidth - 1); //显示图像 HOperatorSet.DispObj(ho_Image, HW.HalconWindow); //以当前日期保存图像到D盘下 //HOperatorSet.WriteImage(ho_Image, "png", 0, "D:\\" + DateTime.Now.ToString("yyyy-MM-dd HH-mm-ss")); ho_Image.Dispose(); } //关闭相机,释放内存 public void close() { ho_Image.Dispose(); HOperatorSet.CloseFramegrabber(hv_AcqHandle); } } }
二,编写winform界面
三,编写主窗体Form1程序
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace 采集图像 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } GrabImage grabimg = new GrabImage();//实例化GrabImage类 private void Form1_Load(object sender, EventArgs e) { skinEngine1.SkinFile = System.Environment.CurrentDirectory+ "\\Skins\\Calmness.ssk"; skinEngine1.DisableTag = 8888;//设置不自动换肤。tag的值8888(默认9999) grabimg.open();//调用open方法 } private void button1_Click(object sender, EventArgs e) { grabimg.grabimage(hWindowControl1); } private void Form1_FormClosing(object sender, FormClosingEventArgs e) { grabimg.close(); } private void timer1_Tick(object sender, EventArgs e) { grabimg.grabimage(hWindowControl2); } //实时采集 private void button2_Click(object sender, EventArgs e) { timer1.Start(); } //停止采集 private void button3_Click(object sender, EventArgs e) { timer1.Stop(); } } }
这里利用了一个timer控件将单次采集变成实时采集(累加计时)。
??????????那么如何修改winform界面皮肤呢?
skinEngine1.SkinFile = System.Environment.CurrentDirectory+ "\\Skins\\Calmness.ssk";
如果有需要IrisSkin4.dll以及皮肤包,可在下方评论留言。
标签:mamicode 失败 bsp strong oid 管理 exception 右键 start
原文地址:https://www.cnblogs.com/xyf327/p/14940169.html