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

本文以映美精相机为例子,使用官方SDK打开相机,并调用相机自带的功能属性调节,最后将相机生成的图片格式转换成halcon所需的数据结构。
所用环境与文件为VS2015、映美精官方文件ICImagingControl34.dll、halcon动态库halcondotnet.dll。

一、使用的类
1、ICImagingControl34.dll中的ICImagingControl类。该类包含相机的主要功能包括使能设备、管理相机缓存等等。
2、ICImagingControl34.dll中的VCDIDsXXXX。VCDID开头的一般是以属性相关的,例如曝光、增益、对比度等等。
二、实现过程
1、新建项目,并拉一个简易的界面。如图:
扛水泥的技法与实践-----《相机篇1》_第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在上述所得范围内就可以)

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

你可能感兴趣的:(机器视觉)