修改结果框

This commit is contained in:
820689062 2024-07-29 13:45:55 +08:00
parent b4c7a6c6cb
commit 71997776cf
5 changed files with 186 additions and 245 deletions

View File

@ -17,8 +17,8 @@ Global
GlobalSection(ProjectConfigurationPlatforms) = postSolution GlobalSection(ProjectConfigurationPlatforms) = postSolution
{0DE28139-2917-4B58-8240-4B4E11114730}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {0DE28139-2917-4B58-8240-4B4E11114730}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0DE28139-2917-4B58-8240-4B4E11114730}.Debug|Any CPU.Build.0 = Debug|Any CPU {0DE28139-2917-4B58-8240-4B4E11114730}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0DE28139-2917-4B58-8240-4B4E11114730}.Debug|X64.ActiveCfg = Debug|Any CPU {0DE28139-2917-4B58-8240-4B4E11114730}.Debug|X64.ActiveCfg = Debug|X64
{0DE28139-2917-4B58-8240-4B4E11114730}.Debug|X64.Build.0 = Debug|Any CPU {0DE28139-2917-4B58-8240-4B4E11114730}.Debug|X64.Build.0 = Debug|X64
{0DE28139-2917-4B58-8240-4B4E11114730}.Release|Any CPU.ActiveCfg = Release|Any CPU {0DE28139-2917-4B58-8240-4B4E11114730}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0DE28139-2917-4B58-8240-4B4E11114730}.Release|Any CPU.Build.0 = Release|Any CPU {0DE28139-2917-4B58-8240-4B4E11114730}.Release|Any CPU.Build.0 = Release|Any CPU
{0DE28139-2917-4B58-8240-4B4E11114730}.Release|X64.ActiveCfg = Release|X64 {0DE28139-2917-4B58-8240-4B4E11114730}.Release|X64.ActiveCfg = Release|X64

View File

@ -72,7 +72,7 @@ namespace HisenceYoloDetection
/// <param name="path2">要对比的图像</param> /// <param name="path2">要对比的图像</param>
/// <param name="IfWhiteWord"> 白板黑字为true </param> /// <param name="IfWhiteWord"> 白板黑字为true </param>
/// <param name="saveDir">存储路径</param> /// <param name="saveDir">存储路径</param>
public static bool CheckDiffSci(string path1, Mat MatDet, Rect sqlrect, Rect detrect, bool IfWhiteWord, string saveDir) public static bool CheckDiffSci(string path1, Mat MatDet, ref Mat ResultMat,Rect sqlrect, Rect detrect, bool IfWhiteWord, string saveDir)
{ {
// 读取和处理第一张图片。。 // 读取和处理第一张图片。。
Mat img1 = Cv2.ImRead(path1, ImreadModes.Color); Mat img1 = Cv2.ImRead(path1, ImreadModes.Color);
@ -101,6 +101,7 @@ namespace HisenceYoloDetection
// 读取和处理第二张图片 // 读取和处理第二张图片
Mat img2 = MatDet.Clone(); Mat img2 = MatDet.Clone();
ResultMat= MatDet.Clone();
if (img2.Empty()) if (img2.Empty())
{ {
// Console.WriteLine($"Error loading image {path2}"); // Console.WriteLine($"Error loading image {path2}");
@ -243,12 +244,14 @@ namespace HisenceYoloDetection
else else
{ {
Rect boundingRect = Cv2.BoundingRect(contour); Rect boundingRect = Cv2.BoundingRect(contour);
Cv2.Resize(img2, img2, new Size(550, 270));
Cv2.Rectangle(img2, boundingRect, Scalar.Red, thickness: 2); Cv2.Rectangle(img2, boundingRect, Scalar.Red, thickness: 2);
isMatch = false; isMatch = false;
string savePath2 = Path.Combine("D:\\Hisence\\Test\\2\\ng", Path.GetFileNameWithoutExtension(path1) + filename + "_Rect.png"); string savePath2 = Path.Combine("D:\\Hisence\\Test\\2\\ng", Path.GetFileNameWithoutExtension(path1) + filename + "_Rect.png");
// 保存结果 // 保存结果
//string savePath = Path.Combine(saveDir, Path.GetFileNameWithoutExtension(path2) + "_diff.png"); //string savePath = Path.Combine(saveDir, Path.GetFileNameWithoutExtension(path2) + "_diff.png");
Cv2.ImWrite(savePath2, img2); Cv2.ImWrite(savePath2, img2);
ResultMat = img2.Clone();
string savePath = Path.Combine("D:\\Hisence\\Test\\2\\ng", Path.GetFileNameWithoutExtension(path1) + filename + "_diff.png"); string savePath = Path.Combine("D:\\Hisence\\Test\\2\\ng", Path.GetFileNameWithoutExtension(path1) + filename + "_diff.png");
// 保存结果 // 保存结果
//string savePath = Path.Combine(saveDir, Path.GetFileNameWithoutExtension(path2) + "_diff.png"); //string savePath = Path.Combine(saveDir, Path.GetFileNameWithoutExtension(path2) + "_diff.png");

View File

@ -150,6 +150,8 @@
StartDecBtn = new Button(); StartDecBtn = new Button();
CloseDecBtn = new Button(); CloseDecBtn = new Button();
groupBox6 = new GroupBox(); groupBox6 = new GroupBox();
textBox2 = new TextBox();
label37 = new Label();
textBox3 = new TextBox(); textBox3 = new TextBox();
label25 = new Label(); label25 = new Label();
label24 = new Label(); label24 = new Label();
@ -192,8 +194,6 @@
timer6 = new System.Windows.Forms.Timer(components); timer6 = new System.Windows.Forms.Timer(components);
richTextBox1 = new RichTextBox(); richTextBox1 = new RichTextBox();
backgroundWorker1 = new System.ComponentModel.BackgroundWorker(); backgroundWorker1 = new System.ComponentModel.BackgroundWorker();
label37 = new Label();
textBox2 = new TextBox();
tabPage2.SuspendLayout(); tabPage2.SuspendLayout();
panel1.SuspendLayout(); panel1.SuspendLayout();
groupBox5.SuspendLayout(); groupBox5.SuspendLayout();
@ -1556,6 +1556,26 @@
groupBox6.TabStop = false; groupBox6.TabStop = false;
groupBox6.Text = "基础信息"; groupBox6.Text = "基础信息";
// //
// textBox2
//
textBox2.Location = new Point(128, 146);
textBox2.Margin = new Padding(4, 2, 4, 2);
textBox2.Name = "textBox2";
textBox2.ReadOnly = true;
textBox2.Size = new Size(115, 31);
textBox2.TabIndex = 23;
//
// label37
//
label37.AutoSize = true;
label37.Location = new Point(7, 146);
label37.Margin = new Padding(4, 0, 4, 0);
label37.Name = "label37";
label37.Size = new Size(96, 25);
label37.TabIndex = 22;
label37.Text = "旋钮颜色";
label37.Click += label37_Click;
//
// textBox3 // textBox3
// //
textBox3.Location = new Point(128, 95); textBox3.Location = new Point(128, 95);
@ -1607,10 +1627,10 @@
// tabPage3 // tabPage3
// //
tabPage3.Controls.Add(panel2); tabPage3.Controls.Add(panel2);
tabPage3.Location = new Point(4, 33); tabPage3.Location = new Point(4, 34);
tabPage3.Margin = new Padding(4, 2, 4, 2); tabPage3.Margin = new Padding(4, 2, 4, 2);
tabPage3.Name = "tabPage3"; tabPage3.Name = "tabPage3";
tabPage3.Size = new Size(1276, 816); tabPage3.Size = new Size(1276, 815);
tabPage3.TabIndex = 4; tabPage3.TabIndex = 4;
tabPage3.Text = "录入新型号"; tabPage3.Text = "录入新型号";
tabPage3.UseVisualStyleBackColor = true; tabPage3.UseVisualStyleBackColor = true;
@ -1930,26 +1950,6 @@
richTextBox1.TabIndex = 1; richTextBox1.TabIndex = 1;
richTextBox1.Text = ""; richTextBox1.Text = "";
// //
// label37
//
label37.AutoSize = true;
label37.Location = new Point(7, 146);
label37.Margin = new Padding(4, 0, 4, 0);
label37.Name = "label37";
label37.Size = new Size(96, 25);
label37.TabIndex = 22;
label37.Text = "旋钮颜色";
label37.Click += label37_Click;
//
// textBox2
//
textBox2.Location = new Point(128, 146);
textBox2.Margin = new Padding(4, 2, 4, 2);
textBox2.Name = "textBox2";
textBox2.ReadOnly = true;
textBox2.Size = new Size(115, 31);
textBox2.TabIndex = 23;
//
// MainForm // MainForm
// //
AutoScaleDimensions = new SizeF(12F, 25F); AutoScaleDimensions = new SizeF(12F, 25F);

View File

@ -453,13 +453,14 @@ namespace HisenceYoloDetection
/// <param name="e"></param> /// <param name="e"></param>
private void MainForm_Load(object sender, EventArgs e) private void MainForm_Load(object sender, EventArgs e)
{ {
string path22 = "D:\\Hisence\\test2\\222.jpg"; //string path22 = "D:\\Hisence\\test2\\222.jpg";
Mat pathmat2 = Cv2.ImRead(path22); //Mat pathmat2 = Cv2.ImRead(path22);
string path222 = "D:\\Hisence\\test2\\111.jpg"; //Mat pathmat2result = Cv2.ImRead(path22);
Rect rect1 = new Rect(0, 0, 0, 0); //string path222 = "D:\\Hisence\\test2\\111.jpg";
//Rect rect1 = new Rect(0, 0, 0, 0);
CheckDiffSciHelper.CheckDiffSci(path222, pathmat2, rect1, rect1, true, "D://Hisence//test2"); //CheckDiffSciHelper.CheckDiffSci(path222, pathmat2,ref pathmat2result, rect1, rect1, true, "D://Hisence//test2");
Stopwatch sw = new Stopwatch(); Stopwatch sw = new Stopwatch();
@ -1643,9 +1644,14 @@ namespace HisenceYoloDetection
} }
} }
} }
bool MatchStr=false;
if (xKNow != null)
{
string IOcrBAr = xKNow.OcrBar; string IOcrBAr = xKNow.OcrBar;
//xKNow = GetModeFromBar(IOcrBAr);//从数据库中查询到这个条码的四轴的值 //xKNow = GetModeFromBar(IOcrBAr);//从数据库中查询到这个条码的四轴的值
//这里改成和海信的对接需求 //这里改成和海信的对接需求
@ -1743,7 +1749,7 @@ namespace HisenceYoloDetection
string detstr = string.Join(",", RealCFLabels); //输出为abc-def-ghi 如果不加-,也可以省 string detstr = string.Join(",", RealCFLabels); //输出为abc-def-ghi 如果不加-,也可以省
//排序比对块 //排序比对块
bool MatchStr = listLabels.SequenceEqual(RealCFLabels); MatchStr = listLabels.SequenceEqual(RealCFLabels);
if (MatchStr == false) if (MatchStr == false)
{ {
@ -1779,13 +1785,15 @@ namespace HisenceYoloDetection
} }
}
else
{
MatchStr = true;
}
///执行比对 小图 ///执行比对 小图
//bool MatchStr = ManagerModelHelper.IsMatchSQLText(ref mCut, ref xK_HisenceSQLWord, ref xK_MatchDet); //bool MatchStr = ManagerModelHelper.IsMatchSQLText(ref mCut, ref xK_HisenceSQLWord, ref xK_MatchDet);
// int sqlblocksum=
melsecPLCTCPDriver.WriteInt("550", 0);//方行 melsecPLCTCPDriver.WriteInt("550", 0);//方行
if (MatchStr) if (MatchStr)
{ {
@ -2596,7 +2604,8 @@ namespace HisenceYoloDetection
//if (xkWord.OneblockText.)
//{ }
InsertXKHisenceWordData(xkWord);//往关键字表中插入一条数据 InsertXKHisenceWordData(xkWord);//往关键字表中插入一条数据
string OcrTextone = strMatListOne.Join("##"); string OcrTextone = strMatListOne.Join("##");
@ -2604,6 +2613,10 @@ namespace HisenceYoloDetection
string detstr = ""; string detstr = "";
if (keyValueResult.Count<=1)
{
return;
}
for (int v = 0; v < keyValueResult.Count; v++) for (int v = 0; v < keyValueResult.Count; v++)
{ {
@ -3422,16 +3435,17 @@ namespace HisenceYoloDetection
textBox2.Text = color; textBox2.Text = color;
})); }));
juanjiMatch = CheckDiffSciHelper.CheckDiffSci(PathSql, CutBlockMat, rectsql, rectDet, iswhite, "D://Hisence//Test"); Mat matresult = CutBlockMat.Clone();
juanjiMatch = CheckDiffSciHelper.CheckDiffSci(PathSql, CutBlockMat,ref matresult, rectsql, rectDet, iswhite, "D://Hisence//Test");
// juanjiMatch = true; // juanjiMatch = true;
if (!OneIF1 || !juanjiMatch) if (!OneIF1 || !juanjiMatch)
{ {
OneIF = false; OneIF = false;
DisplayResult(mLcut); //DisplayResult(mLcut);
//显示错误的板 //显示错误的板
// mLcut.ResultMap; // mLcut.ResultMap;
Defet_OnDetectionDone(mLcut.ResultMap.ToMat(), 2); Defet_OnDetectionDone(matresult, 2);
} }
else else
{ {

View File

@ -104,83 +104,7 @@ namespace HisenceYoloDetection
return cslist; return cslist;
} }
public static bool IsMatchSQLText(ref Mat detMat, ref XK_HisenceWord XKSQL, ref XK_HisenceWord XKDet)
{
try
{
string TwoRectstr = XKSQL.TwoRect;
string oneBlockWordSql = XKSQL.OneblockMainWord;
string twoBlockWordSql = XKSQL.TwoblockMainWord;
string threeBlockWordSql = XKSQL.ThreeblockMainWord;
string fourBlockWordSql = XKSQL.FourblockMainWord;
string fiveBlockWordSql = XKSQL.FiveblockMainWord;
string sixBlockWordSql = XKSQL.SixblockMainWord;
string sevenBlockWordSql = XKSQL.SevenblockMainWord;
string eightBlockWordSql = XKSQL.EightblockMainWord;
string oneBlockWordDet = XKDet.OneblockMainWord;
string twoBlockWordDet = XKDet.TwoblockMainWord;
string threeBlockWordDet = XKDet.ThreeblockMainWord;
string fourBlockWordDet = XKDet.FourblockMainWord;
string fiveBlockWordDet = XKDet.FiveblockMainWord;
string sixBlockWordDet = XKDet.SixblockMainWord;
string sevenBlockWordDet = XKDet.SevenblockMainWord;
string eightBlockWordDet = XKDet.EightblockMainWord;
bool OneIF = isMatchStr(oneBlockWordSql, oneBlockWordDet);
bool TwoIF = isMatchStr(twoBlockWordSql, twoBlockWordDet);
bool ThreeIF = isMatchStr(threeBlockWordSql, threeBlockWordDet);
bool FourIF = isMatchStr(fourBlockWordSql, fourBlockWordDet);
bool FiveIF = isMatchStr(fiveBlockWordSql, fiveBlockWordDet);
bool SixIF = isMatchStr(sixBlockWordSql, sixBlockWordDet);
bool SenvenIF = isMatchStr(sevenBlockWordSql, sevenBlockWordDet);
bool EightIF = isMatchStr(eightBlockWordSql, eightBlockWordDet);
//第二快 卷积匹配
string PathSql = XKSQL.TwoblockPath;
//
Rect rectsql = CheckDiffSciHelper.strChangeRect(TwoRectstr);
Rect rectDet = CheckDiffSciHelper.strChangeRect(XKDet.TwoRect);
bool twoif2 = CheckDiffSciHelper.CheckDiffSci(PathSql, detMat, rectsql, rectDet, (bool)XKSQL.TwoIFWhile, "D://Test");
DateTime dt = DateTime.Now;
using (StreamWriter sw = new StreamWriter("D://Hisence//logsMatch.log", true))
{
string filename = dt.Year.ToString() + dt.Month.ToString() + dt.Day.ToString() + dt.Hour.ToString() + dt.Minute.ToString() + dt.Millisecond.ToString();
sw.WriteLine(filename + "\n");
sw.WriteLine(oneBlockWordSql + " " + oneBlockWordDet + "\n");
sw.WriteLine(twoBlockWordSql + " " + twoBlockWordDet + "\n");
sw.WriteLine(threeBlockWordSql + " " + threeBlockWordDet + "\n");
sw.WriteLine(fourBlockWordSql + " " + fourBlockWordDet + "\n");
sw.WriteLine(fiveBlockWordSql + " " + fiveBlockWordDet + "\n");
sw.WriteLine(sixBlockWordSql + " " + sixBlockWordDet + "\n");
sw.WriteLine(sevenBlockWordSql + " " + sevenBlockWordDet + "\n");
sw.WriteLine(eightBlockWordSql + " " + eightBlockWordDet + "\n");
sw.WriteLine(" 卷积匹配 " + twoif2 + "\n");
sw.Flush();
}
//第三块区域一直都是false
if (OneIF && TwoIF && ThreeIF && FourIF && FiveIF && SixIF && SenvenIF && EightIF && twoif2)
{
return true;
}
else
{
return false;
}
}
catch (Exception ex)
{
return false;
}
}
public static bool StrMatch(string SqlText,string DetText) public static bool StrMatch(string SqlText,string DetText)
{ {
// 计算Levenshtein距离 // 计算Levenshtein距离