工业相机基类与实现

基类

namespace Cameron
{
   
    //相机参数
    public struct CamPara
    {
   
        public int DeviceID;	         //设备描述
        public string Name;
        public int WorkMode;	      	 //工作类型,0为连续模式,1为触发模式

        public float ExpourseTime;	     //曝光时间
        public float Gain;		         //增益
        public float Brightness;	     //亮度
        public float Contrast;	         //对比度

        public int Hue;		        //色度
        public int Sharpness;	    //锐度
        public int Saturation;	    //饱和度
        public int ImgWidth;		//图像宽度
        public int ImgHeight;		//图像高度
        public int Depth;		    //图像深度
        public float dX;		  //物理坐标X		
        public float dY;		  //物理坐标Y
        public float dScale;	  //像素比例尺
        public int nMirrorX;
        public int nMirrorY;
    }

    // 触发模式选择:0-连续模式;1-触发模式
    public enum TriggerModeEnum
    {
   
        Continuous = 0,
        Single = 1
    };

    // 触发源选择:0 - Line0 ;1 - Line1; 2 - Line2; 3 - Line3; 4 - Counter; 7 - Software;
    public enum TriggerSourceEnum
    {
   
        Line0 = 0,
        Line1 = 1,
        Line2 = 2,
        Line3 = 3,
        Software = 7,
    };

    //
    public abstract class CamBase
    {
   
        public abstract int OpenCamera(string SerialNumber);
        public abstract int CloseCamera();
        public abstract void GetImage(out HImage hImg);
        public abstract bool WaitImage(out HImage hImg);

        /// <summary>
        /// 增益设置
        /// </summary>
        /// <param name="Gain"></param>
        /// <returns></returns>
        public abstract int SetGain(float Gain);
        public abstract int GetGain(out float Gain);
        public abstract int GetGainRange(out float GainMin, out float GainMax);

        /// <summary>
        /// 曝光时间
        /// </summary>
        /// <param name="ExpourseTime"></param>
        /// <returns></returns>
        public abstract int SetExpourseTime(float ExpourseTime);
        public abstract int GetExpourseTime(out float ExpourseTime);
        public abstract int GetExpourseTimeRange(out float ExpourseTimeMin, out float ExpourseTimeMax);

        /// <summary>
        /// 亮度
        /// </summary>
        /// <param name="Brightness"></param>
        /// <returns></returns>
        public abstract int SetBrightness(int Brightness);
        public abstract int GetBrightness(out int Brightness);
        public abstract int GetBrightnessRange(out int BrightnessMin, out int BrightnessMax);

        /// <summary>
        /// Gama
        /// </summary>
        /// <param name="gama"></param>
        /// <returns></returns>
        public abstract int SetGamma(int Gamma);
        public abstract int GetGamma(out int Gamma);
        public abstract int GetGammaRange(out int GammaMin, out int GammaMax);

        /// <summary>
        /// 翻转
        /// </summary>
        /// <param name="YesNo"></param>
        /// <returns></returns>
        public abstract int SetReverseX(bool YesNo);
        public abstract int SetReverseY(bool YesNo);


        public abstract int StartGrab();
        public abstract int StoptGrab();
        public abstract int SetTrigerMode(int OnOff);
        public abstract int SetTriggerSource(int nSource);
        public abstract int SoftTrigger();

    }
}

实现

namespace Machine
{
   
    public class CameraHK : CamBase
    {
   
        //public struct CAMERA//定义相机结构体
        //{
   
        //    public MyCamera Cam_Info;
        //    public UInt32 m_nBufSizeForSaveImage;
        //    public byte[] m_pBufForSaveImage;         // 用于保存图像的缓存
        //}

        public MyCamera.cbOutputdelegate ImageCallback;       //委托实例
        public MyCamera.MV_CC_DEVICE_INFO_LIST m_pDeviceList;
        //private CAMERA[] m_pMyCamera;
        public MyCamera m_MyCamera = new MyCamera();
        public int m_nDevNum = 0;                      // ch:在线设备数量 | en:Online Device Number
        public uint g_nPayloadSize = 0;            //包大小
        public bool m_bGrabbing = false;           //正在采集图像标志  
        public bool m_bGetImgFinish = false;       //取图完成标志(自动过程中使用)
        public bool MachineWorkMode;     //机械设备工作模式

        //相机参数
        private int SelectCamId = 0;
        private float Gain;
        private float ExpourseTime;
        private float DigitalShift;
        private float Brightness;
  
        public CamPara campara = new CamPara();

        //图像变量
        HObject[] ho_Img;
        //HImage[] hImg;
        HImage hCamImg = new HImage();

      

        /// <summary>
        /// 打开相机
        /// </summary>
        /// <param name="SerialNumber">相机序列号</param>
        /// <returns></returns>
        public override int OpenCamera(string SerialNumber)
        {
   
            int nRet = -1;
            //初始化相机列表
            m_pDeviceList = new MyCamera.MV_CC_DEVICE_INFO_LIST();
            //枚举子网内所有设备
            nRet = MyC
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值