From 299502b23c87fbbd6e4101c3d81eaa44c84ae3fd Mon Sep 17 00:00:00 2001 From: gebo Date: Wed, 5 Nov 2025 10:37:51 +0800 Subject: [PATCH] cam0 to camOCR --- TetraParkOCR/Form1.cs | 536 +++++++++++++++--------------------------- 1 file changed, 192 insertions(+), 344 deletions(-) diff --git a/TetraParkOCR/Form1.cs b/TetraParkOCR/Form1.cs index aaeda12..c8875d1 100644 --- a/TetraParkOCR/Form1.cs +++ b/TetraParkOCR/Form1.cs @@ -112,7 +112,7 @@ namespace TetraPackOCR /// /// 相机对象 1和2 /// - IDevice m_dev_cam0, m_dev_cam1; + IDevice m_dev_cam_ocr, m_dev_cam1; List DeviceList; public string ImagePixelFormat = ""; //图像格式设置 @@ -143,7 +143,7 @@ namespace TetraPackOCR this.Enabled = false; Action action = (() => { - InitializeCamer1(); + InitializeCamerOCR(); InitializeCamer2(); InitializePaddleOCR(); @@ -263,31 +263,29 @@ namespace TetraPackOCR #region 相机初始化 #region 相机1 定义为OCR相机 - private void InitializeCamer1() + private void InitializeCamerOCR() { try { - cam0Opened = false; + camOCROpened = false; DeviceList = Enumerator.EnumerateDevices(); //发现设备,搜索所有大华相机 - - // m_dev_cam0 = Enumerator.GetDeviceByIndex(0);//通过索引获取 - m_dev_cam0 = Enumerator.GetDeviceByKey("Machine Vision:CK21686DAK00001");//通过"设备厂商名:设备序列号"获取 - if (m_dev_cam0 == null) + m_dev_cam_ocr = Enumerator.GetDeviceByKey("Machine Vision:CK21686DAK00001");//通过"设备厂商名:设备序列号"获取 + if (m_dev_cam_ocr == null) { log.Error("未发现OCR相机,请检查相机连接"); return; } - m_dev_cam0.CameraOpened += m_dev0_CameraOpened; - m_dev_cam0.CameraClosed += m_dev0_CameraClosed; - m_dev_cam0.ConnectionLost += m_dev0_ConnectionLost; + m_dev_cam_ocr.CameraOpened += m_dev_cam_ocr_CameraOpened; + m_dev_cam_ocr.CameraClosed += m_dev_cam_ocr_CameraClosed; + m_dev_cam_ocr.ConnectionLost += m_dev_cam_ocr_ConnectionLost; - if (!m_dev_cam0.Open()) + if (!m_dev_cam_ocr.Open()) { MessageBox.Show("OCR相机打开失败"); } // 设置图像格式 // set PixelFormat - using (IEnumParameter p = m_dev_cam0.ParameterCollection[ParametrizeNameSet.ImagePixelFormat]) + using (IEnumParameter p = m_dev_cam_ocr.ParameterCollection[ParametrizeNameSet.ImagePixelFormat]) { ImagePixelFormat = "BayerRG8"; //ImagePixelFormat = "Mono8"; @@ -296,73 +294,68 @@ namespace TetraPackOCR // 设置曝光 - using (IFloatParameter p = m_dev_cam0.ParameterCollection[ParametrizeNameSet.ExposureTime]) + using (IFloatParameter p = m_dev_cam_ocr.ParameterCollection[ParametrizeNameSet.ExposureTime]) { p.SetValue(800000); } // 设置增益 - using (IFloatParameter p = m_dev_cam0.ParameterCollection[ParametrizeNameSet.GainRaw]) + using (IFloatParameter p = m_dev_cam_ocr.ParameterCollection[ParametrizeNameSet.GainRaw]) { p.SetValue(2.5); } - using (IEnumParameter p = m_dev_cam0.ParameterCollection[ParametrizeNameSet.AcquisitionMode]) + using (IEnumParameter p = m_dev_cam_ocr.ParameterCollection[ParametrizeNameSet.AcquisitionMode]) { p.SetValue("Continuous"); } - using (IEnumParameter p = m_dev_cam0.ParameterCollection[ParametrizeNameSet.TriggerMode]) + using (IEnumParameter p = m_dev_cam_ocr.ParameterCollection[ParametrizeNameSet.TriggerMode]) { p.SetValue("On"); } - //if (!m_dev_cam0.Open()) - //{ - // MessageBox.Show(@"OCR相机连接失败"); - // return; - //} - m_dev_cam0.StreamGrabber.ImageGrabbed += StreamGrabber_ImageGrabbed_0; - m_dev_cam0.StreamGrabber.GrabStarted += StreamGrabber_GrabStarted_0; + m_dev_cam_ocr.StreamGrabber.ImageGrabbed += StreamGrabber_ImageGrabbed_OCR; + m_dev_cam_ocr.StreamGrabber.GrabStarted += StreamGrabber_GrabStarted_OCR; // 打开Software Trigger // Set Software Trigger - m_dev_cam0.TriggerSet.Open(TriggerSourceEnum.Software); - if (!m_dev_cam0.GrabUsingGrabLoopThread()) + m_dev_cam_ocr.TriggerSet.Open(TriggerSourceEnum.Software); + if (!m_dev_cam_ocr.GrabUsingGrabLoopThread()) { // 开启采集失败 log.Error("开启采集失败"); return; } - cam0Opened = true; + camOCROpened = true; log.Info("OCR相机加载完毕"); } catch (Exception ex) { - cam0Opened = false; + camOCROpened = false; log.Error("OCR相机加载失败"); - m_dev_cam0 = null; + m_dev_cam_ocr = null; } } - private bool cam0Opened = false; + private bool camOCROpened = false; private bool cam1Opened = false; #endregion #region 相机1事件响应 - void m_dev0_ConnectionLost(object sender, EventArgs e) + void m_dev_cam_ocr_ConnectionLost(object sender, EventArgs e) { - MessageBox.Show(m_dev_cam0.DeviceInfo.Key + "OCR相机断线"); + MessageBox.Show(m_dev_cam_ocr.DeviceInfo.Key + "OCR相机断线"); } - void m_dev0_CameraClosed(object sender, EventArgs e) + void m_dev_cam_ocr_CameraClosed(object sender, EventArgs e) { - MessageBox.Show(m_dev_cam0.DeviceInfo.Key + "OCR相机关闭"); + MessageBox.Show(m_dev_cam_ocr.DeviceInfo.Key + "OCR相机关闭"); } - void m_dev0_CameraOpened(object sender, EventArgs e) + void m_dev_cam_ocr_CameraOpened(object sender, EventArgs e) { - // MessageBox.Show(m_dev_cam0.DeviceInfo.Key + "启动"); + } - void StreamGrabber_GrabStarted_0(object sender, EventArgs e) + void StreamGrabber_GrabStarted_OCR(object sender, EventArgs e) { log.Info("OCR相机启动码流"); } @@ -372,7 +365,7 @@ namespace TetraPackOCR /// /// /// - private void StreamGrabber_ImageGrabbed_0(object sender, GrabbedEventArgs e) + private void StreamGrabber_ImageGrabbed_OCR(object sender, GrabbedEventArgs e) { try { @@ -442,11 +435,6 @@ namespace TetraPackOCR { p.SetValue("On"); } - //if (!m_dev_cam1.Open()) - //{ - // MessageBox.Show(@"定位相机连接失败"); - // return; - //} m_dev_cam1.StreamGrabber.ImageGrabbed += StreamGrabber_ImageGrabbed_1; m_dev_cam1.StreamGrabber.GrabStarted += StreamGrabber_GrabStarted_1; // 打开Software Trigger @@ -485,7 +473,7 @@ namespace TetraPackOCR void m_dev1_CameraOpened(object sender, EventArgs e) { - // MessageBox.Show(m_dev_cam0.DeviceInfo.Key + "启动"); + } void StreamGrabber_GrabStarted_1(object sender, EventArgs e) @@ -564,14 +552,14 @@ namespace TetraPackOCR void ClossCam() { //注销相机事件 - if (m_dev_cam0 != null) + if (m_dev_cam_ocr != null) { - m_dev_cam0.CameraOpened -= m_dev0_CameraOpened; - m_dev_cam0.CameraClosed -= m_dev0_CameraClosed; - m_dev_cam0.ConnectionLost -= m_dev0_ConnectionLost; - m_dev_cam0.ShutdownGrab(); - m_dev_cam0.Dispose(); - m_dev_cam0 = null; + m_dev_cam_ocr.CameraOpened -= m_dev_cam_ocr_CameraOpened; + m_dev_cam_ocr.CameraClosed -= m_dev_cam_ocr_CameraClosed; + m_dev_cam_ocr.ConnectionLost -= m_dev_cam_ocr_ConnectionLost; + m_dev_cam_ocr.ShutdownGrab(); + m_dev_cam_ocr.Dispose(); + m_dev_cam_ocr = null; } if (m_dev_cam1 != null) { @@ -952,145 +940,7 @@ namespace TetraPackOCR } } ///判断当前Lans决定结果显示数量 - switch (NumberOfLanes) - { - case 1: - this.Invoke(new Action(() => - { - this.lbl_L1_verOcrRs.Text = "启用"; - this.lbl_L1_verOcrRs.BackColor = Color.Yellow; - })); - break; - case 2: - this.Invoke(new Action(() => - { - this.lbl_L1_verOcrRs.Text = "启用"; - this.lbl_L1_verOcrRs.BackColor = Color.Yellow; - this.lbl_L2_verOcrRs.Text = "启用"; - this.lbl_L2_verOcrRs.BackColor = Color.Yellow; - })); - break; - case 3: - this.Invoke(new Action(() => - { - this.lbl_L1_verOcrRs.Text = "启用"; - this.lbl_L1_verOcrRs.BackColor = Color.Yellow; - this.lbl_L2_verOcrRs.Text = "启用"; - this.lbl_L2_verOcrRs.BackColor = Color.Yellow; - this.lbl_L3_verOcrRs.Text = "启用"; - this.lbl_L3_verOcrRs.BackColor = Color.Yellow; - })); - break; - case 4: - this.Invoke(new Action(() => - { - this.lbl_L1_verOcrRs.Text = "启用"; - this.lbl_L1_verOcrRs.BackColor = Color.Yellow; - this.lbl_L2_verOcrRs.Text = "启用"; - this.lbl_L2_verOcrRs.BackColor = Color.Yellow; - this.lbl_L3_verOcrRs.Text = "启用"; - this.lbl_L3_verOcrRs.BackColor = Color.Yellow; - this.lbl_L4_verOcrRs.Text = "启用"; - this.lbl_L4_verOcrRs.BackColor = Color.Yellow; - })); - break; - case 5: - this.Invoke(new Action(() => - { - this.lbl_L1_verOcrRs.Text = "启用"; - this.lbl_L1_verOcrRs.BackColor = Color.Yellow; - this.lbl_L2_verOcrRs.Text = "启用"; - this.lbl_L2_verOcrRs.BackColor = Color.Yellow; - this.lbl_L3_verOcrRs.Text = "启用"; - this.lbl_L3_verOcrRs.BackColor = Color.Yellow; - this.lbl_L4_verOcrRs.Text = "启用"; - this.lbl_L4_verOcrRs.BackColor = Color.Yellow; - this.lbl_L5_verOcrRs.Text = "启用"; - this.lbl_L5_verOcrRs.BackColor = Color.Yellow; - })); - break; - case 6: - this.Invoke(new Action(() => - { - this.lbl_L1_verOcrRs.Text = "启用"; - this.lbl_L1_verOcrRs.BackColor = Color.Yellow; - this.lbl_L2_verOcrRs.Text = "启用"; - this.lbl_L2_verOcrRs.BackColor = Color.Yellow; - this.lbl_L3_verOcrRs.Text = "启用"; - this.lbl_L3_verOcrRs.BackColor = Color.Yellow; - this.lbl_L4_verOcrRs.Text = "启用"; - this.lbl_L4_verOcrRs.BackColor = Color.Yellow; - this.lbl_L5_verOcrRs.Text = "启用"; - this.lbl_L5_verOcrRs.BackColor = Color.Yellow; - this.lbl_L6_verOcrRs.Text = "启用"; - this.lbl_L6_verOcrRs.BackColor = Color.Yellow; - - })); - break; - case 7: - this.Invoke(new Action(() => - { - this.lbl_L1_verOcrRs.Text = "启用"; - this.lbl_L1_verOcrRs.BackColor = Color.Yellow; - this.lbl_L2_verOcrRs.Text = "启用"; - this.lbl_L2_verOcrRs.BackColor = Color.Yellow; - this.lbl_L3_verOcrRs.Text = "启用"; - this.lbl_L3_verOcrRs.BackColor = Color.Yellow; - this.lbl_L4_verOcrRs.Text = "启用"; - this.lbl_L4_verOcrRs.BackColor = Color.Yellow; - this.lbl_L5_verOcrRs.Text = "启用"; - this.lbl_L5_verOcrRs.BackColor = Color.Yellow; - this.lbl_L6_verOcrRs.Text = "启用"; - this.lbl_L6_verOcrRs.BackColor = Color.Yellow; - this.lbl_L7_verOcrRs.Text = "启用"; - this.lbl_L7_verOcrRs.BackColor = Color.Yellow; - })); - break; - case 8: - this.Invoke(new Action(() => - { - this.lbl_L1_verOcrRs.Text = "启用"; - this.lbl_L1_verOcrRs.BackColor = Color.Yellow; - this.lbl_L2_verOcrRs.Text = "启用"; - this.lbl_L2_verOcrRs.BackColor = Color.Yellow; - this.lbl_L3_verOcrRs.Text = "启用"; - this.lbl_L3_verOcrRs.BackColor = Color.Yellow; - this.lbl_L4_verOcrRs.Text = "启用"; - this.lbl_L4_verOcrRs.BackColor = Color.Yellow; - this.lbl_L5_verOcrRs.Text = "启用"; - this.lbl_L5_verOcrRs.BackColor = Color.Yellow; - this.lbl_L6_verOcrRs.Text = "启用"; - this.lbl_L6_verOcrRs.BackColor = Color.Yellow; - this.lbl_L7_verOcrRs.Text = "启用"; - this.lbl_L7_verOcrRs.BackColor = Color.Yellow; - this.lbl_L8_verOcrRs.Text = "启用"; - this.lbl_L8_verOcrRs.BackColor = Color.Yellow; - })); - break; - case 9: - this.Invoke(new Action(() => - { - this.lbl_L1_verOcrRs.Text = "启用"; - this.lbl_L1_verOcrRs.BackColor = Color.Yellow; - this.lbl_L2_verOcrRs.Text = "启用"; - this.lbl_L2_verOcrRs.BackColor = Color.Yellow; - this.lbl_L3_verOcrRs.Text = "启用"; - this.lbl_L3_verOcrRs.BackColor = Color.Yellow; - this.lbl_L4_verOcrRs.Text = "启用"; - this.lbl_L4_verOcrRs.BackColor = Color.Yellow; - this.lbl_L5_verOcrRs.Text = "启用"; - this.lbl_L5_verOcrRs.BackColor = Color.Yellow; - this.lbl_L6_verOcrRs.Text = "启用"; - this.lbl_L6_verOcrRs.BackColor = Color.Yellow; - this.lbl_L7_verOcrRs.Text = "启用"; - this.lbl_L7_verOcrRs.BackColor = Color.Yellow; - this.lbl_L8_verOcrRs.Text = "启用"; - this.lbl_L8_verOcrRs.BackColor = Color.Yellow; - this.lbl_L9_verOcrRs.Text = "启用"; - this.lbl_L9_verOcrRs.BackColor = Color.Yellow; - })); - break; - } + InitLableColumn(); this.btn_OrderNum.Enabled = true; btn_OrderNum.BackColor = Color.DeepSkyBlue; @@ -1105,6 +955,148 @@ namespace TetraPackOCR btn_OrderNum.BackColor = Color.DeepSkyBlue; } } + private void InitLableColumn() + { + switch (NumberOfLanes) + { + case 1: + this.Invoke(new Action(() => + { + this.lbl_L1_verOcrRs.Text = "启用"; + this.lbl_L1_verOcrRs.BackColor = Color.Yellow; + })); + break; + case 2: + this.Invoke(new Action(() => + { + this.lbl_L1_verOcrRs.Text = "启用"; + this.lbl_L1_verOcrRs.BackColor = Color.Yellow; + this.lbl_L2_verOcrRs.Text = "启用"; + this.lbl_L2_verOcrRs.BackColor = Color.Yellow; + })); + break; + case 3: + this.Invoke(new Action(() => + { + this.lbl_L1_verOcrRs.Text = "启用"; + this.lbl_L1_verOcrRs.BackColor = Color.Yellow; + this.lbl_L2_verOcrRs.Text = "启用"; + this.lbl_L2_verOcrRs.BackColor = Color.Yellow; + this.lbl_L3_verOcrRs.Text = "启用"; + this.lbl_L3_verOcrRs.BackColor = Color.Yellow; + })); + break; + case 4: + this.Invoke(new Action(() => + { + this.lbl_L1_verOcrRs.Text = "启用"; + this.lbl_L1_verOcrRs.BackColor = Color.Yellow; + this.lbl_L2_verOcrRs.Text = "启用"; + this.lbl_L2_verOcrRs.BackColor = Color.Yellow; + this.lbl_L3_verOcrRs.Text = "启用"; + this.lbl_L3_verOcrRs.BackColor = Color.Yellow; + this.lbl_L4_verOcrRs.Text = "启用"; + this.lbl_L4_verOcrRs.BackColor = Color.Yellow; + })); + break; + case 5: + this.Invoke(new Action(() => + { + this.lbl_L1_verOcrRs.Text = "启用"; + this.lbl_L1_verOcrRs.BackColor = Color.Yellow; + this.lbl_L2_verOcrRs.Text = "启用"; + this.lbl_L2_verOcrRs.BackColor = Color.Yellow; + this.lbl_L3_verOcrRs.Text = "启用"; + this.lbl_L3_verOcrRs.BackColor = Color.Yellow; + this.lbl_L4_verOcrRs.Text = "启用"; + this.lbl_L4_verOcrRs.BackColor = Color.Yellow; + this.lbl_L5_verOcrRs.Text = "启用"; + this.lbl_L5_verOcrRs.BackColor = Color.Yellow; + })); + break; + case 6: + this.Invoke(new Action(() => + { + this.lbl_L1_verOcrRs.Text = "启用"; + this.lbl_L1_verOcrRs.BackColor = Color.Yellow; + this.lbl_L2_verOcrRs.Text = "启用"; + this.lbl_L2_verOcrRs.BackColor = Color.Yellow; + this.lbl_L3_verOcrRs.Text = "启用"; + this.lbl_L3_verOcrRs.BackColor = Color.Yellow; + this.lbl_L4_verOcrRs.Text = "启用"; + this.lbl_L4_verOcrRs.BackColor = Color.Yellow; + this.lbl_L5_verOcrRs.Text = "启用"; + this.lbl_L5_verOcrRs.BackColor = Color.Yellow; + this.lbl_L6_verOcrRs.Text = "启用"; + this.lbl_L6_verOcrRs.BackColor = Color.Yellow; + + })); + break; + case 7: + this.Invoke(new Action(() => + { + this.lbl_L1_verOcrRs.Text = "启用"; + this.lbl_L1_verOcrRs.BackColor = Color.Yellow; + this.lbl_L2_verOcrRs.Text = "启用"; + this.lbl_L2_verOcrRs.BackColor = Color.Yellow; + this.lbl_L3_verOcrRs.Text = "启用"; + this.lbl_L3_verOcrRs.BackColor = Color.Yellow; + this.lbl_L4_verOcrRs.Text = "启用"; + this.lbl_L4_verOcrRs.BackColor = Color.Yellow; + this.lbl_L5_verOcrRs.Text = "启用"; + this.lbl_L5_verOcrRs.BackColor = Color.Yellow; + this.lbl_L6_verOcrRs.Text = "启用"; + this.lbl_L6_verOcrRs.BackColor = Color.Yellow; + this.lbl_L7_verOcrRs.Text = "启用"; + this.lbl_L7_verOcrRs.BackColor = Color.Yellow; + })); + break; + case 8: + this.Invoke(new Action(() => + { + this.lbl_L1_verOcrRs.Text = "启用"; + this.lbl_L1_verOcrRs.BackColor = Color.Yellow; + this.lbl_L2_verOcrRs.Text = "启用"; + this.lbl_L2_verOcrRs.BackColor = Color.Yellow; + this.lbl_L3_verOcrRs.Text = "启用"; + this.lbl_L3_verOcrRs.BackColor = Color.Yellow; + this.lbl_L4_verOcrRs.Text = "启用"; + this.lbl_L4_verOcrRs.BackColor = Color.Yellow; + this.lbl_L5_verOcrRs.Text = "启用"; + this.lbl_L5_verOcrRs.BackColor = Color.Yellow; + this.lbl_L6_verOcrRs.Text = "启用"; + this.lbl_L6_verOcrRs.BackColor = Color.Yellow; + this.lbl_L7_verOcrRs.Text = "启用"; + this.lbl_L7_verOcrRs.BackColor = Color.Yellow; + this.lbl_L8_verOcrRs.Text = "启用"; + this.lbl_L8_verOcrRs.BackColor = Color.Yellow; + })); + break; + case 9: + this.Invoke(new Action(() => + { + this.lbl_L1_verOcrRs.Text = "启用"; + this.lbl_L1_verOcrRs.BackColor = Color.Yellow; + this.lbl_L2_verOcrRs.Text = "启用"; + this.lbl_L2_verOcrRs.BackColor = Color.Yellow; + this.lbl_L3_verOcrRs.Text = "启用"; + this.lbl_L3_verOcrRs.BackColor = Color.Yellow; + this.lbl_L4_verOcrRs.Text = "启用"; + this.lbl_L4_verOcrRs.BackColor = Color.Yellow; + this.lbl_L5_verOcrRs.Text = "启用"; + this.lbl_L5_verOcrRs.BackColor = Color.Yellow; + this.lbl_L6_verOcrRs.Text = "启用"; + this.lbl_L6_verOcrRs.BackColor = Color.Yellow; + this.lbl_L7_verOcrRs.Text = "启用"; + this.lbl_L7_verOcrRs.BackColor = Color.Yellow; + this.lbl_L8_verOcrRs.Text = "启用"; + this.lbl_L8_verOcrRs.BackColor = Color.Yellow; + this.lbl_L9_verOcrRs.Text = "启用"; + this.lbl_L9_verOcrRs.BackColor = Color.Yellow; + })); + break; + } + } /// /// 手动ocr /// @@ -1112,7 +1104,7 @@ namespace TetraPackOCR /// private void btn_manualOcr_Click(object sender, EventArgs e) { - m_dev_cam0.ExecuteSoftwareTrigger();//相机1触发 = OCR拍照 + m_dev_cam_ocr.ExecuteSoftwareTrigger();//相机1触发 = OCR拍照 log.Info("手动触发OCR"); } /// @@ -1128,7 +1120,7 @@ namespace TetraPackOCR private bool autorunFlag = false; private void btn_StarDet_manual_Click(object sender, EventArgs e) { - if (cam0Opened == false || cam1Opened == false) + if (camOCROpened == false || cam1Opened == false) { MessageBox.Show("相机未打开,无法进行检测,请检查相机连接及状态!"); return; @@ -1140,27 +1132,12 @@ namespace TetraPackOCR return; } - this.Invoke(new Action(() => + if (MessageBox.Show("确认OCR相机处于零点位置?", "提示", MessageBoxButtons.YesNo) == DialogResult.No) { - this.lbl_L1_verOcrRs.Text = "未启用"; - this.lbl_L1_verOcrRs.BackColor = Color.Gray; - this.lbl_L2_verOcrRs.Text = "未启用"; - this.lbl_L2_verOcrRs.BackColor = Color.Gray; - this.lbl_L3_verOcrRs.Text = "未启用"; - this.lbl_L3_verOcrRs.BackColor = Color.Gray; - this.lbl_L4_verOcrRs.Text = "未启用"; - this.lbl_L4_verOcrRs.BackColor = Color.Gray; - this.lbl_L5_verOcrRs.Text = "未启用"; - this.lbl_L5_verOcrRs.BackColor = Color.Gray; - this.lbl_L6_verOcrRs.Text = "未启用"; - this.lbl_L6_verOcrRs.BackColor = Color.Gray; - this.lbl_L7_verOcrRs.Text = "未启用"; - this.lbl_L7_verOcrRs.BackColor = Color.Gray; - this.lbl_L8_verOcrRs.Text = "未启用"; - this.lbl_L8_verOcrRs.BackColor = Color.Gray; - this.lbl_L9_verOcrRs.Text = "未启用"; - this.lbl_L9_verOcrRs.BackColor = Color.Gray; - })); + return; + } + + InitLableColumn(); autorunFlag = check_Autorun.Checked; btn_StarDet_manual.Enabled = false; @@ -1171,32 +1148,7 @@ namespace TetraPackOCR list_Log.Clear(); log.Info("手动触发开始"); } - - /// - /// 字符排序 - /// - /// 设计 - /// - /// - /// - private string ExecelGetOcrDealWithForShow(string d, string l) - { - string rescult = ""; - string[] dd = d.Split('-'); - //for (int i = 0; i < dd.Length-1; i++) - //{ - // rescult = rescult + dd[0]; - //} - //rescult = dd[0].Remove(0, 1); - string[] ll = l.Split(','); - for (int i = 0; i < ll.Length; i++) - { - ll[i] = ll[i].Replace(" ", ""); ll[i] = ll[i].Replace("[", ""); ll[i] = ll[i].Replace("]", ""); - string[] str = ll[i].Split('-'); - rescult = rescult + dd[1] + str[1] + str[0]; - } - return rescult; - } + private List ExecelGetOcrText(string design, string layer) { List result = new List(); @@ -1281,7 +1233,7 @@ namespace TetraPackOCR log.Info("PLC触发OCR相机,正在拍照计算..."); try { - m_dev_cam0.ExecuteSoftwareTrigger(); + m_dev_cam_ocr.ExecuteSoftwareTrigger(); } catch (Exception ex) { @@ -1599,66 +1551,6 @@ namespace TetraPackOCR ShowTheLansRs(mMatchingStr, (float)m1 / (float)ocrTextResult.Count); } - //byte[] ocrimagebyte = File.ReadAllBytes(file.FileName); - //Bitmap Bmp = new Bitmap(new MemoryStream(ocrimagebyte)); - //List lastocr = new List(); - //OCRResult ocrResult = Engine.DetectText(ocrimagebyte); - - //// log.Debug("读取原始数据1:" + ocrResult.JsonText); - //List pointsList = new List(); - - //string[] sd = Design.Split('-'); - //foreach (var item in ocrResult.TextBlocks) //将检测框绘制在图片上 - //{ - // if (item.Text.Contains(sd[1])) - // { - // using (Graphics g = Graphics.FromImage(Bmp)) - // { - // g.DrawPolygon(new Pen(Brushes.Red, 2), item.BoxPoints.Select(x => new PointF() { X = x.X, Y = x.Y }).ToArray()); - // } - // //lastocr.Add(item.Text); - - // pointsList.Add(new Point(item.BoxPoints[0].X, item.BoxPoints[0].Y, item.Text)); - // } - //} - - //List paixujeguo = paixu(pointsList); - //foreach (var it in paixujeguo) - //{ - // lastocr.Add(it.txt); - //} - - - - ////对图像显示区更新 - //Ocr_picBox.BackgroundImage = null; - //Ocr_picBox.BackgroundImage = Bmp; - - //txt_readOcrResultShow.Clear(); - - //if (!Coprinted_ordeFlag) //判断是否为共印订单 - //{ - // txt_readOcrResultShow.Text = GETOCR(lastocr, Design); - // log.Info("字符读取结果:" + GETOCR(lastocr, Design)); - - // int distance = CalculateAcc(ExecelGetOcrDealWithForShow(Design, Layers), GETOCR(lastocr, Design)); - // float maxLength = Math.Max(ExecelGetOcrDealWithForShow(Design, Layers).Length, GETOCR(lastocr, Design).Length); - // float strSimilarity = (maxLength - distance) / maxLength; - // ShowTheLansRs(mMatchingStr, strSimilarity); - //} - //else - //{ - // txt_readOcrResultShow.Text = GETOCR(lastocr, Design); - // log.Info("字符读取结果:" + GETOCR(lastocr, Design)); - - // int distance = CalculateAcc(verocr[mMatchingStr], GETOCR(lastocr, Design)); - // float maxLength = Math.Max(verocr[mMatchingStr].Length, GETOCR(lastocr, Design).Length); - // float strSimilarity = (maxLength - distance) / maxLength; - - // ShowTheLansRs(mMatchingStr, strSimilarity); - - //} - NoticePLCCompleteOCR(); } } @@ -1809,51 +1701,7 @@ namespace TetraPackOCR { return "未能匹配到对应字符请查看产品是否超标,或订单号是否正确"; } - } - /// - /// 使用Levenshtein Distance计算字符串相似度 - /// - /// excel取到的验证字符 - /// 读取到的字符 - int CalculateAcc(string readocr, string getocr) - { - int columnSize = getocr.Length; - int rowSize = readocr.Length; - if (columnSize == 0) - { - return rowSize; - } - if (rowSize == 0) - { - return columnSize; - } - int[,] matrix = new int[rowSize + 1, columnSize + 1]; - for (int i = 0; i <= columnSize; i++) - { - matrix[0, 1] = i;//ai提示此处应为matrix[0,i]=i; - } - for (int j = 1; j <= rowSize; j++)//ai提示此处应为j=0 - { - matrix[j, 0] = j; - } - - for (int i = 0; i < rowSize; i++) - { - for (int j = 0; j < columnSize; j++) - { - int sign; - if (getocr[j].Equals(readocr[i])) - sign = 0; - else - sign = 1; - matrix[i + 1, j + 1] = Math.Min(Math.Min(matrix[i, j] + sign, matrix[i + 1, j] + 1), matrix[i, j + 1] + 1); - } - } - - return matrix[rowSize, columnSize]; - - } - + } private void button1_Click(object sender, EventArgs e) { btn_StarDet_manual.Enabled = true;