예제 #1
0
        /// <summary>
        /// 绑定处理步骤和显示控件
        /// </summary>
        /// <param name="strStep"></param>
        /// <param name="vc"></param>
        public void BindWindow(string strStep, VisionControl vc)
        {
            VisionBase vb = null;

            if (m_dicVision.TryGetValue(strStep, out vb))
            {
                vb.BindWindow(vc);
            }
        }
예제 #2
0
        /// <summary>
        /// 加入一个处理步骤
        /// </summary>
        /// <param name="strCamName"></param>
        /// <param name="vb"></param>
        public void AddVisionStep(string strCamName, VisionBase vb)
        {
            CameraBase cb;

            if (m_dicCamera.TryGetValue(strCamName, out cb))
            {
                vb.BindCamera(cb);
                m_dicVision.Add(vb.Name, vb);
            }
            else
            {
                throw new Exception("系统指定的相机" + strCamName + "未找到");
            }
        }
예제 #3
0
        public bool ProcessImage(string strStep, HObject image, VisionControl ctl)
        {
            VisionBase vb = null;

            if (m_dicVision.TryGetValue(strStep, out vb))
            {
                vb.SetSrcImage(image);
                if (vb.Process(ctl))
                {
                    return(true);
                }
            }

            return(false);
        }
예제 #4
0
        /// <summary>
        ///处理指定图像,显示在指定窗口中,手动调试用
        /// </summary>
        /// <param name="strStep"></param>
        /// <param name="image"></param>
        /// <param name="ctl"></param>
        /// <returns></returns>
        //public bool ProcessImage(string strStep, HObject image, VisionControl ctl)
        //{
        //    VisionBase vb = null;
        //    if (m_dicVision.TryGetValue(strStep, out vb))
        //    {
        //        vb.SetSrcImage(image);
        //        //  if (vb.Process(ctl))
        //        {
        //            //       ShowLog(strStep + " image ok! ");
        //            return true;
        //        }
        //    }
        //    // ShowLog(strStep + " image fail! ");
        //    return false;
        //}

        /// <summary>
        ///指定步骤开始采集图像,用于采集和处理分开时先采集图像
        /// </summary>
        /// <param name="strStep"></param>
        /// <returns></returns>
        public bool SnapImage(string strStep)
        {
            VisionBase vb = null;

            if (m_dicVision.TryGetValue(strStep, out vb))
            {
                if (vb.Snap())
                {
                    //  ShowLog(strStep + " snap ok! ");
                    return(true);
                }
            }
            // ShowLog(strStep + " snap fail! ");
            return(false);
        }
        private void cmbProcess_SelectedIndexChanged(object sender, EventArgs e)
        {
            //获得当前图像处理流程
            vision = VisionMgr.GetInstance().GetVisionBase(cmbProcess.Text);
            visionControl1.RegisterUpdateInterface(vision);

            //获取曝光
            nudExposure.Value = vision.m_ExposureTime;

            var v = vision as ProcessSideMea;

            nudSigma.Value     = (decimal)v.Sigma.D;
            nudThreshold.Value = (decimal)v.Threshold.D;

            HOperatorSet.ClearWindow(visionControl1.GetHalconWindow());
            visionControl1.DisplayResults();
        }
예제 #6
0
        /// <summary>
        ///处理相机缓存中的图像,用于采集和处理分开时后处理图像
        /// </summary>
        /// <param name="strStep"></param>
        /// <returns></returns>
        public bool ProcessImage(string strStep)
        {
            VisionBase vb = null;

            if (m_dicVision.TryGetValue(strStep, out vb))
            {
                bool bResult = vb.Process();

                Action <object> action = (object obj) =>
                {
                    // int nCurBufferIndex = vb.m_Camera.m_nCurBufferIndex;
                    SaveWindowImage(strStep, vb.GetWindowImage(), bResult);
                    SaveSrcImage(strStep, vb.m_Camera.GetImage(), bResult);
                };
                Task t1 = new Task(action, "");
                t1.Start();

                return(bResult);
            }
            return(false);
        }