Commit 29168cb4 刘韬

CountTemplateX

1 个父辈 31fa496f
...@@ -68,7 +68,7 @@ public static class NeoX ...@@ -68,7 +68,7 @@ public static class NeoX
} }
[HandleProcessCorruptedStateExceptions] [HandleProcessCorruptedStateExceptions]
internal static bool AlgoC(string filename, int shrinkOffset, int Corner, string type, out int count, out Bitmap bitmap) internal static bool AlgoC(string filename,string templateFile, int shrinkOffset, int Corner, string type, out int count, out Bitmap bitmap)
{ {
var d = new NeoXData(); var d = new NeoXData();
...@@ -76,6 +76,7 @@ public static class NeoX ...@@ -76,6 +76,7 @@ public static class NeoX
d.outPath = Corner + "-Mark.png"; d.outPath = Corner + "-Mark.png";
d.shrinkOffset = shrinkOffset; d.shrinkOffset = shrinkOffset;
d.Corner = Corner; d.Corner = Corner;
d.temPath = templateFile;
d.Algo = type; d.Algo = type;
var s = JsonConvert.SerializeObject(d); var s = JsonConvert.SerializeObject(d);
count = 0; count = 0;
...@@ -197,6 +198,8 @@ internal class NeoXData ...@@ -197,6 +198,8 @@ internal class NeoXData
public string imgPath; public string imgPath;
//输出图像路径 //输出图像路径
public string outPath; public string outPath;
//输入模版路径
public string temPath;
//算法名称 //算法名称
public string Algo; public string Algo;
//剪裁像素 //剪裁像素
......
...@@ -254,7 +254,10 @@ namespace Asa ...@@ -254,7 +254,10 @@ namespace Asa
type = NeoX.ConverterType(type,true); type = NeoX.ConverterType(type,true);
if (NeoX.HasNeox() && type.StartsWith("ID")) if (NeoX.HasNeox() && type.StartsWith("ID"))
{ {
var result = NeoX.AlgoC(path, ShrinkOffset,0, type, out int c, out Bitmap bitmap); var tf = GetTemplateFile(path);
if (!string.IsNullOrEmpty(tf))
type = "ID_TYPE_T";
var result = NeoX.AlgoC(path, tf, ShrinkOffset,0, type, out int c, out Bitmap bitmap);
count = new int[4] { c, 0, 0, 0 }; count = new int[4] { c, 0, 0, 0 };
BmpDstImg = bitmap; BmpDstImg = bitmap;
return result?0:-1; return result?0:-1;
...@@ -272,6 +275,51 @@ namespace Asa ...@@ -272,6 +275,51 @@ namespace Asa
eyemImageFree(ref eyem); eyemImageFree(ref eyem);
return n; return n;
} }
private static string GetTemplateFile(string path)
{
try
{
// 提取文件名中等于号前面的部分
string fileName = Path.GetFileNameWithoutExtension(path);
var splitchar = ConfigHelper.Config.Get("PN_Split_Char", "-");
int index = fileName.IndexOf(splitchar); // 找到等于号的位置
string pn;
if (index != -1)
{
pn = fileName.Substring(0, index); // 截取等于号前面的部分
}
else
{
pn = fileName; // 如果没有等号,则直接使用整个文件名
}
// 拼接目标路径和文件名
string directoryPath = CommonLib.GetPath("CountTemplateX");
string targetFile = $"{pn}.png";
string fullPath = Path.Combine(directoryPath, targetFile);
string subfullPath = Path.Combine(CommonLib.GetPath("..\\CountTemplateX"), targetFile);
// 检查目标文件是否存在
if (File.Exists(fullPath))
{
return fullPath; // 返回文件的完整路径
}else if (File.Exists(subfullPath))
{
return subfullPath; // 返回文件的完整路径
}
else
{
return ""; // 文件不存在,返回空
}
}
catch (Exception ex)
{
// 处理异常,如路径无法访问、文件名无效等
Console.WriteLine($"Error: {ex}");
return "";
}
}
[HandleProcessCorruptedStateExceptions] [HandleProcessCorruptedStateExceptions]
public static int GetLocalCountIrregular(EyemImage eyem, int ShrinkOffset, string outfilename, string type, out int[] count, out Bitmap BmpDstImg) public static int GetLocalCountIrregular(EyemImage eyem, int ShrinkOffset, string outfilename, string type, out int[] count, out Bitmap BmpDstImg)
...@@ -329,7 +377,11 @@ namespace Asa ...@@ -329,7 +377,11 @@ namespace Asa
int Corner = ck; int Corner = ck;
try try
{ {
NeoX.AlgoC(path, ShrinkOffset, Corner + 1, ccdata[ck], out int c, out Bitmap bitmap); var type1 = ccdata[ck];
var tf = GetTemplateFile(path);
if (!string.IsNullOrEmpty(tf))
type1 = "ID_TYPE_T";
NeoX.AlgoC(path, tf, ShrinkOffset, Corner + 1, type1, out int c, out Bitmap bitmap);
lock (ccresult) lock (ccresult)
{ {
ccresult.Add(Corner, (c, bitmap)); ccresult.Add(Corner, (c, bitmap));
......
此文件类型无法预览
...@@ -4,6 +4,111 @@ ...@@ -4,6 +4,111 @@
<name>ConfigHelper</name> <name>ConfigHelper</name>
</assembly> </assembly>
<members> <members>
<member name="F:ConfigHelper.AdvanceConfigEdit.CustomEditor">
<summary>
自定义编辑器
</summary>
</member>
<member name="F:ConfigHelper.AdvanceConfigEdit.components">
<summary>
必需的设计器变量。
</summary>
</member>
<member name="M:ConfigHelper.AdvanceConfigEdit.Dispose(System.Boolean)">
<summary>
清理所有正在使用的资源。
</summary>
<param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
</member>
<member name="M:ConfigHelper.AdvanceConfigEdit.InitializeComponent">
<summary>
设计器支持所需的方法 - 不要修改
使用代码编辑器修改此方法的内容。
</summary>
</member>
<member name="M:ConfigHelper.AdvanceConfigForm.AddCustomEditor``1(System.String)">
<summary>
添加自定义编辑器
</summary>
<typeparam name="T"></typeparam>
<param name="name"></param>
</member>
<member name="M:ConfigHelper.AdvanceConfigForm.ShowEditDialog(System.Windows.Forms.IWin32Window,System.Boolean)">
<summary>
显示配置界面,2秒内调用约6次后显示
</summary>
<param name="owner"></param>
<param name="TopMost"></param>
</member>
<member name="F:ConfigHelper.AdvanceConfigForm.components">
<summary>
Required designer variable.
</summary>
</member>
<member name="M:ConfigHelper.AdvanceConfigForm.Dispose(System.Boolean)">
<summary>
Clean up any resources being used.
</summary>
<param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
</member>
<member name="M:ConfigHelper.AdvanceConfigForm.InitializeComponent">
<summary>
Required method for Designer support - do not modify
the contents of this method with the code editor.
</summary>
</member>
<member name="P:ConfigHelper.CheckedListBoxEx.DataSource">
<summary>
绑定数据源
</summary>
<param name="data"></param>
</member>
<member name="T:ConfigHelper.CheckItem">
<summary>
Represents an item in the checklistbox
</summary>
</member>
<member name="T:ConfigHelper.Config">
<summary>
自定义配置存取
</summary>
</member>
<member name="F:ConfigHelper.Config.hasChange">
<summary>
指示配置文件是否存在变化
</summary>
</member>
<member name="P:ConfigHelper.Config.SaveToAppdata">
<summary>
将设置保存至appdata目录
</summary>
</member>
<member name="M:ConfigHelper.Config.ReloadConfig">
<summary>
重载配置
</summary>
</member>
<member name="M:ConfigHelper.Config.SetComment(System.String,System.String)">
<summary>
设置备注
</summary>
<param name="key"></param>
<param name="Comment"></param>
</member>
<member name="M:ConfigHelper.Config.Get(System.String)">
<summary>
读取配置
</summary>
<param name="key"></param>
<returns></returns>
</member>
<member name="M:ConfigHelper.Config.Get(System.Object)">
<summary>
读取配置
</summary>
<param name="key">传入一个枚举值</param>
<returns></returns>
</member>
<member name="M:ConfigHelper.Config.Get``1(System.Object,``0)"> <member name="M:ConfigHelper.Config.Get``1(System.Object,``0)">
<summary> <summary>
读取配置 读取配置
...@@ -13,5 +118,217 @@ ...@@ -13,5 +118,217 @@
<param name="defaultvalue">失败默认值</param> <param name="defaultvalue">失败默认值</param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:ConfigHelper.Config.Get``1(System.String,``0)">
<summary>
读取配置
</summary>
<typeparam name="T">返回类型</typeparam>
<param name="key">key</param>
<param name="defaultvalue">失败默认值</param>
<returns></returns>
</member>
<member name="M:ConfigHelper.Config.Set(System.String,System.String)">
<summary>
设置配置
</summary>
<param name="key"></param>
<param name="value"></param>
</member>
<member name="M:ConfigHelper.Config.Set(System.Object,System.String)">
<summary>
设置配置
</summary>
<param name="key">配置枚举值</param>
<param name="value"></param>
</member>
<member name="M:ConfigHelper.Config.Set``1(System.Object,``0)">
<summary>
设置配置
</summary>
<param name="key">配置枚举值</param>
<param name="value"></param>
</member>
<member name="M:ConfigHelper.Config.Set``1(System.String,``0)">
<summary>
设置配置
</summary>
<typeparam name="T">值类型</typeparam>
<param name="key"></param>
<param name="value"></param>
</member>
<member name="M:ConfigHelper.Config.Del(System.String)">
<summary>
删除配置
</summary>
<param name="key"></param>
</member>
<member name="M:ConfigHelper.Config.SaveChangeDebounce">
<summary>
保存设置
</summary>
</member>
<member name="M:ConfigHelper.Config.SaveChange">
<summary>
保存设置
</summary>
</member>
<member name="P:ConfigHelper.Config.Configlist">
<summary>
获取所有配置文本
</summary>
</member>
<member name="M:ConfigHelper.Config.FileSave(System.String,System.String)">
<summary>
不通过系统缓存立刻写入磁盘
</summary>
<param name="content"></param>
<param name="destfilename"></param>
</member>
<member name="M:ConfigHelper.Config.PropertyBind(System.Object,System.Object,System.String,System.String,System.String)">
<summary>
绑定UI属性
</summary>
<param name="key">配置key</param>
<param name="uiobj">ui对象</param>
<param name="Property">绑定属性</param>
<param name="SaveEvent">绑定事件(object s, EventArgs x),可以为空</param>
<param name="defaultvalue">默认值</param>
</member>
<member name="M:ConfigHelper.Config.PropertyBind``1(System.Object,System.Object,System.String,System.String,``0)">
<summary>
绑定UI属性
</summary>
<param name="key">配置key</param>
<param name="uiobj">ui对象</param>
<param name="Property">绑定属性</param>
<param name="SaveEvent">绑定事件(object s, EventArgs x),可以为空</param>
<param name="defaultvalue">默认值</param>
</member>
<member name="M:ConfigHelper.Config.LoadMyConfig(System.Type)">
<summary>
转换自定义配置类
</summary>
<param name="ConfigClassType"></param>
<returns>加载到的配置Key数量</returns>
</member>
<member name="T:ConfigHelper.ICustEditor">
<summary>
自定义编辑器接口
</summary>
</member>
<member name="M:ConfigHelper.ICustEditor.ValueEdit(System.Object)">
<summary>
自己的编辑方法或界面
</summary>
<param name="value">传入的值</param>
<returns>传出的值</returns>
</member>
<member name="T:ConfigHelper.MyConfig`1">
<summary>
自动化我的配置
</summary>
</member>
<member name="F:ConfigHelper.MyConfig`1.Key">
<summary>
配置的Key
</summary>
</member>
<member name="P:ConfigHelper.MyConfig`1.Val">
<summary>
配置的值
</summary>
</member>
<member name="M:ConfigHelper.MyConfig`1.ToString">
<summary>
获取配置数据的文本
</summary>
<returns></returns>
</member>
<member name="M:ConfigHelper.MyConfig`1.op_Implicit(ConfigHelper.MyConfig{`0})~`0">
<summary>
隐式转换,读值
</summary>
<param name="m1"></param>
</member>
<member name="M:ConfigHelper.MyConfig`1.op_Implicit(`0)~ConfigHelper.MyConfig{`0}">
<summary>
隐式转换,写值
</summary>
<param name="v1"></param>
</member>
<member name="T:ConfigHelper.MyConfigComment">
<summary>
自定义配置描述
</summary>
</member>
<member name="M:ConfigHelper.MyConfigComment.#ctor(System.String)">
<summary>
配置的说明
</summary>
<param name="comment"></param>
</member>
<member name="T:CommonLib">
<summary>
程序公共类
</summary>
</member>
<member name="P:CommonLib.AppPathExe">
<summary>
程序exe全路经 如d:\app\app.exe
</summary>
</member>
<member name="P:CommonLib.AppPathDir">
<summary>
程序所在路径 如d:\app\
</summary>
</member>
<member name="P:CommonLib.AppPathRoot">
<summary>
程序所在盘符 如d:\
</summary>
</member>
<member name="P:CommonLib.AppName">
<summary>
程序exe名称
</summary>
</member>
<member name="P:CommonLib.AppAssemblyTitle">
<summary>
程序AssemblyTitle
</summary>
</member>
<member name="M:CommonLib.GetPath(System.String)">
<summary>
获取相对当前程序的目录
</summary>
<param name="dirname"></param>
<returns></returns>
</member>
<member name="M:CommonLib.RegisterInstall">
<summary>
将程序路径写到注册表, 方便以后做软件更新
</summary>
</member>
<member name="M:CommonLib.AddOrUpdateStartupTask(System.Boolean,System.Int32)">
<summary>
将程序设置为计划任务电脑开机,用户登陆后自动启动
</summary>
<param name="enable">是否启用</param>
<param name="delaysec">延迟启动时间秒</param>
</member>
<member name="M:CommonLib.AddTaskAction(System.Action)">
<summary>
添加需要每天定时运行的任务
</summary>
<param name="action"></param>
</member>
<member name="M:CommonLib.DeleteOverDayFile(System.String,System.String,System.Int32)">
<summary>
删除超过指定天数的文件
</summary>
<param name="path">文件路经</param>
<param name="ext">扩展名检索格式:*.jpg</param>
<param name="day">天数</param>
</member>
</members> </members>
</doc> </doc>
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!