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;