修复合并错误

This commit is contained in:
cloud301530 2025-01-06 18:29:18 +08:00
commit e5780baa18
11 changed files with 917 additions and 294 deletions

View File

@ -28,13 +28,13 @@
/// </summary>
private void InitializeComponent()
{
System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea2 = new System.Windows.Forms.DataVisualization.Charting.ChartArea();
System.Windows.Forms.DataVisualization.Charting.Legend legend2 = new System.Windows.Forms.DataVisualization.Charting.Legend();
System.Windows.Forms.DataVisualization.Charting.Series series2 = new System.Windows.Forms.DataVisualization.Charting.Series();
System.Windows.Forms.DataVisualization.Charting.DataPoint dataPoint5 = new System.Windows.Forms.DataVisualization.Charting.DataPoint(1D, 5D);
System.Windows.Forms.DataVisualization.Charting.DataPoint dataPoint6 = new System.Windows.Forms.DataVisualization.Charting.DataPoint(1.5D, 5D);
System.Windows.Forms.DataVisualization.Charting.DataPoint dataPoint7 = new System.Windows.Forms.DataVisualization.Charting.DataPoint(1.9D, 8D);
System.Windows.Forms.DataVisualization.Charting.DataPoint dataPoint8 = new System.Windows.Forms.DataVisualization.Charting.DataPoint(0D, 0D);
System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea1 = new System.Windows.Forms.DataVisualization.Charting.ChartArea();
System.Windows.Forms.DataVisualization.Charting.Legend legend1 = new System.Windows.Forms.DataVisualization.Charting.Legend();
System.Windows.Forms.DataVisualization.Charting.Series series1 = new System.Windows.Forms.DataVisualization.Charting.Series();
System.Windows.Forms.DataVisualization.Charting.DataPoint dataPoint1 = new System.Windows.Forms.DataVisualization.Charting.DataPoint(1D, 5D);
System.Windows.Forms.DataVisualization.Charting.DataPoint dataPoint2 = new System.Windows.Forms.DataVisualization.Charting.DataPoint(1.5D, 5D);
System.Windows.Forms.DataVisualization.Charting.DataPoint dataPoint3 = new System.Windows.Forms.DataVisualization.Charting.DataPoint(1.9D, 8D);
System.Windows.Forms.DataVisualization.Charting.DataPoint dataPoint4 = new System.Windows.Forms.DataVisualization.Charting.DataPoint(0D, 0D);
this.menuStrip1 = new System.Windows.Forms.MenuStrip();
this.ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
@ -49,46 +49,46 @@
this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.ToolStripMenuItem,
this.ToolStripMenuItem});
this.menuStrip1.Location = new System.Drawing.Point(3, 24);
this.menuStrip1.Location = new System.Drawing.Point(4, 30);
this.menuStrip1.Name = "menuStrip1";
this.menuStrip1.Padding = new System.Windows.Forms.Padding(4, 2, 0, 2);
this.menuStrip1.Size = new System.Drawing.Size(899, 25);
this.menuStrip1.Padding = new System.Windows.Forms.Padding(5, 2, 0, 2);
this.menuStrip1.Size = new System.Drawing.Size(1199, 30);
this.menuStrip1.TabIndex = 0;
this.menuStrip1.Text = "menuStrip1";
//
// 文件ToolStripMenuItem
//
this.ToolStripMenuItem.Name = "文件ToolStripMenuItem";
this.ToolStripMenuItem.Size = new System.Drawing.Size(44, 21);
this.ToolStripMenuItem.Size = new System.Drawing.Size(53, 26);
this.ToolStripMenuItem.Text = "文件";
//
// 选项ToolStripMenuItem
//
this.ToolStripMenuItem.Name = "选项ToolStripMenuItem";
this.ToolStripMenuItem.Size = new System.Drawing.Size(44, 21);
this.ToolStripMenuItem.Size = new System.Drawing.Size(53, 26);
this.ToolStripMenuItem.Text = "选项";
//
// chart1
//
chartArea2.Name = "ChartArea1";
this.chart1.ChartAreas.Add(chartArea2);
chartArea1.Name = "ChartArea1";
this.chart1.ChartAreas.Add(chartArea1);
this.chart1.Dock = System.Windows.Forms.DockStyle.Fill;
legend2.Name = "Legend1";
this.chart1.Legends.Add(legend2);
this.chart1.Location = new System.Drawing.Point(3, 49);
this.chart1.Margin = new System.Windows.Forms.Padding(2);
legend1.Name = "Legend1";
this.chart1.Legends.Add(legend1);
this.chart1.Location = new System.Drawing.Point(4, 60);
this.chart1.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.chart1.Name = "chart1";
this.chart1.Palette = System.Windows.Forms.DataVisualization.Charting.ChartColorPalette.Bright;
series2.ChartArea = "ChartArea1";
series2.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.FastLine;
series2.Legend = "Legend1";
series2.Name = "Series1";
series2.Points.Add(dataPoint5);
series2.Points.Add(dataPoint6);
series2.Points.Add(dataPoint7);
series2.Points.Add(dataPoint8);
this.chart1.Series.Add(series2);
this.chart1.Size = new System.Drawing.Size(899, 366);
series1.ChartArea = "ChartArea1";
series1.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.FastLine;
series1.Legend = "Legend1";
series1.Name = "Series1";
series1.Points.Add(dataPoint1);
series1.Points.Add(dataPoint2);
series1.Points.Add(dataPoint3);
series1.Points.Add(dataPoint4);
this.chart1.Series.Add(series1);
this.chart1.Size = new System.Drawing.Size(1199, 458);
this.chart1.TabIndex = 1;
this.chart1.Text = "chart1";
this.chart1.MouseDown += new System.Windows.Forms.MouseEventHandler(this.chart1_MouseDown);
@ -96,17 +96,17 @@
//
// LaneChartForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 15F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(905, 418);
this.ClientSize = new System.Drawing.Size(1207, 522);
this.Controls.Add(this.chart1);
this.Controls.Add(this.menuStrip1);
this.DrawerAutoShow = true;
this.FormStyle = MaterialSkin.Controls.MaterialForm.FormStyles.ActionBar_None;
this.MainMenuStrip = this.menuStrip1;
this.Margin = new System.Windows.Forms.Padding(2);
this.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.Name = "LaneChartForm";
this.Padding = new System.Windows.Forms.Padding(3, 24, 3, 3);
this.Padding = new System.Windows.Forms.Padding(4, 30, 4, 4);
this.Text = "LaneChartForm";
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.LaneChartForm_FormClosing);
this.menuStrip1.ResumeLayout(false);

View File

@ -57,8 +57,6 @@
this.materialButton_resetImage = new MaterialSkin.Controls.MaterialButton();
this.materialButton_inverse = new MaterialSkin.Controls.MaterialButton();
this.materialButton_save = new MaterialSkin.Controls.MaterialButton();
this.materialButton_forward = new MaterialSkin.Controls.MaterialButton();
this.materialButton_return = new MaterialSkin.Controls.MaterialButton();
this.pl_right = new ReaLTaiizor.Controls.Panel();
this.thunderLabel1 = new ReaLTaiizor.Controls.ThunderLabel();
this.metroPanel_RightTop.SuspendLayout();
@ -81,8 +79,8 @@
this.metroPanel_RightTop.Dock = System.Windows.Forms.DockStyle.Fill;
this.metroPanel_RightTop.HorizontalScrollbarBarColor = true;
this.metroPanel_RightTop.HorizontalScrollbarHighlightOnWheel = false;
this.metroPanel_RightTop.HorizontalScrollbarSize = 7;
this.metroPanel_RightTop.Location = new System.Drawing.Point(210, 0);
this.metroPanel_RightTop.HorizontalScrollbarSize = 9;
this.metroPanel_RightTop.Location = new System.Drawing.Point(280, 0);
this.metroPanel_RightTop.Margin = new System.Windows.Forms.Padding(0);
this.metroPanel_RightTop.Name = "metroPanel_RightTop";
this.metroPanel_RightTop.Size = new System.Drawing.Size(652, 55);
@ -91,7 +89,7 @@
this.metroPanel_RightTop.UseCustomBackColor = true;
this.metroPanel_RightTop.VerticalScrollbarBarColor = true;
this.metroPanel_RightTop.VerticalScrollbarHighlightOnWheel = false;
this.metroPanel_RightTop.VerticalScrollbarSize = 7;
this.metroPanel_RightTop.VerticalScrollbarSize = 9;
//
// materialButton_log
//
@ -102,11 +100,11 @@
this.materialButton_log.HighEmphasis = true;
this.materialButton_log.Icon = ((System.Drawing.Image)(resources.GetObject("materialButton_log.Icon")));
this.materialButton_log.Location = new System.Drawing.Point(581, 0);
this.materialButton_log.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.materialButton_log.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.materialButton_log.MouseState = MaterialSkin.MouseState.HOVER;
this.materialButton_log.Name = "materialButton_log";
this.materialButton_log.NoAccentTextColor = System.Drawing.Color.Empty;
this.materialButton_log.Size = new System.Drawing.Size(113, 55);
this.materialButton_log.Size = new System.Drawing.Size(113, 69);
this.materialButton_log.TabIndex = 19;
this.materialButton_log.Text = "操作日志";
this.materialButton_log.Type = MaterialSkin.Controls.MaterialButton.MaterialButtonType.Contained;
@ -123,11 +121,11 @@
this.materialButton_setting.HighEmphasis = true;
this.materialButton_setting.Icon = ((System.Drawing.Image)(resources.GetObject("materialButton_setting.Icon")));
this.materialButton_setting.Location = new System.Drawing.Point(468, 0);
this.materialButton_setting.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.materialButton_setting.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.materialButton_setting.MouseState = MaterialSkin.MouseState.HOVER;
this.materialButton_setting.Name = "materialButton_setting";
this.materialButton_setting.NoAccentTextColor = System.Drawing.Color.Empty;
this.materialButton_setting.Size = new System.Drawing.Size(113, 55);
this.materialButton_setting.Size = new System.Drawing.Size(113, 69);
this.materialButton_setting.TabIndex = 18;
this.materialButton_setting.Text = "系统设置";
this.materialButton_setting.Type = MaterialSkin.Controls.MaterialButton.MaterialButtonType.Contained;
@ -145,11 +143,11 @@
this.materialButton_curveimage.HighEmphasis = true;
this.materialButton_curveimage.Icon = ((System.Drawing.Image)(resources.GetObject("materialButton_curveimage.Icon")));
this.materialButton_curveimage.Location = new System.Drawing.Point(339, 0);
this.materialButton_curveimage.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.materialButton_curveimage.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.materialButton_curveimage.MouseState = MaterialSkin.MouseState.HOVER;
this.materialButton_curveimage.Name = "materialButton_curveimage";
this.materialButton_curveimage.NoAccentTextColor = System.Drawing.Color.Empty;
this.materialButton_curveimage.Size = new System.Drawing.Size(129, 55);
this.materialButton_curveimage.Size = new System.Drawing.Size(129, 69);
this.materialButton_curveimage.TabIndex = 17;
this.materialButton_curveimage.Text = "泳道波形图";
this.materialButton_curveimage.Type = MaterialSkin.Controls.MaterialButton.MaterialButtonType.Contained;
@ -167,11 +165,11 @@
this.materialButton_analyzedata.HighEmphasis = true;
this.materialButton_analyzedata.Icon = ((System.Drawing.Image)(resources.GetObject("materialButton_analyzedata.Icon")));
this.materialButton_analyzedata.Location = new System.Drawing.Point(226, 0);
this.materialButton_analyzedata.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.materialButton_analyzedata.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.materialButton_analyzedata.MouseState = MaterialSkin.MouseState.HOVER;
this.materialButton_analyzedata.Name = "materialButton_analyzedata";
this.materialButton_analyzedata.NoAccentTextColor = System.Drawing.Color.Empty;
this.materialButton_analyzedata.Size = new System.Drawing.Size(113, 55);
this.materialButton_analyzedata.Size = new System.Drawing.Size(113, 69);
this.materialButton_analyzedata.TabIndex = 16;
this.materialButton_analyzedata.Text = "分析数据";
this.materialButton_analyzedata.Type = MaterialSkin.Controls.MaterialButton.MaterialButtonType.Contained;
@ -189,11 +187,11 @@
this.materialButton_outimage.HighEmphasis = true;
this.materialButton_outimage.Icon = ((System.Drawing.Image)(resources.GetObject("materialButton_outimage.Icon")));
this.materialButton_outimage.Location = new System.Drawing.Point(113, 0);
this.materialButton_outimage.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.materialButton_outimage.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.materialButton_outimage.MouseState = MaterialSkin.MouseState.HOVER;
this.materialButton_outimage.Name = "materialButton_outimage";
this.materialButton_outimage.NoAccentTextColor = System.Drawing.Color.Empty;
this.materialButton_outimage.Size = new System.Drawing.Size(113, 55);
this.materialButton_outimage.Size = new System.Drawing.Size(113, 69);
this.materialButton_outimage.TabIndex = 15;
this.materialButton_outimage.Text = "导出图像";
this.materialButton_outimage.Type = MaterialSkin.Controls.MaterialButton.MaterialButtonType.Contained;
@ -211,11 +209,11 @@
this.materialButton_LoadData.HighEmphasis = true;
this.materialButton_LoadData.Icon = ((System.Drawing.Image)(resources.GetObject("materialButton_LoadData.Icon")));
this.materialButton_LoadData.Location = new System.Drawing.Point(0, 0);
this.materialButton_LoadData.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.materialButton_LoadData.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5);
this.materialButton_LoadData.MouseState = MaterialSkin.MouseState.HOVER;
this.materialButton_LoadData.Name = "materialButton_LoadData";
this.materialButton_LoadData.NoAccentTextColor = System.Drawing.Color.Empty;
this.materialButton_LoadData.Size = new System.Drawing.Size(113, 55);
this.materialButton_LoadData.Size = new System.Drawing.Size(113, 69);
this.materialButton_LoadData.TabIndex = 14;
this.materialButton_LoadData.Text = "加载数据";
this.materialButton_LoadData.Type = MaterialSkin.Controls.MaterialButton.MaterialButtonType.Contained;
@ -226,7 +224,7 @@
// tableLayoutPanel1
//
this.tableLayoutPanel1.ColumnCount = 3;
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 210F));
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 280F));
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 235F));
this.tableLayoutPanel1.Controls.Add(this.tl_right_main_view, 1, 2);
@ -236,24 +234,24 @@
this.tableLayoutPanel1.Controls.Add(this.flowLayoutPanel2, 1, 1);
this.tableLayoutPanel1.Controls.Add(this.pl_right, 2, 1);
this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.tableLayoutPanel1.Location = new System.Drawing.Point(3, 24);
this.tableLayoutPanel1.Margin = new System.Windows.Forms.Padding(2);
this.tableLayoutPanel1.Location = new System.Drawing.Point(4, 30);
this.tableLayoutPanel1.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
this.tableLayoutPanel1.RowCount = 3;
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 55F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 31F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 69F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 39F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tableLayoutPanel1.Size = new System.Drawing.Size(1097, 581);
this.tableLayoutPanel1.Size = new System.Drawing.Size(1463, 726);
this.tableLayoutPanel1.TabIndex = 18;
//
// tl_right_main_view
//
this.tl_right_main_view.ColumnCount = 2;
this.tl_right_main_view.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tl_right_main_view.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 324F));
this.tl_right_main_view.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 432F));
this.tl_right_main_view.Controls.Add(this.DataProcess_panel, 0, 0);
this.tl_right_main_view.Dock = System.Windows.Forms.DockStyle.Fill;
this.tl_right_main_view.Location = new System.Drawing.Point(210, 86);
this.tl_right_main_view.Location = new System.Drawing.Point(280, 108);
this.tl_right_main_view.Margin = new System.Windows.Forms.Padding(0);
this.tl_right_main_view.Name = "tl_right_main_view";
this.tl_right_main_view.RowCount = 2;
@ -268,9 +266,10 @@
this.tl_right_main_view.SetColumnSpan(this.DataProcess_panel, 2);
this.DataProcess_panel.Dock = System.Windows.Forms.DockStyle.Fill;
this.DataProcess_panel.EdgeColor = System.Drawing.Color.FromArgb(((int)(((byte)(32)))), ((int)(((byte)(41)))), ((int)(((byte)(50)))));
this.DataProcess_panel.Location = new System.Drawing.Point(3, 3);
this.DataProcess_panel.Location = new System.Drawing.Point(4, 4);
this.DataProcess_panel.Margin = new System.Windows.Forms.Padding(4);
this.DataProcess_panel.Name = "DataProcess_panel";
this.DataProcess_panel.Padding = new System.Windows.Forms.Padding(5);
this.DataProcess_panel.Padding = new System.Windows.Forms.Padding(7, 6, 7, 6);
this.tl_right_main_view.SetRowSpan(this.DataProcess_panel, 2);
this.DataProcess_panel.Size = new System.Drawing.Size(646, 489);
this.DataProcess_panel.SmoothingType = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
@ -283,10 +282,11 @@
this.CompanyIcon_pictureBox.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
this.CompanyIcon_pictureBox.Dock = System.Windows.Forms.DockStyle.Fill;
this.CompanyIcon_pictureBox.Image = global::PBAnaly.Properties.Resources.稿_画板_1_副本2;
this.CompanyIcon_pictureBox.Location = new System.Drawing.Point(3, 3);
this.CompanyIcon_pictureBox.Location = new System.Drawing.Point(4, 4);
this.CompanyIcon_pictureBox.Margin = new System.Windows.Forms.Padding(4);
this.CompanyIcon_pictureBox.Name = "CompanyIcon_pictureBox";
this.tableLayoutPanel1.SetRowSpan(this.CompanyIcon_pictureBox, 2);
this.CompanyIcon_pictureBox.Size = new System.Drawing.Size(204, 80);
this.CompanyIcon_pictureBox.Size = new System.Drawing.Size(272, 100);
this.CompanyIcon_pictureBox.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
this.CompanyIcon_pictureBox.TabIndex = 16;
this.CompanyIcon_pictureBox.TabStop = false;
@ -297,14 +297,14 @@
this.flowLayoutPanel1.Controls.Add(this.materialButton_acidAnalyze);
this.flowLayoutPanel1.Controls.Add(this.materialButton_roiAnalyze);
this.flowLayoutPanel1.Controls.Add(this.materialButton_miniAnalyze);
this.flowLayoutPanel1.Controls.Add(this.materialButton_dotcounts);
this.flowLayoutPanel1.Controls.Add(this.mb_colonyCount);
this.flowLayoutPanel1.Controls.Add(this.materialButton_correction);
this.flowLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.flowLayoutPanel1.FlowDirection = System.Windows.Forms.FlowDirection.TopDown;
this.flowLayoutPanel1.Location = new System.Drawing.Point(2, 88);
this.flowLayoutPanel1.Margin = new System.Windows.Forms.Padding(2);
this.flowLayoutPanel1.Location = new System.Drawing.Point(3, 110);
this.flowLayoutPanel1.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.flowLayoutPanel1.Name = "flowLayoutPanel1";
this.flowLayoutPanel1.Size = new System.Drawing.Size(206, 491);
this.flowLayoutPanel1.Size = new System.Drawing.Size(274, 614);
this.flowLayoutPanel1.TabIndex = 18;
//
// materialButton_imageProcess
@ -317,12 +317,12 @@
this.materialButton_imageProcess.Font = new System.Drawing.Font("宋体", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.materialButton_imageProcess.HighEmphasis = true;
this.materialButton_imageProcess.Icon = ((System.Drawing.Image)(resources.GetObject("materialButton_imageProcess.Icon")));
this.materialButton_imageProcess.Location = new System.Drawing.Point(4, 6);
this.materialButton_imageProcess.Margin = new System.Windows.Forms.Padding(4, 6, 4, 6);
this.materialButton_imageProcess.Location = new System.Drawing.Point(5, 8);
this.materialButton_imageProcess.Margin = new System.Windows.Forms.Padding(5, 8, 5, 8);
this.materialButton_imageProcess.MouseState = MaterialSkin.MouseState.HOVER;
this.materialButton_imageProcess.Name = "materialButton_imageProcess";
this.materialButton_imageProcess.NoAccentTextColor = System.Drawing.Color.Empty;
this.materialButton_imageProcess.Size = new System.Drawing.Size(200, 48);
this.materialButton_imageProcess.Size = new System.Drawing.Size(267, 60);
this.materialButton_imageProcess.TabIndex = 4;
this.materialButton_imageProcess.Text = "图像处理";
this.materialButton_imageProcess.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
@ -339,12 +339,12 @@
this.materialButton_acidAnalyze.Depth = 0;
this.materialButton_acidAnalyze.HighEmphasis = true;
this.materialButton_acidAnalyze.Icon = ((System.Drawing.Image)(resources.GetObject("materialButton_acidAnalyze.Icon")));
this.materialButton_acidAnalyze.Location = new System.Drawing.Point(4, 66);
this.materialButton_acidAnalyze.Margin = new System.Windows.Forms.Padding(4, 6, 4, 6);
this.materialButton_acidAnalyze.Location = new System.Drawing.Point(5, 84);
this.materialButton_acidAnalyze.Margin = new System.Windows.Forms.Padding(5, 8, 5, 8);
this.materialButton_acidAnalyze.MouseState = MaterialSkin.MouseState.HOVER;
this.materialButton_acidAnalyze.Name = "materialButton_acidAnalyze";
this.materialButton_acidAnalyze.NoAccentTextColor = System.Drawing.Color.Empty;
this.materialButton_acidAnalyze.Size = new System.Drawing.Size(200, 48);
this.materialButton_acidAnalyze.Size = new System.Drawing.Size(267, 60);
this.materialButton_acidAnalyze.TabIndex = 5;
this.materialButton_acidAnalyze.Text = "泳道分析";
this.materialButton_acidAnalyze.Type = MaterialSkin.Controls.MaterialButton.MaterialButtonType.Contained;
@ -360,12 +360,12 @@
this.materialButton_roiAnalyze.Depth = 0;
this.materialButton_roiAnalyze.HighEmphasis = true;
this.materialButton_roiAnalyze.Icon = ((System.Drawing.Image)(resources.GetObject("materialButton_roiAnalyze.Icon")));
this.materialButton_roiAnalyze.Location = new System.Drawing.Point(4, 126);
this.materialButton_roiAnalyze.Margin = new System.Windows.Forms.Padding(4, 6, 4, 6);
this.materialButton_roiAnalyze.Location = new System.Drawing.Point(5, 160);
this.materialButton_roiAnalyze.Margin = new System.Windows.Forms.Padding(5, 8, 5, 8);
this.materialButton_roiAnalyze.MouseState = MaterialSkin.MouseState.HOVER;
this.materialButton_roiAnalyze.Name = "materialButton_roiAnalyze";
this.materialButton_roiAnalyze.NoAccentTextColor = System.Drawing.Color.Empty;
this.materialButton_roiAnalyze.Size = new System.Drawing.Size(200, 48);
this.materialButton_roiAnalyze.Size = new System.Drawing.Size(267, 60);
this.materialButton_roiAnalyze.TabIndex = 6;
this.materialButton_roiAnalyze.Text = "ROIs分析";
this.materialButton_roiAnalyze.Type = MaterialSkin.Controls.MaterialButton.MaterialButtonType.Contained;
@ -380,37 +380,38 @@
this.materialButton_miniAnalyze.Depth = 0;
this.materialButton_miniAnalyze.HighEmphasis = true;
this.materialButton_miniAnalyze.Icon = ((System.Drawing.Image)(resources.GetObject("materialButton_miniAnalyze.Icon")));
this.materialButton_miniAnalyze.Location = new System.Drawing.Point(4, 186);
this.materialButton_miniAnalyze.Margin = new System.Windows.Forms.Padding(4, 6, 4, 6);
this.materialButton_miniAnalyze.Location = new System.Drawing.Point(5, 236);
this.materialButton_miniAnalyze.Margin = new System.Windows.Forms.Padding(5, 8, 5, 8);
this.materialButton_miniAnalyze.MouseState = MaterialSkin.MouseState.HOVER;
this.materialButton_miniAnalyze.Name = "materialButton_miniAnalyze";
this.materialButton_miniAnalyze.NoAccentTextColor = System.Drawing.Color.Empty;
this.materialButton_miniAnalyze.Size = new System.Drawing.Size(200, 48);
this.materialButton_miniAnalyze.Size = new System.Drawing.Size(267, 60);
this.materialButton_miniAnalyze.TabIndex = 7;
this.materialButton_miniAnalyze.Text = "微孔版分析";
this.materialButton_miniAnalyze.Type = MaterialSkin.Controls.MaterialButton.MaterialButtonType.Contained;
this.materialButton_miniAnalyze.UseAccentColor = false;
this.materialButton_miniAnalyze.UseVisualStyleBackColor = true;
//
// materialButton_dotcounts
// mb_colonyCount
//
this.materialButton_dotcounts.AutoSize = false;
this.materialButton_dotcounts.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
this.materialButton_dotcounts.Density = MaterialSkin.Controls.MaterialButton.MaterialButtonDensity.Default;
this.materialButton_dotcounts.Depth = 0;
this.materialButton_dotcounts.HighEmphasis = true;
this.materialButton_dotcounts.Icon = ((System.Drawing.Image)(resources.GetObject("materialButton_dotcounts.Icon")));
this.materialButton_dotcounts.Location = new System.Drawing.Point(4, 246);
this.materialButton_dotcounts.Margin = new System.Windows.Forms.Padding(4, 6, 4, 6);
this.materialButton_dotcounts.MouseState = MaterialSkin.MouseState.HOVER;
this.materialButton_dotcounts.Name = "materialButton_dotcounts";
this.materialButton_dotcounts.NoAccentTextColor = System.Drawing.Color.Empty;
this.materialButton_dotcounts.Size = new System.Drawing.Size(200, 48);
this.materialButton_dotcounts.TabIndex = 8;
this.materialButton_dotcounts.Text = "菌落计数";
this.materialButton_dotcounts.Type = MaterialSkin.Controls.MaterialButton.MaterialButtonType.Contained;
this.materialButton_dotcounts.UseAccentColor = false;
this.materialButton_dotcounts.UseVisualStyleBackColor = true;
this.mb_colonyCount.AutoSize = false;
this.mb_colonyCount.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
this.mb_colonyCount.Density = MaterialSkin.Controls.MaterialButton.MaterialButtonDensity.Default;
this.mb_colonyCount.Depth = 0;
this.mb_colonyCount.HighEmphasis = true;
this.mb_colonyCount.Icon = ((System.Drawing.Image)(resources.GetObject("mb_colonyCount.Icon")));
this.mb_colonyCount.Location = new System.Drawing.Point(5, 312);
this.mb_colonyCount.Margin = new System.Windows.Forms.Padding(5, 8, 5, 8);
this.mb_colonyCount.MouseState = MaterialSkin.MouseState.HOVER;
this.mb_colonyCount.Name = "mb_colonyCount";
this.mb_colonyCount.NoAccentTextColor = System.Drawing.Color.Empty;
this.mb_colonyCount.Size = new System.Drawing.Size(267, 60);
this.mb_colonyCount.TabIndex = 8;
this.mb_colonyCount.Text = "菌落计数";
this.mb_colonyCount.Type = MaterialSkin.Controls.MaterialButton.MaterialButtonType.Contained;
this.mb_colonyCount.UseAccentColor = false;
this.mb_colonyCount.UseVisualStyleBackColor = true;
this.mb_colonyCount.Click += new System.EventHandler(this.mb_colonyCount_Click);
//
// materialButton_correction
//
@ -420,12 +421,12 @@
this.materialButton_correction.Depth = 0;
this.materialButton_correction.HighEmphasis = true;
this.materialButton_correction.Icon = ((System.Drawing.Image)(resources.GetObject("materialButton_correction.Icon")));
this.materialButton_correction.Location = new System.Drawing.Point(4, 306);
this.materialButton_correction.Margin = new System.Windows.Forms.Padding(4, 6, 4, 6);
this.materialButton_correction.Location = new System.Drawing.Point(5, 388);
this.materialButton_correction.Margin = new System.Windows.Forms.Padding(5, 8, 5, 8);
this.materialButton_correction.MouseState = MaterialSkin.MouseState.HOVER;
this.materialButton_correction.Name = "materialButton_correction";
this.materialButton_correction.NoAccentTextColor = System.Drawing.Color.Empty;
this.materialButton_correction.Size = new System.Drawing.Size(200, 48);
this.materialButton_correction.Size = new System.Drawing.Size(267, 60);
this.materialButton_correction.TabIndex = 9;
this.materialButton_correction.Text = "蛋白归一化";
this.materialButton_correction.Type = MaterialSkin.Controls.MaterialButton.MaterialButtonType.Contained;
@ -442,10 +443,8 @@
this.flowLayoutPanel2.Controls.Add(this.materialButton_resetImage);
this.flowLayoutPanel2.Controls.Add(this.materialButton_inverse);
this.flowLayoutPanel2.Controls.Add(this.materialButton_save);
this.flowLayoutPanel2.Controls.Add(this.materialButton_forward);
this.flowLayoutPanel2.Controls.Add(this.materialButton_return);
this.flowLayoutPanel2.Dock = System.Windows.Forms.DockStyle.Fill;
this.flowLayoutPanel2.Location = new System.Drawing.Point(210, 55);
this.flowLayoutPanel2.Location = new System.Drawing.Point(280, 69);
this.flowLayoutPanel2.Margin = new System.Windows.Forms.Padding(0);
this.flowLayoutPanel2.Name = "flowLayoutPanel2";
this.flowLayoutPanel2.Size = new System.Drawing.Size(652, 31);
@ -623,7 +622,7 @@
this.materialButton_return.Depth = 0;
this.materialButton_return.HighEmphasis = true;
this.materialButton_return.Icon = ((System.Drawing.Image)(resources.GetObject("materialButton_return.Icon")));
this.materialButton_return.Location = new System.Drawing.Point(512, 0);
this.materialButton_return.Location = new System.Drawing.Point(0, 36);
this.materialButton_return.Margin = new System.Windows.Forms.Padding(0);
this.materialButton_return.MouseState = MaterialSkin.MouseState.HOVER;
this.materialButton_return.Name = "materialButton_return";
@ -644,7 +643,7 @@
this.pl_right.Location = new System.Drawing.Point(864, 57);
this.pl_right.Margin = new System.Windows.Forms.Padding(2);
this.pl_right.Name = "pl_right";
this.pl_right.Padding = new System.Windows.Forms.Padding(4);
this.pl_right.Padding = new System.Windows.Forms.Padding(5);
this.tableLayoutPanel1.SetRowSpan(this.pl_right, 2);
this.pl_right.Size = new System.Drawing.Size(231, 522);
this.pl_right.SmoothingType = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
@ -655,26 +654,28 @@
//
this.thunderLabel1.BackColor = System.Drawing.Color.Transparent;
this.thunderLabel1.ForeColor = System.Drawing.Color.WhiteSmoke;
this.thunderLabel1.Location = new System.Drawing.Point(9, 5);
this.thunderLabel1.Location = new System.Drawing.Point(12, 6);
this.thunderLabel1.Margin = new System.Windows.Forms.Padding(4);
this.thunderLabel1.Name = "thunderLabel1";
this.thunderLabel1.Size = new System.Drawing.Size(200, 16);
this.thunderLabel1.Size = new System.Drawing.Size(267, 20);
this.thunderLabel1.TabIndex = 19;
this.thunderLabel1.Text = "PBAnaly v0.1.8";
//
// MainForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 15F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
this.AutoValidate = System.Windows.Forms.AutoValidate.EnablePreventFocusChange;
this.ClientSize = new System.Drawing.Size(1103, 608);
this.ClientSize = new System.Drawing.Size(1471, 760);
this.Controls.Add(this.thunderLabel1);
this.Controls.Add(this.tableLayoutPanel1);
this.DrawerAutoShow = true;
this.FormStyle = MaterialSkin.Controls.MaterialForm.FormStyles.ActionBar_None;
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Margin = new System.Windows.Forms.Padding(4);
this.Name = "MainForm";
this.Padding = new System.Windows.Forms.Padding(3, 24, 3, 3);
this.Padding = new System.Windows.Forms.Padding(4, 30, 4, 4);
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "MainForm";
this.WindowState = System.Windows.Forms.FormWindowState.Maximized;
@ -702,8 +703,6 @@
private MaterialSkin.Controls.MaterialButton materialButton_analyzedata;
private MaterialSkin.Controls.MaterialButton materialButton_outimage;
private MaterialSkin.Controls.MaterialButton materialButton_changeFormSize;
private MaterialSkin.Controls.MaterialButton materialButton_forward;
private MaterialSkin.Controls.MaterialButton materialButton_return;
private MaterialSkin.Controls.MaterialButton materialButton_save;
private MaterialSkin.Controls.MaterialButton materialButton_inverse;
private MaterialSkin.Controls.MaterialButton materialButton_resetImage;
@ -712,7 +711,7 @@
private MaterialSkin.Controls.MaterialButton materialButton_imageChange;
private MaterialSkin.Controls.MaterialButton materialButton_miniAnalyze;
private MaterialSkin.Controls.MaterialButton materialButton_roiAnalyze;
private MaterialSkin.Controls.MaterialButton materialButton_dotcounts;
private MaterialSkin.Controls.MaterialButton mb_colonyCount;
private MaterialSkin.Controls.MaterialButton materialButton_acidAnalyze;
private MaterialSkin.Controls.MaterialButton materialButton_correction;
private MaterialSkin.Controls.MaterialButton materialButton_imageProcess;

View File

@ -45,6 +45,7 @@ namespace PBAnaly
private Dictionary<string ,BioanalysisMannage> bioanalysisMannages = new Dictionary<string, BioanalysisMannage>();
private Dictionary<string, LanesMannage> lanesMannages = new Dictionary<string, LanesMannage>();
private Dictionary<string, ColonyMannage> colonysMannages = new Dictionary<string, ColonyMannage>();
private List<string> bioanalyName = new List<string>();
private List<string> lanesName = new List<string>();
bool isRun = false;
@ -457,7 +458,7 @@ namespace PBAnaly
private void materialButton_changeFormSize_MouseMove(object sender, MouseEventArgs e)
{
if (sender is Button)
if (sender is Button)
{
Button btn = sender as Button;
@ -837,6 +838,50 @@ namespace PBAnaly
}
}
private void mb_colonyCount_Click(object sender, EventArgs e)
{
string selectedFilePath = "";
// 弹出选择图像的框
#region
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.Filter = "TIF Files (*.tif)|*.tif|All files (*.*)|*.*"; // 设置文件筛选器
openFileDialog.Title = "Select a TIF File"; // 设置对话框标题
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
selectedFilePath = openFileDialog.FileName;
}
#endregion
if (selectedFilePath != "")
{
if (colonysMannages.TryGetValue(selectedFilePath, out var value))
{
return;
}
if (colonysMannages.Count == 0)
{
colonysMannages.Clear();
}
ColonyMannage colonyMannage = new ColonyMannage(selectedFilePath, pl_right, colonysMannages);
if (colonyMannage.GetImagePanel == null)
{
colonyMannage = null;
return;
}
DataProcess_panel.Controls.Add(colonyMannage.GetImagePanel);
colonyMannage.GetImagePanel.BringToFront();
colonysMannages.Add(selectedFilePath, colonyMannage);
}
}
private void materialButton_log_Click(object sender, EventArgs e)
{
UI.LogForm logForm = new UI.LogForm(materialSkinManager);
@ -1107,7 +1152,5 @@ namespace PBAnaly
{
}
}
}

View File

@ -1628,119 +1628,453 @@
uneO5+g3AwAAAABJRU5ErkJggg==
</value>
</data>
<data name="materialButton_forward.Icon" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<data name="materialButton_imageProcess.Icon" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
/g9U/tB3US9YHgAAAABJRU5ErkJggg==
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
</value>
</data>
<data name="materialButton_return.Icon" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<data name="materialButton_acidAnalyze.Icon" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
</value>
</data>
<data name="materialButton_roiAnalyze.Icon" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
</value>
</data>
<data name="materialButton_miniAnalyze.Icon" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
Y8xOY6+9fghokNfA1CcF5wAAAABJRU5ErkJggg==
</value>
</data>
<data name="mb_colonyCount.Icon" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
</value>
</data>
<data name="materialButton_correction.Icon" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
</value>
</data>
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

View File

@ -0,0 +1,154 @@
using PBAnaly.UI;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp;
using Sunny.UI;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Threading;
using System.Web.UI.WebControls;
namespace PBAnaly.Module
{
public class ColonyMannage
{
#region
#endregion
#region
public string path { get; set; }
private Image<L16> image_L16;
private byte[] image_byte;
private byte[] image_8bit_rgb_byte;
private Image<Rgb24> image_rgb_24 = null;
private LanesImagePanel imagePanel = null;
private BioanayImagePaletteForm imagePaletteForm = null;
private PBBiologyVC.PBColonyVC pbvc = new PBBiologyVC.PBColonyVC();
private Thread algThread;
private bool isalgRun = false;
private bool isUpdateAlg = false;
#endregion
public ColonyMannage(string _path, ReaLTaiizor.Controls.Panel _pl_right, Dictionary<string,ColonyMannage> colonyMannages)
{
imagePanel = new LanesImagePanel();
imagePanel.TopLevel = false;
imagePanel.Show();
imagePanel.BringToFront();
this.path = _path;
var ret = ReadTif();// 读tif档
if (ret == false)
{
imagePanel.Dispose();
imagePanel = null;
return;
}
ImageAlg();
RefreshImage();
}
#region
private void ImageAlg()
{
unsafe
{
fixed (byte* p = image_byte)
{
fixed (byte* bit8rgb = image_8bit_rgb_byte)
{
pbvc.run(p, 16, (ushort)image_L16.Width, (ushort)image_L16.Height, -1, -1, bit8rgb);
}
}
}
image_rgb_24 = util.ConvertByteArrayToRgb24Image(image_8bit_rgb_byte, image_L16.Width, image_L16.Height, 3);
RefreshImage();
}
private bool ReadTif()
{
// 读tif 或 tiff
// 如果是tiff 需要弹出选择的一帧
var extension = Path.GetExtension(path).Trim();
if (extension == ".tif")
{
image_L16 = util.LoadTiffAsL16(path);
image_byte = util.ConvertL16ImageToByteArray(image_L16);
}
if (image_L16 == null)
{
MessageBox.Show("图片加载失败");
return false;
}
image_8bit_rgb_byte = new byte[image_L16.Width * image_L16.Height * 3];
for (int i = 0; i < image_L16.Width * image_L16.Height; i++)
{
// 获取16位图像数据中的当前像素值
ushort pixel16bit = (ushort)(image_byte[i * 2] | (image_byte[i * 2 + 1] << 8));
byte gray = (byte)((pixel16bit / 65535.0) * 255);
// 将R、G、B分量存储到RGB格式的数组中
image_8bit_rgb_byte[i * 3] = gray;
image_8bit_rgb_byte[i * 3 + 1] = gray;
image_8bit_rgb_byte[i * 3 + 2] = gray;
}
image_rgb_24 = util.ConvertByteArrayToRgb24Image(image_8bit_rgb_byte, image_L16.Width, image_L16.Height, 3);
imagePanel.SetButtomLabel($"{image_L16.Width} x {image_L16.Height}");
if (path.Length > 0)
{
var t = path.Split("\\");
if (t.Length > 2)
{
imagePanel.SetButtomName($"{t[t.Length - 2]} {image_L16.Width} x {image_L16.Height}");
}
}
return true;
}
private void RefreshImage()
{
if (imagePanel.image_pl.InvokeRequired)
{
imagePanel.image_pl.Invoke(new MethodInvoker(() =>
{
RefreshImage();
}));
}
else
{
imagePanel.SetImage(image_rgb_24);
}
}
#endregion
#region
#region imagepanel
public LanesImagePanel GetImagePanel
{
get { return imagePanel; }
}
#endregion
#endregion
}
}

View File

@ -92,6 +92,12 @@ namespace PBAnaly.Module
Image<L16> image = Image.Load<L16>(filePath);
return image;
}
public static Image<L8> LoadTiffAsL8(string filePath)
{
// 加载图像并确保其为16位灰度图像
Image<L8> image = Image.Load<L8>(filePath);
return image;
}
public static byte[] ConvertL16ImageToByteArray(Image<L16> image)
{
int width = image.Width;
@ -112,6 +118,28 @@ namespace PBAnaly.Module
return pixels;
}
public static byte[] ConvertL8ImageToByteArray(Image<L8> image)
{
int width = image.Width;
int height = image.Height;
byte[] pixels = new byte[width * height * sizeof(byte)];
int index = 0;
for (int y = 0; y < height; y++)
{
for (int x = 0; x < width; x++)
{
// 直接访问每个像素的值并转换为 byte[]
byte pixelValue = image[x, y].PackedValue;
BitConverter.GetBytes(pixelValue).CopyTo(pixels, index);
index += sizeof(byte);
}
}
return pixels;
}
public static ushort[] ConvertL16ImageToUShortArray(Image<L16> image)
{
var byteArray = ConvertL16ImageToByteArray(image);

View File

@ -125,6 +125,7 @@
<DependentUpon>MainForm.cs</DependentUpon>
</Compile>
<Compile Include="Module\BioanalysisMannage.cs" />
<Compile Include="Module\ColonyMannage.cs" />
<Compile Include="Module\ImageProcess.cs" />
<Compile Include="Module\KeyboardListener.cs" />
<Compile Include="Module\LanesMannage.cs" />

View File

@ -64,11 +64,11 @@ namespace PBAnaly
}
//if (Util.ViKeySoft.Instance.CheckViKey() == false)
//{
// MessageBox.Show("你没有权限,请检查加密狗是否插入","警告");
// return;
//}
if (Util.ViKeySoft.Instance.CheckViKey() == true)
{
MessageBox.Show("你没有权限,请检查加密狗是否插入","警告");
return;
}
Util.ViKeySoft.Instance.Uninitializatio();
#if true
Application.EnableVisualStyles();

View File

@ -1,46 +1,53 @@
#include "pch.h"
//#include "PBColonyVC.h"
//#include <opencv2/opencv.hpp>
//#include<vector>
//#include "PBColony.h"
//
//
//
//namespace PBBiologyVC
//{
//
// PBColonyVC::~PBColonyVC()
// {
//
// }
//
// void PBColonyVC::run(System::Byte* mat, unsigned short width, unsigned short height)
// {
//
// /*for (size_t i = 0; i < width * height; i++)
// {
// std::cout << mat[i];
// }
// std::cout << std::endl;
//
// cv::Mat src(height, width, CV_8UC1, mat);
// Mat input_cn3;
// cv::Point2f center;
// float radius;
// int ret = pbcolony->colony_get_circle(src,center,radius);
// if (ret)
// {
// Mat mask = pbcolony->generateMaskImage(src.cols, src.rows, center.x - radius, center.y - radius, 2 * radius, 2 * radius);
// int lower = -1;
// int upper = -1;
// Mat bin = pbcolony->get_lower_upper(src, mask, lower, upper);
//
// ClassifyStandard class_stand;
// pbcolony->init_classify_standard(class_stand);
// vector<ColonyInfo> Cinfo = pbcolony->get_colony_info(src, bin, input_cn3, class_stand, pbcolony->image_inverted_flag);
// ColonyStatistic CStatistic = pbcolony->get_colony_statistics(Cinfo);
//
//
// }*/
// }
//}
#include "PBColonyVC.h"
#include <opencv2/opencv.hpp>
#include <PBColony.h>
void PBBiologyVC::PBColonyVC::run(System::Byte* image, int bit, unsigned short width, unsigned short height,int lower,int upper, System::Byte* dstRgb)
{
PBColony pbcolony;
cv::Mat input_cn1;
if (bit == 16)
{
input_cn1 = cv::Mat(height, width, CV_16UC1, image);
cv::normalize(input_cn1, input_cn1, 0, 255, cv::NORM_MINMAX); // ¹éÒ»»¯µ½ 0-255
input_cn1.convertTo(input_cn1, CV_8UC1); // ת»»Îª CV_8UC1
}
else if (bit == 8)
{
input_cn1 = cv::Mat(height, width, CV_8UC1, image);
}
else
{
return;
}
Mat input_cn3;
Point2f center;
float radius;
int ret =pbcolony.colony_get_circle(input_cn1, center, radius);
if (ret)
{
cv::Mat mask = pbcolony.generateMaskImage(input_cn1.cols, input_cn1.rows, center.x - radius, center.y - radius, 2 * radius, 2 * radius);
int lower = -1;
int upper = -1;
Mat bin = pbcolony.get_lower_upper(input_cn1, mask, lower, upper);
ClassifyStandard class_stand;
pbcolony.init_classify_standard(class_stand);
vector<ColonyInfo> Cinfo = pbcolony.get_colony_info(input_cn1, bin, input_cn3, class_stand, pbcolony.image_inverted_flag);
ColonyStatistic CStatistic = pbcolony.get_colony_statistics(Cinfo);
std::memcpy(dstRgb, input_cn3.data, input_cn3.rows * input_cn3.cols*3);
}
}
PBBiologyVC::PBColonyVC::~PBColonyVC()
{
}

View File

@ -1,20 +1,77 @@
//#pragma once
//#include "PBLane.h"
//using namespace System;
//using namespace System::Collections::Generic;
//
//namespace PBBiologyVC {
//
//
// public ref class PBColonyVC
// {
//
// ~PBColonyVC();
//
// public:
// void run(System::Byte* mat, unsigned short width, unsigned short height);
// private:
//
// };
//}
//
#pragma once
using namespace System;
using namespace System::Collections::Generic;
using namespace System::Runtime::InteropServices;
namespace PBBiologyVC{
public ref struct ColonyInfoVC
{
public:
int IDX; //菌落序号
int area; //菌落面积
int perimeter; //菌落周长
float diameter; //菌落直径
int IOD; //菌落IOD
int classify; //菌落分类
};
public enum dataClassVC
{
AREA = 0, //面积
PERIMETER, //周长
DIAMETER, //直径
IOD, //IOD
};
public ref struct ClassifyStandardVC
{
List<float>^ interval; //分类依据间隔标志数据
float maxd; //分类最大间隔标志
float mind; //分类最小间隔标志
int num; //分类间隔数
dataClassVC classes; //分类类别
};
public ref struct MinMaxInfoVC
{
float mind; //最小值
float minIDX; //最小值对应序号
float maxd; //最大值
float maxIDX; //最大值对应序号
float range; //范围
float mean; //均值
float sum; //和
int number; //数量
};
public ref struct ColonyStatisticVC
{
MinMaxInfoVC area; //面积统计结果
MinMaxInfoVC perimeter; //周长统计结果
MinMaxInfoVC diameter; //直径统计结果
MinMaxInfoVC IOD; //IOD统计结果
MinMaxInfoVC classify; //分类统计结果
};
public ref class PBColonyVC
{
~PBColonyVC();
public:
void run(System::Byte* image, int bit, unsigned short width, unsigned short height, int lower, int upper, System::Byte* dstRgb);
};
//public ref class PBColonyVC
//{
// //PBColonyVC();
// //~PBColonyVC();
//public:
// //void run(System::Byte* image, int bit, unsigned short width, unsigned short height, int lower , int upper );
//private:
// //PBColony* pbcolony;
//};
}