优化界面,增加自动插入,原始图像遮挡旋钮,post请求当天日期。

This commit is contained in:
2024-07-23 00:22:27 +08:00
parent 812cfd725f
commit 3a9d6c5e7e
3 changed files with 446 additions and 504 deletions

View File

@ -20,6 +20,49 @@ namespace HisenceYoloDetection
{
public static class CheckDiffSciHelper
{
public static Mat ProcessImage(Mat image, Rect fillRect)
{
// 获取图像尺寸
int width = image.Width;
int height = image.Height;
// 定义左下角 30x30 矩形框
int rectSize = 30;
int rectX = 0;
int rectY = height - rectSize; // 确保是左下角
// 防止越界
if (rectY < 0 || rectX < 0 || rectSize > width || rectSize > height)
{
Console.WriteLine("图像尺寸不足以获取指定区域");
return image;
}
Rect roi = new Rect(rectX, rectY, rectSize, rectSize);
Mat roiMat = new Mat(image, roi);
// 计算平均颜色值
Scalar meanColor = Cv2.Mean(roiMat);
Vec3b fillColor = new Vec3b((byte)meanColor.Val0, (byte)meanColor.Val1, (byte)meanColor.Val2);
// 防止越界
if (fillRect.X < 0 || fillRect.Y < 0 || fillRect.X + fillRect.Width > width || fillRect.Y + fillRect.Height > height)
{
Console.WriteLine("填充区域超出图像范围");
return image;
}
// 填充指定区域
for (int y = fillRect.Y; y < fillRect.Y + fillRect.Height; y++)
{
for (int x = fillRect.X; x < fillRect.X + fillRect.Width; x++)
{
image.Set<Vec3b>(y, x, fillColor);
}
}
return image;
}
/// <summary>
///
/// </summary>
@ -37,6 +80,7 @@ namespace HisenceYoloDetection
return false;
}
// Cv2.Resize(img1, img1, new Size(550, 270));
img1 = ProcessImage(img1, sqlrect);
Mat gimg1 = new Mat();
Cv2.CvtColor(img1, gimg1, ColorConversionCodes.BGR2GRAY);
Mat thr1 = new Mat();
@ -61,7 +105,7 @@ namespace HisenceYoloDetection
return false;
}
// Cv2.Resize(img2, img2, new Size(550, 270));
img2 = ProcessImage(img2, detrect);
Rect bottomleftRect= new Rect(0,img1.Height-30,30,30);
Scalar avgColor1 = Cv2.Mean(new Mat(img1,bottomleftRect));
Mat gimg2 = new Mat();

File diff suppressed because it is too large Load Diff

View File

@ -54,7 +54,7 @@ namespace HisenceYoloDetection
//OnDetectionDone += Defet_OnDetectionDone;
};
}
MeachineState meachineState= MeachineState.machine_closing;
MeachineState meachineState = MeachineState.machine_closing;
MGSCameraDriver Cam1 = new MGSCameraDriver();
MGSCameraDriver Cam2 = new MGSCameraDriver();
public static string RootPath = "D:\\Hisence\\SQLImages\\";
@ -1211,200 +1211,8 @@ namespace HisenceYoloDetection
// }
//});
}
/// <summary>
/// <20><><EFBFBD><EFBFBD>ϴ<EFBFBD>»<EFBFBD>545<34>Ƿ񴥷<C7B7><F1B4A5B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E4B4AB><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
/// </summary>
public void TrigerCamera1()
{
//<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>̼߳<DFB3><CCBC><EFBFBD>PLC<4C><43>ֵ
Task.Run(() =>
{
int iNum1 = 0;
int iNum0 = 0;
while (true)
{
// myResetEvent.Set();
PLC545 = true;
int m_iCureent545 = melsecPLCTCPDriver.ReadInt("545");
////int m_iCureent545 = CMPLC.SLMPReadD(545);
if (m_iCureent545 != 1)
{
iNum0++;
}
else
{
iNum0 = 0;
}
if (iNum0 >= 5)
{
while (true)
{
m_iCureent545 = melsecPLCTCPDriver.ReadInt("545");
if (m_iCureent545 == 1)
{
iNum1++;
}
else
{
iNum1 = 0;
}
if (iNum1 >= 5)
{
//Console.WriteLine("<22>ڶ<EFBFBD><DAB6>βɼ<CEB2>ͼ<EFBFBD><CDBC>");
//Cam1.Snapshot();
//Cam2.Snapshot();
//IfCam1Triger = false;
//IfCam2Triger = false;
iNum0 = 0;
iNum1 = 0;
break;
}
}
}
Thread.Sleep(100);
}
});
}
/// <summary>
/// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ʿ<EFBFBD><CABF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͺ<EFBFBD>
/// </summary>
public void OnGetBar()
{
Task.Run(() =>
{
int iNum0 = 0;
int iNum1 = 0;
// const char pCR[4] = { 0x4C, 0x4F, 0x4E, 0x0D };<3B><><EFBFBD><EFBFBD>
//const char pOFF[5] = { 0x4C, 0x4F, 0x46, 0x46, 0x0D };<3B>ر<EFBFBD>
Thread.CurrentThread.Priority = ThreadPriority.Highest;
while (true)
{
//545<34><35><EFBFBD><EFBFBD>ʱΪ0
// myResetEvent.Set();
PLC545 = true;
int m_iCureent545 = melsecPLCTCPDriver.ReadInt("545");
if (m_iCureent545 != 1)
{
iNum0++;
}
else
{
iNum0 = 0;
}
if (iNum0 >= 1)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
while (true)
{
bTriger = false;
//<2F><><EFBFBD><EFBFBD>544һֱ<D2BB><D6B1>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>s <20><><EFBFBD><EFBFBD>
m_iCureent545 = melsecPLCTCPDriver.ReadInt("545");
if (m_iCureent545 == 1)
{
iNum1++;
}
else
{
iNum1 = 0;
}
if (iNum1 >= 2)
{
if (bBar)
{
_runHandleBefore.WaitOne();
//<2F><><EFBFBD><EFBFBD><EFBFBD>ijɺͺ<C9BA><CDBA>ŵĶԽ<C4B6><D4BD><EFBFBD><EFBFBD><EFBFBD>
#if false
{
// Oldm_sKEYENCEBar= m_sKEYENCEBar;
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
string url = "https://inner-apisix.hisense.com/mes-plus/api/Fcc/GetWorkOrderBOMlnfo?user_key=k7gzo1fsfcami7n5hmpxtybyluf9xeue";
// string url = "https://echo.hoppscotch.io";
string PostUrl = url;
DateTime dt = DateTime.Now;
string starttime = string.Format("{0:yyyy_mm_dd}", dt); //17 17 2017 2017
string startTime = starttime;
string EndTime = starttime;
string lineBody = "ZZ-P";//<2F><><EFBFBD><EFBFBD>
string MaterialDescripts = "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
string MaterialDescripts2 = "<22><><EFBFBD>չ<EFBFBD>";
JObject patientinfo = new JObject();
JArray ids = new JArray();
ids.Add(MaterialDescripts);
ids.Add(MaterialDescripts2);
patientinfo["startTime"] = startTime;
patientinfo["EndTime"] = EndTime;
patientinfo["lineBody"] = lineBody;
patientinfo["MaterialDescripts"] = ids;
string sendData = JsonConvert.SerializeObject(patientinfo);
//eg: <20><><EFBFBD><EFBFBD>Url<72><6C>Ҫ<EFBFBD>ĸ<EFBFBD>ʽ<EFBFBD><CABD>sendData={"ids":[123],"Name":С<><D0A1>}
string resultData = Post(sendData, PostUrl);
resultData = "{\r\n\t\"Result\": [],\r\n\t\"success\": false,\r\n\t\"ReturnMsg\": \"<22><><EFBFBD><EFBFBD>-starttime <20><><EFBFBD><EFBFBD>ȷ!\"\r\n}";
JObject jo = (JObject)JsonConvert.DeserializeObject(resultData);
string sucessIf = jo["success"].ToString();
if (sucessIf.ToLower() == "true")
{
string ProductType = jo["ProductType"].ToString();
string FinalDefIo = jo["FinalDefIo"].ToString();
//WEBAPI<50>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD>
xKNow = GetModeFromBar(ProductType);//<2F><><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><DDBF>в<EFBFBD>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
//<2F><><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD>
}
}
#endif
// if(Oldm_sKEYENCEBar!= m_sKEYENCEBar)
xKNow = GetModeFromBar("VWJ070541V0WW824F120223");//<2F><><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><DDBF>в<EFBFBD>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
if (xKNow == null)
{
myLog("<22><><EFBFBD>ݿ<EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƥ<EFBFBD><C6A5>" + m_sKEYENCEBar, DateTime.Now);
break;
}
//if(xKNow.OcrBar!= Old_xKNow.OcrBar)
//{
//}
if (Regex.IsMatch(xKNow.MoveX.ToString(), @"^[0-9]+$") && Regex.IsMatch(xKNow.MoveY.ToString(), @"^[0-9]+$") && Regex.IsMatch(xKNow.MoveZ.ToString(), @"^[0-9]+$"))
{
// Old_xKNow = xKNow;
myLog("<22>ͺ<EFBFBD>ƥ<EFBFBD><C6A5><EFBFBD>ɹ<EFBFBD>" + xKNow.OcrBar, DateTime.Now);
//MoveToP(xKNow.MoveX, xKNow.MoveY, xKNow.MoveZ);// PLC<4C><43><EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD>ƶ<EFBFBD><C6B6><EFBFBD><EFBFBD><EFBFBD>
}
break;
}
Thread.Sleep(2);
bBar = false;
}
}
}
}
Thread.Sleep(10);
});
}
#region <EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// <summary>
/// <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
@ -1448,7 +1256,7 @@ namespace HisenceYoloDetection
int iNum0 = 0;
int iNum3 = 0;
Thread.CurrentThread.Priority = ThreadPriority.Highest;
while (meachineState==MeachineState.machine_opening)
while (meachineState == MeachineState.machine_opening)
{
// myResetEvent.Set();
PLC548 = true;
@ -1494,19 +1302,21 @@ namespace HisenceYoloDetection
//<2F><><EFBFBD><EFBFBD><EFBFBD>ijɺͺ<C9BA><CDBA>ŵĶԽ<C4B6><D4BD><EFBFBD><EFBFBD><EFBFBD>
string OcrBar = "";
string FinalDefIDToFind = m_sKEYENCEBar;// Ŀ<><C4BF> FinalDefID
OcrBar = FormBarType(FinalDefIDToFind);
this.Invoke(new Action(() =>
{
ScannerBox.Text = FinalDefIDToFind;
textBox3.Text = OcrBar;
}));
myLog(<><C9A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" + m_sKEYENCEBar, DateTime.Now);
#if false
//#if false
//<2F>Ƿ<EFBFBD><C7B7><EFBFBD>Pos<6F><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>䳬ʱ
OcrBar = FormBarType(FinalDefIDToFind);
#else
OcrBar = "OZ.ϴ<>»<EFBFBD>.WF3G7014-NVW001CZA.WSG374A.<2E><>";
#endif
//#else
// OcrBar = "OZ.ϴ<>»<EFBFBD>.WF3G7014-NVW001CZA.WSG374A.<2E><>";
//#endif
// if(Oldm_sKEYENCEBar!= m_sKEYENCEBar)
@ -1826,7 +1636,8 @@ namespace HisenceYoloDetection
{
myLog("δƥ<CEB4><C6A5><EFBFBD>ɹ<EFBFBD>" + xKNow.OcrBar, DateTime.Now);
myLog("<22><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>", DateTime.Now);
//Insert_auto();
Insert_auto(true, Cam1ImgOne, m_sKEYENCEBar, 8974, 0, 0);
break;
}
string IOcrBAr = xKNow.OcrBar;
@ -2713,12 +2524,23 @@ namespace HisenceYoloDetection
string jsonData = @"
{
""StartTime"": ""2024-07-1"",
""EndTime"": ""2024-07-22"",
""EndTime"": ""2024-07-20"",
""LineBody"": ""BZ-PC""
}";
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
string currentDate = DateTime.Now.ToString("yyyy-MM-dd");
// <20><><EFBFBD><EFBFBD>JSON<4F>ַ<EFBFBD><D6B7><EFBFBD>ΪJObject
JObject jsonObject = JObject.Parse(jsonData);
// <20><><EFBFBD><EFBFBD>EndTime<6D>ֶ<EFBFBD>
jsonObject["EndTime"] = currentDate;
// <20><>JObjectת<74><D7AA>JSON<4F>ַ<EFBFBD><D6B7><EFBFBD>
string updatedJsonData = jsonObject.ToString();
string postData = "inputvalue=" + Uri.EscapeDataString(jsonData);
string postData = "inputvalue=" + Uri.EscapeDataString(updatedJsonData);
try
{
@ -2747,8 +2569,6 @@ namespace HisenceYoloDetection
}
public void Insert_auto(bool ifwhiteBan, Mat img, string SNtext, int MoveX, int MoveY, int MoveZ)
{
// PaddleOcrModel IpaddleOcrModel = new PaddleOcrModel();
// IpaddleOcrModel.Load(ModelChangePath, "CPU");
string IOcrBAr = FormBarType(SNtext);
@ -2762,20 +2582,9 @@ namespace HisenceYoloDetection
sw.Flush();
}
//<2F><><EFBFBD><EFBFBD><EFBFBD>еĿ<D0B5><C4BF>ü<EFBFBD> ʶ<><CAB6><EFBFBD>ַ<EFBFBD><D6B7>Ա<EFBFBD><D4B1>ַ<EFBFBD><D6B7><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F>ӵ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȫͼ<C8AB><CDBC>Χ<EFBFBD><CEA7>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȼ<EFBFBD><C8BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>OCRʶ<52><CAB6>
MLRequest CamOneI = new MLRequest();
CamOneI.currentMat = Cv2.ImRead(Cam1OnePath);
CamOneI.currentMat = img;
CamOneI.ResizeWidth = 640;
CamOneI.ResizeHeight = 640;
CamOneI.Score = 0.3f;
@ -2803,19 +2612,11 @@ namespace HisenceYoloDetection
InsertXKHisenceWordData(xkWord);//<2F><><EFBFBD>ؼ<EFBFBD><D8BC>ֱ<EFBFBD><D6B1>в<EFBFBD><D0B2><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD>
//List<string> bingji = strMatListOne.Union(strMatListTwo).ToList();//<2F><><EFBFBD><EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD>
//List<string> Fuzzybingji = strMatFuzzyListOne.Union(strMatFuzzyListTwo).ToList();//<2F><><EFBFBD><EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD>
string OcrTextone = strMatListOne.Join("##");
string OcrTextTwo = strMatFuzzyListOne.Join("##");
//string OcrTextinsert = "";
//List<string> bingji = strMatListListOne.Union(strMatListListTwo).ToList();//<2F><><EFBFBD><EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD>
//for (int j = 0; j < bingji.Count; j++)
//{
// string jdetial = bingji[j];
// OcrTextinsert += jdetial + "##";
//}
string detstr = "";
//<2F>ҵ<EFBFBD>ʶ<EFBFBD><CAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
@ -2841,14 +2642,7 @@ namespace HisenceYoloDetection
DateTime dt2 = DateTime.Now;
XKHisence xK = new XKHisence("1", IOcrBAr, MoveX, MoveY, MoveZ, detstr, OcrTextone, MoveX, MoveY, MoveZ, ModelChangePath, "", OcrTextTwo);
//string log="D:\\Hisence\\detImages\\" + dt2.Year.ToString() + dt2.Month.ToString() + dt2.Day.ToString() + dt2.Hour.ToString() + dt2.Minute.ToString() + dt2.Millisecond.ToString() + "2result.log";
// using (StreamWriter sw=new StreamWriter(log, true))
// {
// // sw.WriteLine(xK.OcrBar+"\n");
// sw.WriteLine(xK.OcrText);
// sw.WriteLine(xK.FuzzyOcrText);
// }
//IpaddleOcrModel.FreeModel();
string sql = "insert into XK_Hisence VALUES('" + xK.Type + "','" + xK.OcrBar + "'," + xK.MoveX + "," + xK.MoveY + "," + xK.MoveZ + ",'" + xK.Detect + "','" + xK.OcrText + "'," + xK.MoveTwoX + "," + xK.MoveTwoY + "," + xK.MoveTwoZ + ",'" + xK.OcrParm + "','" + xK.Language + "','" + xK.FuzzyOcrText + "')";
int i = SQLiteHelper.ExecuteSql(sql);
@ -3946,5 +3740,30 @@ namespace HisenceYoloDetection
melsecPLCTCPDriver.WriteInt(YellowLightingAdress, 0);
melsecPLCTCPDriver.WriteInt(GreenLightingAdress, 0);
}
private void label24_Click(object sender, EventArgs e)
{
}
private void label25_Click(object sender, EventArgs e)
{
}
private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
{
}
private void label18_Click(object sender, EventArgs e)
{
}
private void canvas2_Load(object sender, EventArgs e)
{
}
}
}