Compare commits
No commits in common. "963bba78a8e31f8347415985e44e3b7074f3ba7f" and "7512bafc4301b293846b78e011d010efe9c157e6" have entirely different histories.
963bba78a8
...
7512bafc43
13
AIParkingApplication/LaneIn.Designer.cs
generated
13
AIParkingApplication/LaneIn.Designer.cs
generated
|
@ -38,6 +38,7 @@
|
||||||
this.lblCardType = new System.Windows.Forms.Label();
|
this.lblCardType = new System.Windows.Forms.Label();
|
||||||
this.lblCardNumber = new System.Windows.Forms.Label();
|
this.lblCardNumber = new System.Windows.Forms.Label();
|
||||||
this.grbCardInformation = new System.Windows.Forms.GroupBox();
|
this.grbCardInformation = new System.Windows.Forms.GroupBox();
|
||||||
|
this.button1 = new System.Windows.Forms.Button();
|
||||||
this.lblCardTime = new System.Windows.Forms.Label();
|
this.lblCardTime = new System.Windows.Forms.Label();
|
||||||
this.lblPlateString = new System.Windows.Forms.Label();
|
this.lblPlateString = new System.Windows.Forms.Label();
|
||||||
this.lblRecogizePlateStatus = new System.Windows.Forms.Label();
|
this.lblRecogizePlateStatus = new System.Windows.Forms.Label();
|
||||||
|
@ -145,6 +146,7 @@
|
||||||
//
|
//
|
||||||
// grbCardInformation
|
// grbCardInformation
|
||||||
//
|
//
|
||||||
|
this.grbCardInformation.Controls.Add(this.button1);
|
||||||
this.grbCardInformation.Controls.Add(this.lblCardType);
|
this.grbCardInformation.Controls.Add(this.lblCardType);
|
||||||
this.grbCardInformation.Controls.Add(this.lblCardTime);
|
this.grbCardInformation.Controls.Add(this.lblCardTime);
|
||||||
this.grbCardInformation.Controls.Add(this.lblPlateString);
|
this.grbCardInformation.Controls.Add(this.lblPlateString);
|
||||||
|
@ -158,6 +160,16 @@
|
||||||
this.grbCardInformation.TabStop = false;
|
this.grbCardInformation.TabStop = false;
|
||||||
this.grbCardInformation.Text = "Thông tin thẻ";
|
this.grbCardInformation.Text = "Thông tin thẻ";
|
||||||
//
|
//
|
||||||
|
// button1
|
||||||
|
//
|
||||||
|
this.button1.Location = new System.Drawing.Point(360, 20);
|
||||||
|
this.button1.Name = "button1";
|
||||||
|
this.button1.Size = new System.Drawing.Size(75, 23);
|
||||||
|
this.button1.TabIndex = 1;
|
||||||
|
this.button1.Text = "button1";
|
||||||
|
this.button1.UseVisualStyleBackColor = true;
|
||||||
|
this.button1.Click += new System.EventHandler(this.button1_Click);
|
||||||
|
//
|
||||||
// lblCardTime
|
// lblCardTime
|
||||||
//
|
//
|
||||||
this.lblCardTime.AutoSize = true;
|
this.lblCardTime.AutoSize = true;
|
||||||
|
@ -227,5 +239,6 @@
|
||||||
private System.Windows.Forms.Label lblPlateString;
|
private System.Windows.Forms.Label lblPlateString;
|
||||||
private System.Windows.Forms.Label lblCardTime;
|
private System.Windows.Forms.Label lblCardTime;
|
||||||
private System.Windows.Forms.Label lblRecogizePlateStatus;
|
private System.Windows.Forms.Label lblRecogizePlateStatus;
|
||||||
|
private System.Windows.Forms.Button button1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,6 +18,7 @@ namespace AIParkingApplication
|
||||||
private bool isSupportLongPlate;
|
private bool isSupportLongPlate;
|
||||||
private bool isAutoOpenDoor;
|
private bool isAutoOpenDoor;
|
||||||
private bool isRetryMode;
|
private bool isRetryMode;
|
||||||
|
private bool isRetryModeUntilOk; //TODO: Test mode
|
||||||
private C3DeviceController c3Device;
|
private C3DeviceController c3Device;
|
||||||
private ApiController apiController;
|
private ApiController apiController;
|
||||||
|
|
||||||
|
@ -29,7 +30,8 @@ namespace AIParkingApplication
|
||||||
bool isSupportSquarePlate = true,
|
bool isSupportSquarePlate = true,
|
||||||
bool isSupportLongPlate = false,
|
bool isSupportLongPlate = false,
|
||||||
bool isAutoOpenDoor = true,
|
bool isAutoOpenDoor = true,
|
||||||
bool isRetryMode = false)
|
bool isRetryMode = false,
|
||||||
|
bool isRetryModeUntilOk = false)
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
this.doorId = doorId;
|
this.doorId = doorId;
|
||||||
|
@ -38,6 +40,7 @@ namespace AIParkingApplication
|
||||||
this.isSupportLongPlate = isSupportLongPlate;
|
this.isSupportLongPlate = isSupportLongPlate;
|
||||||
this.isAutoOpenDoor = isAutoOpenDoor;
|
this.isAutoOpenDoor = isAutoOpenDoor;
|
||||||
this.isRetryMode = isRetryMode;
|
this.isRetryMode = isRetryMode;
|
||||||
|
this.isRetryModeUntilOk = isRetryModeUntilOk;
|
||||||
overviewCamera = new Camera(overviewStream);
|
overviewCamera = new Camera(overviewStream);
|
||||||
plateCamera = new Camera(plateStream);
|
plateCamera = new Camera(plateStream);
|
||||||
this.apiController = apiController;
|
this.apiController = apiController;
|
||||||
|
@ -45,9 +48,11 @@ namespace AIParkingApplication
|
||||||
this.c3Device.OnNewCardReceived += C3Device_OnNewCardReceived;
|
this.c3Device.OnNewCardReceived += C3Device_OnNewCardReceived;
|
||||||
|
|
||||||
plateCamera.OnVideoFrameReceived += PlateCameraOnVideoFrameReceived;
|
plateCamera.OnVideoFrameReceived += PlateCameraOnVideoFrameReceived;
|
||||||
|
plateCamera.OnOneVideoFrameRequested += PlateCamera_OnOneVideoFrameRequested;
|
||||||
plateCamera.OnOpenVideoStreamFailed += PlateCamera_OnOpenVideoStreamFailed;
|
plateCamera.OnOpenVideoStreamFailed += PlateCamera_OnOpenVideoStreamFailed;
|
||||||
|
|
||||||
overviewCamera.OnVideoFrameReceived += OverviewCameraOnVideoFrameReceived;
|
overviewCamera.OnVideoFrameReceived += OverviewCameraOnVideoFrameReceived;
|
||||||
|
overviewCamera.OnOneVideoFrameRequested += OverviewCamera_OnOneVideoFrameRequested;
|
||||||
overviewCamera.OnOpenVideoStreamFailed += OverviewCamera_OnOpenVideoStreamFailed;
|
overviewCamera.OnOpenVideoStreamFailed += OverviewCamera_OnOpenVideoStreamFailed;
|
||||||
|
|
||||||
plateProcessor = new PlateProcessor(this.isSupportSquarePlate, this.isSupportLongPlate);
|
plateProcessor = new PlateProcessor(this.isSupportSquarePlate, this.isSupportLongPlate);
|
||||||
|
@ -64,19 +69,10 @@ namespace AIParkingApplication
|
||||||
if (cardInfoResult.IsValid)
|
if (cardInfoResult.IsValid)
|
||||||
{
|
{
|
||||||
plateCamera.RequestCaptureOneFrame();
|
plateCamera.RequestCaptureOneFrame();
|
||||||
overviewCamera.RequestCaptureOneFrame();
|
await Task.Delay(500);
|
||||||
await Task.Delay(200);
|
var videoFrame = plateCamera.CurrentFrame;
|
||||||
var plateVideoFrame = plateCamera.CurrentFrame;
|
|
||||||
var overviewVideoFrame = overviewCamera.CurrentFrame;
|
|
||||||
|
|
||||||
pictureBoxOverviewImage.Invoke(new Action(() =>
|
|
||||||
{
|
|
||||||
pictureBoxOverviewImage.Image?.Dispose();
|
|
||||||
pictureBoxOverviewImage.Image = overviewVideoFrame.ToBitmap();
|
|
||||||
}));
|
|
||||||
|
|
||||||
FinalPlateResult result = await ProcessFrameImage(plateProcessor, plateVideoFrame, isRetryMode);
|
|
||||||
|
|
||||||
|
FinalPlateResult result = await ProcessFrameImage(plateProcessor, videoFrame, isRetryMode, isRetryModeUntilOk);
|
||||||
pictureBoxPlateImage.Invoke(new Action(() =>
|
pictureBoxPlateImage.Invoke(new Action(() =>
|
||||||
{
|
{
|
||||||
pictureBoxPlateImage.Image?.Dispose();
|
pictureBoxPlateImage.Image?.Dispose();
|
||||||
|
@ -123,7 +119,23 @@ namespace AIParkingApplication
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task<FinalPlateResult> ProcessFrameImage(PlateProcessor plateProcessor, Mat frame, bool isRetryMode)
|
private void OverviewCamera_OnOneVideoFrameRequested(Mat videoFrame)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
pictureBoxOverviewImage.Invoke(new Action(() =>
|
||||||
|
{
|
||||||
|
pictureBoxOverviewImage.Image?.Dispose();
|
||||||
|
pictureBoxOverviewImage.Image = videoFrame.ToBitmap();
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Console.WriteLine($"{Util.GetCurrentMethodName()}\texMessage: {ex.Message}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private async Task<FinalPlateResult> ProcessFrameImage(PlateProcessor plateProcessor, Mat frame, bool isRetryMode, bool isRetryModeUntilOk)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -132,12 +144,20 @@ namespace AIParkingApplication
|
||||||
FinalPlateResult finalPlateResult = await plateProcessor.ProcessPlate(frame);
|
FinalPlateResult finalPlateResult = await plateProcessor.ProcessPlate(frame);
|
||||||
|
|
||||||
if (isRetryMode && !plateProcessor.IsPlateStringValid(finalPlateResult.PlateString))
|
if (isRetryMode && !plateProcessor.IsPlateStringValid(finalPlateResult.PlateString))
|
||||||
|
{
|
||||||
|
if (isRetryModeUntilOk) //TODO: TestMode
|
||||||
|
{
|
||||||
|
Thread.Sleep(500);
|
||||||
|
CaptureAllCamera();
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
Console.WriteLine("ProcessFrameImage Retry Mode");
|
Console.WriteLine("ProcessFrameImage Retry Mode");
|
||||||
Thread.Sleep(1000);
|
Thread.Sleep(1000);
|
||||||
overviewCamera.RequestCaptureOneFrame();
|
overviewCamera.RequestCaptureOneFrame();
|
||||||
finalPlateResult = await plateProcessor.ProcessPlate(frame);
|
finalPlateResult = await plateProcessor.ProcessPlate(frame);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return finalPlateResult;
|
return finalPlateResult;
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
|
@ -151,6 +171,16 @@ namespace AIParkingApplication
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private async void PlateCamera_OnOneVideoFrameRequested(Mat videoFrame)
|
||||||
|
{
|
||||||
|
//FinalPlateResult result = await ProcessFrameImage(plateProcessor, videoFrame, isRetryMode, isRetryModeUntilOk);
|
||||||
|
//pictureBoxPlateImage.Invoke(new Action(() =>
|
||||||
|
//{
|
||||||
|
// pictureBoxPlateImage.Image?.Dispose();
|
||||||
|
// pictureBoxPlateImage.Image = result.PlateImage;
|
||||||
|
//}));
|
||||||
|
}
|
||||||
|
|
||||||
public void Stop()
|
public void Stop()
|
||||||
{
|
{
|
||||||
plateCamera.Stop();
|
plateCamera.Stop();
|
||||||
|
@ -223,5 +253,16 @@ namespace AIParkingApplication
|
||||||
Console.WriteLine($"{Util.GetCurrentMethodName()}\texMessage: {ex.Message}");
|
Console.WriteLine($"{Util.GetCurrentMethodName()}\texMessage: {ex.Message}");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void CaptureAllCamera()
|
||||||
|
{
|
||||||
|
plateCamera.RequestCaptureOneFrame();
|
||||||
|
overviewCamera.RequestCaptureOneFrame();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void button1_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
CaptureAllCamera();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -117,4 +117,58 @@
|
||||||
<resheader name="writer">
|
<resheader name="writer">
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
|
<metadata name="pictureBoxPlateImage.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="pictureBoxPlateVideo.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="grbPlateCamera.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="pictureBoxOverviewImage.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="pictureBoxOverviewVideo.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="grbOverviewCamera.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="lblLaneLabel.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="lblCardType.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="lblCardNumber.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="grbCardInformation.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="button1.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="lblCardTime.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="lblPlateString.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="button1.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="lblCardTime.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="lblPlateString.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="lblRecogizePlateStatus.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="$this.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
</root>
|
</root>
|
Loading…
Reference in New Issue
Block a user