扛水泥的技法与实践-----《相机篇1》

来源:互联网 发布:泳装视频网络歌曲 编辑:程序博客网 时间:2024/06/09 23:52
本文以映美精相机为例子,使用官方SDK打开相机,并调用相机自带的功能属性调节,最后将相机生成的图片格式转换成halcon所需的数据结构。所用环境与文件为VS2015、映美精官方文件ICImagingControl34.dll、halcon动态库halcondotnet.dll。

一、使用的类
1、ICImagingControl34.dll中的ICImagingControl类。该类包含相机的主要功能包括使能设备、管理相机缓存等等。
2、ICImagingControl34.dll中的VCDIDsXXXX。VCDID开头的一般是以属性相关的,例如曝光、增益、对比度等等。
二、实现过程
1、新建项目,并拉一个简易的界面。如图:
这里写图片描述
pictureBox作为相机ICImagingControl与HWindowControl的父容器。
2、pictureBox添加子容器ICImagingControl与HWindowControl

HWindowControl HwinContor = new HWindowControl();ICIamgControl.Parent = pictureBox1;HwinContor.Parent = pictureBox1;
3、打开相机
ICImagingControl ICIamgControl = new ICImagingControl();Device[] Devices = ICIamgControl.Devices;  //获得主机上所有映美精的相机Device Device = Devices[0];                 //此处只开第一个ICIamgControl.Device = Device.Name;         //该控件指定设备ICIamgControl.MemoryCurrentGrabberColorformat = ICImagingControlColorformats.ICY8;ICIamgControl.Width = pictureBox1.Width;ICIamgControl.Height = pictureBox1.Height;
4、Live模式显示相机
 ICIamgControl.LiveStart(); ICIamgControl.Show();               //相机控件显示并覆盖halcon控件
5、获得相机属性的方法,此处直接复制官方文档
TIS.Imaging.VCDPropertyItem Brightness = null;private TIS.Imaging.VCDRangeProperty BrightnessRange;private TIS.Imaging.VCDSwitchProperty BrightnessSwitch;Brightness = icImagingControl1.VCDPropertyItems.FindItem(TIS.Imaging.VCDIDs.**VCDID_Brightness**);//加粗可自行换成其他属性BrightnessRange = (TIS.Imaging.VCDRangeProperty)Brightness.Elements.FindInterface(                                                    TIS.Imaging.VCDIDs.VCDElement_Value + ":" +                                                    TIS.Imaging.VCDIDs.VCDInterface_Range);BrightnessSwitch = (TIS.Imaging.VCDSwitchProperty)Brightness.Elements.FindInterface(                                                    TIS.Imaging.VCDIDs.VCDElement_Auto + ":" +                                                    TIS.Imaging.VCDIDs.VCDInterface_Switch);if (BrightnessSwitch == null){    MessageBox.Show("Automation of brightness is not supported by the current device!");}
6、设置属性BrightnessRange.Value = Value;(Value在上述所得范围内就可以)

————-下次更新触发及数据转换部分