Compare commits
6 Commits
7512bafc43
...
963bba78a8
Author | SHA1 | Date | |
---|---|---|---|
963bba78a8 | |||
12c2618932 | |||
2de7ff5745 | |||
b7eae98821 | |||
b0b062788e | |||
b94b6773d5 |
13
AIParkingApplication/LaneIn.Designer.cs
generated
13
AIParkingApplication/LaneIn.Designer.cs
generated
|
@ -38,7 +38,6 @@
|
||||||
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();
|
||||||
|
@ -146,7 +145,6 @@
|
||||||
//
|
//
|
||||||
// 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);
|
||||||
|
@ -160,16 +158,6 @@
|
||||||
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;
|
||||||
|
@ -239,6 +227,5 @@
|
||||||
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,7 +18,6 @@ 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;
|
||||||
|
|
||||||
|
@ -30,8 +29,7 @@ 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;
|
||||||
|
@ -40,7 +38,6 @@ 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;
|
||||||
|
@ -48,11 +45,9 @@ 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);
|
||||||
|
@ -69,10 +64,19 @@ namespace AIParkingApplication
|
||||||
if (cardInfoResult.IsValid)
|
if (cardInfoResult.IsValid)
|
||||||
{
|
{
|
||||||
plateCamera.RequestCaptureOneFrame();
|
plateCamera.RequestCaptureOneFrame();
|
||||||
await Task.Delay(500);
|
overviewCamera.RequestCaptureOneFrame();
|
||||||
var videoFrame = plateCamera.CurrentFrame;
|
await Task.Delay(200);
|
||||||
|
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();
|
||||||
|
@ -119,23 +123,7 @@ namespace AIParkingApplication
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OverviewCamera_OnOneVideoFrameRequested(Mat videoFrame)
|
private async Task<FinalPlateResult> ProcessFrameImage(PlateProcessor plateProcessor, Mat frame, bool isRetryMode)
|
||||||
{
|
|
||||||
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
|
||||||
{
|
{
|
||||||
|
@ -145,18 +133,10 @@ namespace AIParkingApplication
|
||||||
|
|
||||||
if (isRetryMode && !plateProcessor.IsPlateStringValid(finalPlateResult.PlateString))
|
if (isRetryMode && !plateProcessor.IsPlateStringValid(finalPlateResult.PlateString))
|
||||||
{
|
{
|
||||||
if (isRetryModeUntilOk) //TODO: TestMode
|
Console.WriteLine("ProcessFrameImage Retry Mode");
|
||||||
{
|
Thread.Sleep(1000);
|
||||||
Thread.Sleep(500);
|
overviewCamera.RequestCaptureOneFrame();
|
||||||
CaptureAllCamera();
|
finalPlateResult = await plateProcessor.ProcessPlate(frame);
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Console.WriteLine("ProcessFrameImage Retry Mode");
|
|
||||||
Thread.Sleep(1000);
|
|
||||||
overviewCamera.RequestCaptureOneFrame();
|
|
||||||
finalPlateResult = await plateProcessor.ProcessPlate(frame);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return finalPlateResult;
|
return finalPlateResult;
|
||||||
}
|
}
|
||||||
|
@ -171,16 +151,6 @@ 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();
|
||||||
|
@ -253,16 +223,5 @@ 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,58 +117,4 @@
|
||||||
<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