cam0 to camOCR
This commit is contained in:
@@ -112,7 +112,7 @@ namespace TetraPackOCR
|
||||
/// <summary>
|
||||
/// 相机对象 1和2
|
||||
/// </summary>
|
||||
IDevice m_dev_cam0, m_dev_cam1;
|
||||
IDevice m_dev_cam_ocr, m_dev_cam1;
|
||||
List<IDeviceInfo> 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
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
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;
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// 手动ocr
|
||||
/// </summary>
|
||||
@@ -1112,7 +1104,7 @@ namespace TetraPackOCR
|
||||
/// <param name="e"></param>
|
||||
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");
|
||||
}
|
||||
/// <summary>
|
||||
@@ -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;
|
||||
@@ -1172,31 +1149,6 @@ namespace TetraPackOCR
|
||||
log.Info("手动触发开始");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 字符排序
|
||||
/// </summary>
|
||||
/// <param name="d">设计</param>
|
||||
/// <param name="l"></param>
|
||||
/// <param name="c"></param>
|
||||
/// <returns></returns>
|
||||
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<string> ExecelGetOcrText(string design, string layer)
|
||||
{
|
||||
List<string> result = new List<string>();
|
||||
@@ -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<string> lastocr = new List<string>();
|
||||
//OCRResult ocrResult = Engine.DetectText(ocrimagebyte);
|
||||
|
||||
//// log.Debug("读取原始数据1:" + ocrResult.JsonText);
|
||||
//List<Point> pointsList = new List<Point>();
|
||||
|
||||
//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<Point> 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();
|
||||
}
|
||||
}
|
||||
@@ -1810,50 +1702,6 @@ namespace TetraPackOCR
|
||||
return "未能匹配到对应字符请查看产品是否超标,或订单号是否正确";
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// 使用Levenshtein Distance计算字符串相似度
|
||||
/// </summary>
|
||||
/// <param name="readocr">excel取到的验证字符</param>
|
||||
/// <param name="getocr">读取到的字符</param>
|
||||
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;
|
||||
|
||||
Reference in New Issue
Block a user