diff --git a/LibCamera/IImageCollector.cs b/LibCamera/IImageCollector.cs
deleted file mode 100644
index 7107e64..0000000
--- a/LibCamera/IImageCollector.cs
+++ /dev/null
@@ -1,31 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using System.Drawing;
-
-namespace LibCamera
-{
- public delegate void OnImageCollectorMessage(string msg);
- public delegate void OnImageCollectorInfo(string info);
- public delegate void OnImageCollectorConnected(string serial);
- public delegate void OnImageCollectorDisConnected(string serial);
- public delegate void OnImageCollectorData(byte[] imageData);
- public interface IImageCollector
- {
- event OnImageCollectorMessage OnImageCollectorMessage;
- event OnImageCollectorInfo OnImageCollectorInfo;
- event OnImageCollectorConnected OnImageCollectorConnected;
- event OnImageCollectorDisConnected OnImageCollectorDisConnected;
- event OnImageCollectorData OnImageCollectorData;
- void Start();
- void Stop();
- void SetPixelFormat(string pixelFormat);
- void SetExposureTime(double exposureTime);
- void SetGainRawGain(double gain);
- void SetAcquisitionMode(string acquisitionMode);
- void SetTriggerMode(string triggerMode);
- void StartSoftwareGrabbing();
- }
-}
diff --git a/LibCamera/ImageCollector.cs b/LibCamera/ImageCollector.cs
deleted file mode 100644
index f14a622..0000000
--- a/LibCamera/ImageCollector.cs
+++ /dev/null
@@ -1,152 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading;
-using System.Threading.Tasks;
-using ThridLibray;
-
-namespace LibCamera
-{
- public class ImageCollector : IImageCollector
- {
- public event OnImageCollectorMessage OnImageCollectorMessage;
- public event OnImageCollectorInfo OnImageCollectorInfo;
- public event OnImageCollectorConnected OnImageCollectorConnected;
- public event OnImageCollectorDisConnected OnImageCollectorDisConnected;
- public event OnImageCollectorData OnImageCollectorData;
- private IDevice m_dev_cam;
- private bool m_abort = false;
- private DateTime m_start = DateTime.Now;
- private string m_serial;
- public ImageCollector(string serial)
- {
- m_serial = serial;
- }
- public void Start()
- {
- m_abort = false;
- Task.Run(() => { ConnectDevice(); });
- }
- private void ConnectDevice()
- {
- m_start = DateTime.Now.AddSeconds(-6);
- while (true)
- {
- if (m_abort)
- return;
- Thread.Sleep(100);
- try
- {
- if (m_dev_cam == null || (m_dev_cam.IsOpen == false && ((DateTime.Now - m_start).TotalSeconds >= 5)))
- {
- OnImageCollectorDisConnected?.Invoke(m_serial);
- if (m_dev_cam != null && !m_dev_cam.IsOpen)
- m_dev_cam.StreamGrabber.ImageGrabbed -= StreamGrabber_ImageGrabbed;
- m_dev_cam = null;
- Enumerator.EnumerateDevices();
- m_dev_cam = Enumerator.GetDeviceByKey(m_serial);
- if (m_dev_cam == null)
- continue;
- m_dev_cam.Open();
- if (m_dev_cam.IsOpen)
- {
- m_dev_cam.StreamGrabber.ImageGrabbed += StreamGrabber_ImageGrabbed;
- OnImageCollectorInfo?.Invoke($"Device {m_serial} connected.");
- OnImageCollectorConnected?.Invoke(m_serial);
- }
- }
- }
- catch (Exception ex)
- {
- m_dev_cam = null;
- OnImageCollectorMessage?.Invoke($"ConnectDevice {m_serial} Exception: {ex.Message}");
- }
- }
- }
-
- private void StreamGrabber_ImageGrabbed(object sender, GrabbedEventArgs e)
- {
- OnImageCollectorData?.Invoke(e.GrabResult.Image);
- }
- public void Stop()
- {
- try
- {
- m_abort = true;
- if (m_dev_cam != null)
- {
- m_dev_cam.StreamGrabber.ImageGrabbed -= StreamGrabber_ImageGrabbed;
- if (m_dev_cam.IsOpen)
- {
- m_dev_cam.Close();
- }
- m_dev_cam = null;
- }
- }
- catch (Exception ex)
- {
- OnImageCollectorMessage?.Invoke($"Stop {m_serial} Exception: {ex.Message}");
- }
- }
- private bool IsDeviceConnected()
- {
- return m_dev_cam != null && m_dev_cam.IsOpen;
- }
- public void SetPixelFormat(string pixelFormat)
- {
- if (!IsDeviceConnected())
- return;
- using (IEnumParameter p = m_dev_cam.ParameterCollection[ParametrizeNameSet.ImagePixelFormat])
- {
- p.SetValue(pixelFormat);
- }
- }
- public void SetExposureTime(double exposureTime)
- {
- if (!IsDeviceConnected())
- return;
- using (IFloatParameter p = m_dev_cam.ParameterCollection[ParametrizeNameSet.ExposureTime])
- {
- p.SetValue(exposureTime);
- }
- }
- public void SetGainRawGain(double gain)
- {
- if (!IsDeviceConnected())
- return;
- using (IFloatParameter p = m_dev_cam.ParameterCollection[ParametrizeNameSet.GainRaw])
- {
- p.SetValue(gain);
- }
- }
- public void SetAcquisitionMode(string acquisitionMode)
- {
- if (!IsDeviceConnected())
- return;
- using (IEnumParameter p = m_dev_cam.ParameterCollection[ParametrizeNameSet.AcquisitionMode])
- {
- p.SetValue(acquisitionMode);
- }
- }
- public void SetTriggerMode(string triggerMode)
- {
- if (!IsDeviceConnected())
- return;
- using (IEnumParameter p = m_dev_cam.ParameterCollection[ParametrizeNameSet.TriggerMode])
- {
- p.SetValue(triggerMode);
- }
- }
- public void StartSoftwareGrabbing()
- {
- if (!IsDeviceConnected())
- return;
- m_dev_cam.TriggerSet.Open(TriggerSourceEnum.Software);
- if (!m_dev_cam.GrabUsingGrabLoopThread())
- OnImageCollectorMessage("开启采集失败");
- else
- OnImageCollectorInfo($"相机{m_serial}加载完毕");
- }
- }
-}
diff --git a/LibCamera/LibCamera.csproj b/LibCamera/LibCamera.csproj
deleted file mode 100644
index b58fd53..0000000
--- a/LibCamera/LibCamera.csproj
+++ /dev/null
@@ -1,73 +0,0 @@
-
-
-
-
- Debug
- AnyCPU
- {884C8BB2-78D9-4EED-A2FA-492F075E1F64}
- Library
- Properties
- LibCamera
- LibCamera
- v4.7.2
- 512
- true
-
-
- true
- full
- false
- bin\Debug\
- DEBUG;TRACE
- prompt
- 4
-
-
- pdbonly
- true
- bin\Release\
- TRACE
- prompt
- 4
-
-
- true
- bin\x64\Debug\
- DEBUG;TRACE
- full
- x64
- 7.3
- prompt
-
-
- bin\x64\Release\
- TRACE
- true
- pdbonly
- x64
- 7.3
- prompt
-
-
-
- ..\dll\CLIDelegate.dll
-
-
-
-
-
-
-
-
-
-
- ..\dll\ThridLibray.dll
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/LibCamera/Properties/AssemblyInfo.cs b/LibCamera/Properties/AssemblyInfo.cs
deleted file mode 100644
index 2e8e1ab..0000000
--- a/LibCamera/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,33 +0,0 @@
-using System.Reflection;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-
-// 有关程序集的一般信息由以下
-// 控制。更改这些特性值可修改
-// 与程序集关联的信息。
-[assembly: AssemblyTitle("LibCamera")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("HP")]
-[assembly: AssemblyProduct("LibCamera")]
-[assembly: AssemblyCopyright("Copyright © HP 2025")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-// 将 ComVisible 设置为 false 会使此程序集中的类型
-//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型
-//请将此类型的 ComVisible 特性设置为 true。
-[assembly: ComVisible(false)]
-
-// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
-[assembly: Guid("884c8bb2-78d9-4eed-a2fa-492f075e1f64")]
-
-// 程序集的版本信息由下列四个值组成:
-//
-// 主版本
-// 次版本
-// 生成号
-// 修订号
-//
-[assembly: AssemblyVersion("1.0.0.0")]
-[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/LibImageService/ImageService.cs b/LibImageService/ImageService.cs
deleted file mode 100644
index d2c6d97..0000000
--- a/LibImageService/ImageService.cs
+++ /dev/null
@@ -1,46 +0,0 @@
-using LibCamera;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace LibImageService
-{
- public class ImageService
- {
- IImageCollector m_imageCollectorOCR;
- IImageCollector m_imageCollectorLocation;
- //private Dictionary
- public ImageService(string serialLocation, string serialOCR)
- {
- m_imageCollectorLocation = new ImageCollector(serialLocation);
- m_imageCollectorOCR = new ImageCollector(serialOCR);
- m_imageCollectorLocation.OnImageCollectorData += M_imageCollectorLocation_OnImageCollectorData;
- m_imageCollectorLocation.OnImageCollectorMessage += M_imageCollectorLocation_OnImageCollectorMessage;
- m_imageCollectorLocation.OnImageCollectorInfo += M_imageCollectorLocation_OnImageCollectorInfo;
-
- }
-
- private void M_imageCollectorLocation_OnImageCollectorInfo(string info)
- {
- throw new NotImplementedException();
- }
-
- private void M_imageCollectorLocation_OnImageCollectorMessage(string msg)
- {
- throw new NotImplementedException();
- }
-
- private void M_imageCollectorLocation_OnImageCollectorData(byte[] imageData)
- {
- throw new NotImplementedException();
- }
-
- public void Start()
- {
- m_imageCollectorLocation.Start();
- m_imageCollectorOCR.Start();
- }
- }
-}
diff --git a/LibImageService/LibImageService.csproj b/LibImageService/LibImageService.csproj
deleted file mode 100644
index 014c6e3..0000000
--- a/LibImageService/LibImageService.csproj
+++ /dev/null
@@ -1,73 +0,0 @@
-
-
-
-
- Debug
- AnyCPU
- {BC738E23-1B32-497B-A654-569212EF4647}
- Library
- Properties
- LibImageService
- LibImageService
- v4.7.2
- 512
- true
-
-
- true
- full
- false
- bin\Debug\
- DEBUG;TRACE
- prompt
- 4
-
-
- pdbonly
- true
- bin\Release\
- TRACE
- prompt
- 4
-
-
- true
- bin\x64\Debug\
- DEBUG;TRACE
- full
- x64
- 7.3
- prompt
-
-
- bin\x64\Release\
- TRACE
- true
- pdbonly
- x64
- 7.3
- prompt
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {884c8bb2-78d9-4eed-a2fa-492f075e1f64}
- LibCamera
-
-
-
-
\ No newline at end of file
diff --git a/LibImageService/Properties/AssemblyInfo.cs b/LibImageService/Properties/AssemblyInfo.cs
deleted file mode 100644
index 65bdb04..0000000
--- a/LibImageService/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,33 +0,0 @@
-using System.Reflection;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-
-// 有关程序集的一般信息由以下
-// 控制。更改这些特性值可修改
-// 与程序集关联的信息。
-[assembly: AssemblyTitle("LibImageService")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("HP")]
-[assembly: AssemblyProduct("LibImageService")]
-[assembly: AssemblyCopyright("Copyright © HP 2025")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-// 将 ComVisible 设置为 false 会使此程序集中的类型
-//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型
-//请将此类型的 ComVisible 特性设置为 true。
-[assembly: ComVisible(false)]
-
-// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
-[assembly: Guid("bc738e23-1b32-497b-a654-569212ef4647")]
-
-// 程序集的版本信息由下列四个值组成:
-//
-// 主版本
-// 次版本
-// 生成号
-// 修订号
-//
-[assembly: AssemblyVersion("1.0.0.0")]
-[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/TetraPark.OCR.sln b/TetraPark.OCR.sln
index 8432cfa..1ecb037 100644
--- a/TetraPark.OCR.sln
+++ b/TetraPark.OCR.sln
@@ -1,14 +1,10 @@
Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio Version 17
-VisualStudioVersion = 17.14.36518.9 d17.14
+# Visual Studio Version 18
+VisualStudioVersion = 18.0.11123.170 d18.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TetraParkOCR", "TetraParkOCR\TetraParkOCR.csproj", "{533800AA-D6A6-4EF7-825F-AA143B1EE901}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LibCamera", "LibCamera\LibCamera.csproj", "{884C8BB2-78D9-4EED-A2FA-492F075E1F64}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LibImageService", "LibImageService\LibImageService.csproj", "{BC738E23-1B32-497B-A654-569212EF4647}"
-EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -31,30 +27,6 @@ Global
{533800AA-D6A6-4EF7-825F-AA143B1EE901}.Release|x64.Build.0 = Release|x64
{533800AA-D6A6-4EF7-825F-AA143B1EE901}.Release|x86.ActiveCfg = Release|x86
{533800AA-D6A6-4EF7-825F-AA143B1EE901}.Release|x86.Build.0 = Release|x86
- {884C8BB2-78D9-4EED-A2FA-492F075E1F64}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {884C8BB2-78D9-4EED-A2FA-492F075E1F64}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {884C8BB2-78D9-4EED-A2FA-492F075E1F64}.Debug|x64.ActiveCfg = Debug|x64
- {884C8BB2-78D9-4EED-A2FA-492F075E1F64}.Debug|x64.Build.0 = Debug|x64
- {884C8BB2-78D9-4EED-A2FA-492F075E1F64}.Debug|x86.ActiveCfg = Debug|Any CPU
- {884C8BB2-78D9-4EED-A2FA-492F075E1F64}.Debug|x86.Build.0 = Debug|Any CPU
- {884C8BB2-78D9-4EED-A2FA-492F075E1F64}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {884C8BB2-78D9-4EED-A2FA-492F075E1F64}.Release|Any CPU.Build.0 = Release|Any CPU
- {884C8BB2-78D9-4EED-A2FA-492F075E1F64}.Release|x64.ActiveCfg = Release|Any CPU
- {884C8BB2-78D9-4EED-A2FA-492F075E1F64}.Release|x64.Build.0 = Release|Any CPU
- {884C8BB2-78D9-4EED-A2FA-492F075E1F64}.Release|x86.ActiveCfg = Release|Any CPU
- {884C8BB2-78D9-4EED-A2FA-492F075E1F64}.Release|x86.Build.0 = Release|Any CPU
- {BC738E23-1B32-497B-A654-569212EF4647}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {BC738E23-1B32-497B-A654-569212EF4647}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {BC738E23-1B32-497B-A654-569212EF4647}.Debug|x64.ActiveCfg = Debug|x64
- {BC738E23-1B32-497B-A654-569212EF4647}.Debug|x64.Build.0 = Debug|x64
- {BC738E23-1B32-497B-A654-569212EF4647}.Debug|x86.ActiveCfg = Debug|Any CPU
- {BC738E23-1B32-497B-A654-569212EF4647}.Debug|x86.Build.0 = Debug|Any CPU
- {BC738E23-1B32-497B-A654-569212EF4647}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {BC738E23-1B32-497B-A654-569212EF4647}.Release|Any CPU.Build.0 = Release|Any CPU
- {BC738E23-1B32-497B-A654-569212EF4647}.Release|x64.ActiveCfg = Release|Any CPU
- {BC738E23-1B32-497B-A654-569212EF4647}.Release|x64.Build.0 = Release|Any CPU
- {BC738E23-1B32-497B-A654-569212EF4647}.Release|x86.ActiveCfg = Release|Any CPU
- {BC738E23-1B32-497B-A654-569212EF4647}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/TetraParkOCR/App.config b/TetraParkOCR/App.config
index 1e2604c..b82c6d1 100644
--- a/TetraParkOCR/App.config
+++ b/TetraParkOCR/App.config
@@ -49,6 +49,10 @@
+
+
+
+
diff --git a/TetraParkOCR/Form1.cs b/TetraParkOCR/Form1.cs
index 67187d8..265d241 100644
--- a/TetraParkOCR/Form1.cs
+++ b/TetraParkOCR/Form1.cs
@@ -51,7 +51,7 @@ namespace TetraPackOCR
#region 字段 委托
-
+
//创建字段log
ILog log = LogManager.GetLogger(typeof(Form1));
///
@@ -93,16 +93,12 @@ namespace TetraPackOCR
///
string vppdetFile = AppDomain.CurrentDomain.BaseDirectory + "Data\\VPPFile\\liledet.vpp";
///
- /// OCRVpp文件
- ///
- string vppocrFile = AppDomain.CurrentDomain.BaseDirectory + "Data\\VPPFile\\lileOCR.vpp";
- ///
/// 存图路径
///
string SaveImageFileOCR = AppDomain.CurrentDomain.BaseDirectory + "SaveImage\\OCR";//ocr存图
string SaveImageFileDET = AppDomain.CurrentDomain.BaseDirectory + "SaveImage\\Det";//ocr存图
- private CogJobManager myJobManager1;//, myJobManager2;
- private CogJob myJob1;//, myJob2;
+ private CogJobManager myJobManager1;
+ private CogJob myJob1;
private string[] verocr = new string[20];
@@ -144,13 +140,22 @@ namespace TetraPackOCR
btn_StarDet_manual.Enabled = false;
//asf.controllInitializeSize(this);
log.Info("软件正在加载...");
+ this.Enabled = false;
Action action = (() =>
{
- //InitializeCamer1();
- //InitializeCamer2();
+ InitializeCamer1();
+ InitializeCamer2();
InitializePaddleOCR();
- myJobManager1 = CogSerializer.LoadObjectFromFile(vppdetFile) as CogJobManager;
- //myJobManager2 = CogSerializer.LoadObjectFromFile(vppocrFile) as CogJobManager;
+
+ try
+ {
+ myJobManager1 = CogSerializer.LoadObjectFromFile(vppdetFile) as CogJobManager;
+ }
+ catch (Exception ex)
+ {
+ log.Error("定位VPP文件加载失败,请检查文件路径是否正确:" + ex.Message);
+ myJobManager1 = null;
+ }
InitializeCC24();
@@ -165,6 +170,7 @@ namespace TetraPackOCR
this.btn_manualDet.Enabled = true;
check_Autorun.Enabled = true;
btn_StarDet_manual.Enabled = true;
+ this.Enabled = true;
}));
});
@@ -188,29 +194,21 @@ namespace TetraPackOCR
TaskFactory tskFactory = new TaskFactory();
tskFactory.ContinueWhenAll(tsk.ToArray(), FlashFormView =>
{
+ if (myJobManager1 != null)
+ {
+ myJob1 = myJobManager1.Job(0);
-
- myJob1 = myJobManager1.Job(0);
- //myJob2 = myJobManager2.Job(0);
-
- // 注册结果队列事件
- myJobManager1.UserResultAvailable += new CogJobManager.CogUserResultAvailableEventHandler(DetResult);
- // myJobManager2.UserResultAvailable += new CogJobManager.CogUserResultAvailableEventHandler(OCRResult);
-
+ // 注册结果队列事件
+ myJobManager1.UserResultAvailable += new CogJobManager.CogUserResultAvailableEventHandler(DetResult);
+ }
});
-
-
}
catch (Exception ex)
{
log.Error(ex.Message);
}
-
-
}
-
-
///
/// 窗体关闭
///
@@ -232,33 +230,19 @@ namespace TetraPackOCR
ClossCam();
- // 注销结果队列事件
+ //// 注销结果队列事件
myJobManager1.UserResultAvailable -= new CogJobManager.CogUserResultAvailableEventHandler(DetResult);
- //myJobManager2.UserResultAvailable -= new CogJobManager.CogUserResultAvailableEventHandler(OCRResult);
myJobManager1.Shutdown();
- //myJobManager2.Shutdown();
CloseCC24();
- Application.DoEvents();
- System.Environment.Exit(0);
+ //Application.DoEvents();
+ //System.Environment.Exit(0);
}
catch
{
- ClossCam();
-
- // 注销结果队列事件
- myJobManager1.UserResultAvailable -= new CogJobManager.CogUserResultAvailableEventHandler(DetResult);
- //myJobManager2.UserResultAvailable -= new CogJobManager.CogUserResultAvailableEventHandler(OCRResult);
- myJobManager1.Shutdown();
- //myJobManager2.Shutdown();
-
-
-
- CloseCC24();
-
Application.DoEvents();
System.Environment.Exit(0);
}
@@ -276,7 +260,7 @@ namespace TetraPackOCR
LogShowLib.LogHelper lib = new LogShowLib.LogHelper();
//为log4net导入配置文件
//若传入目录未找到配置文件,将创建一个LogConfig.xml
-
+
log4net.Config.XmlConfigurator.Configure(lib.GetXMLStream(AppDomain.CurrentDomain.BaseDirectory));
}
catch (Exception ex)
@@ -294,67 +278,77 @@ namespace TetraPackOCR
#region 相机1 定义为OCR相机
private void InitializeCamer1()
{
- DeviceList = Enumerator.EnumerateDevices(); //发现设备,搜索所有大华相机
+ try
+ {
+ DeviceList = Enumerator.EnumerateDevices(); //发现设备,搜索所有大华相机
- // m_dev_cam0 = Enumerator.GetDeviceByIndex(0);//通过索引获取
- m_dev_cam0 = Enumerator.GetDeviceByKey("Machine Vision:CK21686DAK00001");//通过"设备厂商名:设备序列号"获取
- //m_dev_cam0 = Enumerator.GetDeviceByGigeIP("192.168.20.2");//通过IP地址获取
+ // m_dev_cam0 = Enumerator.GetDeviceByIndex(0);//通过索引获取
+ m_dev_cam0 = Enumerator.GetDeviceByKey("Machine Vision:CK21686DAK00001");//通过"设备厂商名:设备序列号"获取
+ if (m_dev_cam0 == 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_cam0.CameraOpened += m_dev0_CameraOpened;
- m_dev_cam0.CameraClosed += m_dev0_CameraClosed;
- m_dev_cam0.ConnectionLost += m_dev0_ConnectionLost;
+ if (!m_dev_cam0.Open())
+ {
+ MessageBox.Show("OCR相机打开失败");
+ }
+ // 设置图像格式
+ // set PixelFormat
+ using (IEnumParameter p = m_dev_cam0.ParameterCollection[ParametrizeNameSet.ImagePixelFormat])
+ {
+ ImagePixelFormat = "BayerRG8";
+ //ImagePixelFormat = "Mono8";
+ p.SetValue(ImagePixelFormat);
+ }
- if(!m_dev_cam0.Open())
- {
- MessageBox.Show("OCR相机打开失败");
- }
- // 设置图像格式
- // set PixelFormat
- using (IEnumParameter p = m_dev_cam0.ParameterCollection[ParametrizeNameSet.ImagePixelFormat])
- {
- ImagePixelFormat = "BayerRG8";
- //ImagePixelFormat = "Mono8";
- p.SetValue(ImagePixelFormat);
- }
+ // 设置曝光
- // 设置曝光
-
- using (IFloatParameter p = m_dev_cam0.ParameterCollection[ParametrizeNameSet.ExposureTime])
- {
- p.SetValue(80000);
- }
- // 设置增益
-
- using (IFloatParameter p = m_dev_cam0.ParameterCollection[ParametrizeNameSet.GainRaw])
- {
- p.SetValue(2.5);
- }
- using (IEnumParameter p = m_dev_cam0.ParameterCollection[ParametrizeNameSet.AcquisitionMode])
- {
- p.SetValue("Continuous");
- }
- using (IEnumParameter p = m_dev_cam0.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;
- // 打开Software Trigger
- // Set Software Trigger
- m_dev_cam0.TriggerSet.Open(TriggerSourceEnum.Software);
- if (!m_dev_cam0.GrabUsingGrabLoopThread())
- {
+ using (IFloatParameter p = m_dev_cam0.ParameterCollection[ParametrizeNameSet.ExposureTime])
+ {
+ p.SetValue(80000);
+ }
+ // 设置增益
- // 开启采集失败
- log.Error("开启采集失败");
+ using (IFloatParameter p = m_dev_cam0.ParameterCollection[ParametrizeNameSet.GainRaw])
+ {
+ p.SetValue(2.5);
+ }
+ using (IEnumParameter p = m_dev_cam0.ParameterCollection[ParametrizeNameSet.AcquisitionMode])
+ {
+ p.SetValue("Continuous");
+ }
+ using (IEnumParameter p = m_dev_cam0.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;
+ // 打开Software Trigger
+ // Set Software Trigger
+ m_dev_cam0.TriggerSet.Open(TriggerSourceEnum.Software);
+ if (!m_dev_cam0.GrabUsingGrabLoopThread())
+ {
+ // 开启采集失败
+ log.Error("开启采集失败");
+ }
+ log.Info("OCR相机加载完毕");
+ }
+ catch (Exception ex)
+ {
+ log.Error("OCR相机加载失败");
+ m_dev_cam0 = null;
}
- log.Info("OCR相机加载完毕");
}
#endregion
@@ -394,7 +388,7 @@ namespace TetraPackOCR
bmp = e.GrabResult.ToBitmap(true);
OCRResult(bmp);
-
+
}
catch (Exception ex)
{
@@ -406,65 +400,79 @@ namespace TetraPackOCR
#region 相机2 定义为定位相机
private void InitializeCamer2()
{
- DeviceList = Enumerator.EnumerateDevices(); //发现设备,搜索所有大华相机
-
- //m_dev_cam1 = Enumerator.GetDeviceByIndex(1);//通过索引获取
- m_dev_cam1 = Enumerator.GetDeviceByKey("Machine Vision:BK27185BAK00038");//通过"设备厂商名:设备序列号"获取
- //m_dev_cam1 = Enumerator.GetDeviceByGigeIP("192.168.10.1");//通过IP地址获取
-
- m_dev_cam1.CameraOpened += m_dev1_CameraOpened;
- m_dev_cam1.CameraClosed += m_dev1_CameraClosed;
- m_dev_cam1.ConnectionLost += m_dev1_ConnectionLost;
-
- if (!m_dev_cam1.Open())
+ try
{
- MessageBox.Show("定位相机打开失败");
+ DeviceList = Enumerator.EnumerateDevices(); //发现设备,搜索所有大华相机
+
+ //m_dev_cam1 = Enumerator.GetDeviceByIndex(1);//通过索引获取
+ m_dev_cam1 = Enumerator.GetDeviceByKey("Machine Vision:BK27185BAK00038");//通过"设备厂商名:设备序列号"获取
+ //m_dev_cam1 = Enumerator.GetDeviceByGigeIP("192.168.10.1");//通过IP地址获取
+
+ if (m_dev_cam1 == null)
+ {
+ log.Error("未发现OCR相机,请检查相机连接");
+ return;
+ }
+ m_dev_cam1.CameraOpened += m_dev1_CameraOpened;
+ m_dev_cam1.CameraClosed += m_dev1_CameraClosed;
+ m_dev_cam1.ConnectionLost += m_dev1_ConnectionLost;
+
+ if (!m_dev_cam1.Open())
+ {
+ MessageBox.Show("定位相机打开失败");
+ }
+ // 设置图像格式
+ // set PixelFormat
+ using (IEnumParameter p = m_dev_cam1.ParameterCollection[ParametrizeNameSet.ImagePixelFormat])
+ {
+ ImagePixelFormat = "Mono";
+ p.SetValue(ImagePixelFormat);
+ }
+
+ // 设置曝光
+
+ using (IFloatParameter p = m_dev_cam1.ParameterCollection[ParametrizeNameSet.ExposureTime])
+ {
+ p.SetValue(80000);
+ }
+ // 设置增益
+
+ using (IFloatParameter p = m_dev_cam1.ParameterCollection[ParametrizeNameSet.GainRaw])
+ {
+ p.SetValue(1.0);
+ }
+ using (IEnumParameter p = m_dev_cam1.ParameterCollection[ParametrizeNameSet.AcquisitionMode])
+ {
+ p.SetValue("Continuous");
+ }
+ using (IEnumParameter p = m_dev_cam1.ParameterCollection[ParametrizeNameSet.TriggerMode])
+ {
+ 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
+ // Set Software Trigger
+ m_dev_cam1.TriggerSet.Open(TriggerSourceEnum.Software);
+ if (!m_dev_cam1.GrabUsingGrabLoopThread())
+ {
+
+ // 开启采集失败
+ log.Error("开启采集失败");
+ }
+ log.Info("定位相机加载完毕");
}
- // 设置图像格式
- // set PixelFormat
- using (IEnumParameter p = m_dev_cam1.ParameterCollection[ParametrizeNameSet.ImagePixelFormat])
+ catch (Exception ex)
{
- ImagePixelFormat = "Mono";
- p.SetValue(ImagePixelFormat);
+ log.Error("定位相机加载失败");
+ m_dev_cam1 = null;
}
- // 设置曝光
-
- using (IFloatParameter p = m_dev_cam1.ParameterCollection[ParametrizeNameSet.ExposureTime])
- {
- p.SetValue(80000);
- }
- // 设置增益
-
- using (IFloatParameter p = m_dev_cam1.ParameterCollection[ParametrizeNameSet.GainRaw])
- {
- p.SetValue(1.0);
- }
- using (IEnumParameter p = m_dev_cam1.ParameterCollection[ParametrizeNameSet.AcquisitionMode])
- {
- p.SetValue("Continuous");
- }
- using (IEnumParameter p = m_dev_cam1.ParameterCollection[ParametrizeNameSet.TriggerMode])
- {
- 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
- // Set Software Trigger
- m_dev_cam1.TriggerSet.Open(TriggerSourceEnum.Software);
- if (!m_dev_cam1.GrabUsingGrabLoopThread())
- {
-
- // 开启采集失败
- log.Error("开启采集失败");
- }
- log.Info("定位相机加载完毕");
}
#endregion
@@ -504,7 +512,7 @@ namespace TetraPackOCR
bmp = e.GrabResult.ToBitmap(true);
-
+
//Bitmap bmp = new Bitmap(cogimg.ToBitmap());
MemoryStream ms = new MemoryStream();
bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp);
@@ -549,20 +557,24 @@ namespace TetraPackOCR
void ClossCam()
{
//注销相机事件
- m_dev_cam0.CameraOpened -= m_dev0_CameraOpened;
- m_dev_cam0.CameraClosed -= m_dev0_CameraClosed;
- m_dev_cam0.ConnectionLost -= m_dev0_ConnectionLost;
-
- m_dev_cam1.CameraOpened -= m_dev1_CameraOpened;
- m_dev_cam1.CameraClosed -= m_dev1_CameraClosed;
- m_dev_cam1.ConnectionLost -= m_dev1_ConnectionLost;
-
- m_dev_cam0.ShutdownGrab();
- m_dev_cam0.Dispose();
- m_dev_cam0 = null;
- m_dev_cam1.ShutdownGrab();
- m_dev_cam1.Dispose();
- m_dev_cam1 = null;
+ if (m_dev_cam0 != 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;
+ }
+ if (m_dev_cam1 != null)
+ {
+ m_dev_cam1.CameraOpened -= m_dev1_CameraOpened;
+ m_dev_cam1.CameraClosed -= m_dev1_CameraClosed;
+ m_dev_cam1.ConnectionLost -= m_dev1_ConnectionLost;
+ m_dev_cam1.ShutdownGrab();
+ m_dev_cam1.Dispose();
+ m_dev_cam1 = null;
+ }
}
#endregion
#endregion
@@ -570,32 +582,38 @@ namespace TetraPackOCR
#region OCR模型参数初始化
private void InitializePaddleOCR()
{
- //模型初始化
- OCRModelConfig config = new OCRModelConfig(); //创建一个模型参数设置对象
- string rootPath = System.IO.Path.GetDirectoryName(typeof(OCRModelConfig).Assembly.Location); //程序的根目录
- config.det_infer = rootPath + @"\Data\OCRModel\det_infer"; //文字检测模型路径
- config.cls_infer = rootPath + @"\Data\OCRModel\cls_infer"; //文本角度模型路径
- config.rec_infer = rootPath + @"\Data\OCRModel\rec_infer"; //文字内容识别模型路径
- //以上三个模型参数的文件路径只需要写到存放的文件夹名称
- //对于字典来说需要写全加上后缀
- config.keys = rootPath + @"\Data\OCRModel\keys\ppocr_keys.txt"; //词典路径
+ try
+ {
+ //模型初始化
+ OCRModelConfig config = new OCRModelConfig(); //创建一个模型参数设置对象
+ string rootPath = System.IO.Path.GetDirectoryName(typeof(OCRModelConfig).Assembly.Location); //程序的根目录
+ config.det_infer = rootPath + @"\Data\OCRModel\det_infer"; //文字检测模型路径
+ config.cls_infer = rootPath + @"\Data\OCRModel\cls_infer"; //文本角度模型路径
+ config.rec_infer = rootPath + @"\Data\OCRModel\rec_infer"; //文字内容识别模型路径
+ //以上三个模型参数的文件路径只需要写到存放的文件夹名称
+ //对于字典来说需要写全加上后缀
+ config.keys = rootPath + @"\Data\OCRModel\keys\ppocr_keys.txt"; //词典路径
- //OCR参数设置
- OCRParameter OcrParameter = new OCRParameter(); //创建一个检测参数设置对象
-
- OcrParameter.cpu_math_library_num_threads = 8;//预测并发线程数
- OcrParameter.enable_mkldnn = true;//web部署该值建议设置为0,否则出错,内存如果使用很大,建议该值也设置为0.
- OcrParameter.cls = true; //是否执行文字方向分类;默认false
- OcrParameter.det = true;//是否开启方向检测,用于检测识别180旋转
- OcrParameter.rec = true;
- OcrParameter.use_angle_cls = true;//是否开启方向检测,用于检测识别180旋转
- OcrParameter.det_db_score_mode = true;//是否使用多段线,即文字区域是用多段线还是用矩形,
- OcrParameter.det_db_unclip_ratio = 1.5f;
- OcrParameter.max_side_len = 1280;
+ //OCR参数设置
+ OCRParameter OcrParameter = new OCRParameter(); //创建一个检测参数设置对象
- //初始化OCR
- Engine = new PaddleOCREngine(config, OcrParameter);
+ OcrParameter.cpu_math_library_num_threads = 8;//预测并发线程数
+ OcrParameter.enable_mkldnn = true;//web部署该值建议设置为0,否则出错,内存如果使用很大,建议该值也设置为0.
+ OcrParameter.cls = true; //是否执行文字方向分类;默认false
+ OcrParameter.det = true;//是否开启方向检测,用于检测识别180旋转
+ OcrParameter.rec = true;
+ OcrParameter.use_angle_cls = true;//是否开启方向检测,用于检测识别180旋转
+ OcrParameter.det_db_score_mode = true;//是否使用多段线,即文字区域是用多段线还是用矩形,
+ OcrParameter.det_db_unclip_ratio = 1.5f;
+ OcrParameter.max_side_len = 1280;
+ //初始化OCR
+ Engine = new PaddleOCREngine(config, OcrParameter);
+ }
+ catch (Exception ex)
+ {
+ log.Error(ex.Message + ex.StackTrace);
+ }
}
#endregion
@@ -1114,7 +1132,7 @@ namespace TetraPackOCR
{
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];
+ rescult = rescult + dd[1] + str[1] + str[0];
}
return rescult;
}
@@ -1292,8 +1310,8 @@ namespace TetraPackOCR
///
private int GetXYRonRightDown(CogPMAlignResults Results)
{
-
- int i=0;
+
+ int i = 0;
double[] xx = new double[Results.Count], yy = new double[Results.Count], rr = new double[Results.Count];
//第一次循环将所有坐标取出
for (int j = 0; j < Results.Count; j++)
@@ -1304,20 +1322,20 @@ namespace TetraPackOCR
}
if (Results.Count == 1)
{
- i= 0;
+ i = 0;
}
else if (Results.Count == 2)
{
- double Xdist,Ydist;
+ double Xdist, Ydist;
Xdist = Math.Abs(xx[0] - xx[1]);
Ydist = Math.Abs(yy[0] - yy[1]);
- if (Xdist>Ydist)
+ if (Xdist > Ydist)
{
- i= Array.IndexOf(xx, xx.Min());
+ i = Array.IndexOf(xx, xx.Min());
}
- else if(Xdist paixu(List points)
+ List paixu(List points)
{
int rowDistance = 50;
List> rows = new List>();
@@ -1461,20 +1479,20 @@ namespace TetraPackOCR
CutPicture(SaveImageFileOCR + '\\' + strtimef + '\\' + strTime + ".bmp", 200, 1400, 5052, 1600);
//List temps = new List();
-
+
GetOCRImage getOCRImage = new GetOCRImage();
GetOCRImage.FileTimeInfo file = getOCRImage.GetLatesFileImageName(SaveImageFileOCR + '\\' + strtimef, ".bmp");
if (file != null)
{
byte[] ocrimagebyte = File.ReadAllBytes(file.FileName);
Bitmap Bmp = new Bitmap(new MemoryStream(ocrimagebyte));
- List lastocr = new List();
+ 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) //将检测框绘制在图片上
{
@@ -1485,9 +1503,9 @@ namespace TetraPackOCR
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));
-
+
+ pointsList.Add(new Point(item.BoxPoints[0].X, item.BoxPoints[0].Y, item.Text));
+
}
}
@@ -1536,18 +1554,18 @@ namespace TetraPackOCR
cc24?.NotifyCamInspectionComplete(1, datas);
}
}
- }
+ }
catch (Exception ex)
{
- log.Error(ex.Message + "未检测到字符");
- if (this.check_Autorun.Checked == false)
- {
- byte[] datax = DataConverter.FloatToByte(0.0f, true);
- cc24?.NotifyCamInspectionComplete(1, datax);
- cc24?.NotifyCamAcqComplete(1);
+ log.Error(ex.Message + "未检测到字符");
+ if (this.check_Autorun.Checked == false)
+ {
+ byte[] datax = DataConverter.FloatToByte(0.0f, true);
+ cc24?.NotifyCamInspectionComplete(1, datax);
+ cc24?.NotifyCamAcqComplete(1);
+ }
+ }
}
- }
- }
#region 图片裁剪
private void CutPicture(String picPath, int x, int y, int width, int height)
@@ -1557,7 +1575,7 @@ namespace TetraPackOCR
//新图片路径
String newPath = System.IO.Path.GetExtension(oldPath);
//计算新的文件名,在新文件名后加_new
- newPath = oldPath.Substring(0, oldPath.Length - newPath.Length) + "_new"+ mMatchingStr + newPath;
+ newPath = oldPath.Substring(0, oldPath.Length - newPath.Length) + "_new" + mMatchingStr + newPath;
//定义截取矩形
System.Drawing.Rectangle cropArea = new System.Drawing.Rectangle(x, y, width, height);
//要截取的区域大小
@@ -1593,25 +1611,25 @@ namespace TetraPackOCR
///
private string GETOCR(List readOCR, string design)
{
- string ocrresult="";
+ string ocrresult = "";
string[] d = design.Split('-');
- string pattern = @""+d[1]+"[A-Z0-9]{8}";
+ string pattern = @"" + d[1] + "[A-Z0-9]{8}";
for (int i = 0; i < readOCR.Count; i++)
{
- readOCR[i]=readOCR[i].Replace("_", "");
+ readOCR[i] = readOCR[i].Replace("_", "");
readOCR[i] = readOCR[i].Replace(" ", "");
}
MatchCollection matchResults;
-
- try
+
+ try
{
foreach (var item in readOCR)
{
- matchResults = Regex.Matches(item, pattern);
- for (int i = 0; i < matchResults.Count; i++)
- {
- ocrresult = ocrresult + matchResults[i];
- }
+ matchResults = Regex.Matches(item, pattern);
+ for (int i = 0; i < matchResults.Count; i++)
+ {
+ ocrresult = ocrresult + matchResults[i];
+ }
}
}
catch
@@ -1687,7 +1705,7 @@ namespace TetraPackOCR
{
lbl_L1_verOcrRs.BackColor = Color.Red;
}
- else if(s>0.9 & s<1)
+ else if (s > 0.9 & s < 1)
{
lbl_L1_verOcrRs.BackColor = Color.Lime;
s = 1;
@@ -1707,7 +1725,7 @@ namespace TetraPackOCR
lbl_L2_verOcrRs.BackColor = Color.Lime;
s = 1;
}
- ocrAcc.Add(s);
+ ocrAcc.Add(s);
this.lbl_L2_verOcrRs.Text = s * 100 + "%";
log.Info("字符对比结果:当前第" + mMnum + "道的读取字符与验证字符相似度为" + s * 100 + "%");
break;
@@ -1737,7 +1755,7 @@ namespace TetraPackOCR
lbl_L4_verOcrRs.BackColor = Color.Lime;
s = 1;
}
- ocrAcc.Add(s);
+ ocrAcc.Add(s);
this.lbl_L4_verOcrRs.Text = s * 100 + "%";
log.Info("字符对比结果:当前第" + mMnum + "道的读取字符与验证字符相似度为" + s * 100 + "%");
break;
@@ -1797,7 +1815,7 @@ namespace TetraPackOCR
lbl_L8_verOcrRs.BackColor = Color.Lime;
s = 1;
}
- ocrAcc.Add(s);
+ ocrAcc.Add(s);
this.lbl_L8_verOcrRs.Text = s * 100 + "%";
log.Info("字符对比结果:当前第" + mMnum + "道的读取字符与验证字符相似度为" + s * 100 + "%");
break;
@@ -1812,7 +1830,7 @@ namespace TetraPackOCR
lbl_L9_verOcrRs.BackColor = Color.Lime;
s = 1;
}
- ocrAcc.Add(s);
+ ocrAcc.Add(s);
this.lbl_L9_verOcrRs.Text = s * 100 + "%";
log.Info("字符对比结果:当前第" + mMnum + "道的读取字符与验证字符相似度为" + s * 100 + "%");
break;
@@ -1915,19 +1933,19 @@ namespace TetraPackOCR
mMatchingStr = Convert.ToInt32(mMatchingStrf);
log.Info("PC接收PLC数据:数据内容:" + mMatchingStr);
- if (NumberOfLanes+1 == mMatchingStr)
+ if (NumberOfLanes + 1 == mMatchingStr)
{
- if(ocrAcc.Min()<0.95)
+ if (ocrAcc.Min() < 0.95)
{
- MessageBox.Show("当前检测中出现严重错误请注意!",this.Text, MessageBoxButtons.OK,MessageBoxIcon.Error);
+ MessageBox.Show("当前检测中出现严重错误请注意!", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Error);
}
- else if(ocrAcc.Min()>0.95 & ocrAcc.Min()<1)
+ else if (ocrAcc.Min() > 0.95 & ocrAcc.Min() < 1)
{
MessageBox.Show("当前检测中出现可允许误差请注意!", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information);
}
ocrAcc.Clear();
}
-
+
}
#endregion
@@ -2017,11 +2035,11 @@ namespace TetraPackOCR
#region 通讯发送坐标
private void sendToPLC(double x, double y, double r)
{
-
+
try
{
string[] col = Colours.Split(',');
-
+
float xx = (float)x;
@@ -2129,12 +2147,12 @@ namespace TetraPackOCR
break;
}
-
-
-
+
+
+
float ocrx = 0, ocry = 0;
List l = new List();
l.Add((float)NumberOfLanes);
@@ -2169,15 +2187,15 @@ namespace TetraPackOCR
if (this.check_Autorun.Checked == false)
{
List d = new List();
- for (int i=0;i
+
@@ -199,6 +200,9 @@
..\packages\OpenCvSharp4.4.11.0.20250507\lib\netstandard2.0\OpenCvSharp.dll
+
+ ..\packages\OpenCvSharp4.Extensions.4.11.0.20250507\lib\netstandard2.0\OpenCvSharp.Extensions.dll
+
..\packages\PaddleOCRSharp.5.1.0\lib\net47\PaddleOCRSharp.dll
@@ -221,6 +225,9 @@
+
+ ..\packages\System.Drawing.Common.10.0.0-rc.2.25502.107\lib\net462\System.Drawing.Common.dll
+
..\packages\System.Formats.Asn1.10.0.0-rc.2.25502.107\lib\net462\System.Formats.Asn1.dll
@@ -336,12 +343,6 @@
-
-
- {bc738e23-1b32-497b-a654-569212ef4647}
- LibImageService
-
-
@@ -351,6 +352,7 @@
+
diff --git a/TetraParkOCR/packages.config b/TetraParkOCR/packages.config
index 246c8fb..3fd4c87 100644
--- a/TetraParkOCR/packages.config
+++ b/TetraParkOCR/packages.config
@@ -13,6 +13,8 @@
+
+
@@ -21,6 +23,7 @@
+