增加判断亮灭
This commit is contained in:
@@ -23,7 +23,7 @@ namespace Camera
|
|||||||
private const string PASSWD = "Yexian.net.168";
|
private const string PASSWD = "Yexian.net.168";
|
||||||
|
|
||||||
// 调试模式
|
// 调试模式
|
||||||
private const Boolean IsDebug = false;
|
private const Boolean IsDebug = true;
|
||||||
|
|
||||||
// 配置文件目录
|
// 配置文件目录
|
||||||
private string _configPath;
|
private string _configPath;
|
||||||
@@ -34,6 +34,22 @@ namespace Camera
|
|||||||
private ConcurrentDictionary<int, Color> _ledZoneColors = new ConcurrentDictionary<int, Color>();
|
private ConcurrentDictionary<int, Color> _ledZoneColors = new ConcurrentDictionary<int, Color>();
|
||||||
private ConcurrentDictionary<int, string> _ledZoneDetectionResults = new ConcurrentDictionary<int, string>();
|
private ConcurrentDictionary<int, string> _ledZoneDetectionResults = new ConcurrentDictionary<int, string>();
|
||||||
private LedDetector _ledDetector = new LedDetector();
|
private LedDetector _ledDetector = new LedDetector();
|
||||||
|
|
||||||
|
public void SetLedDetectorParams(int brightLimit, int satLimit)
|
||||||
|
{
|
||||||
|
_ledDetector.BrightLimit = brightLimit;
|
||||||
|
_ledDetector.SatLimit = satLimit;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int GetBrightLimit()
|
||||||
|
{
|
||||||
|
return _ledDetector.BrightLimit;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int GetSatLimit()
|
||||||
|
{
|
||||||
|
return _ledDetector.SatLimit;
|
||||||
|
}
|
||||||
private Color _detectionZoneColor = Color.Black;
|
private Color _detectionZoneColor = Color.Black;
|
||||||
|
|
||||||
// 检测状态
|
// 检测状态
|
||||||
@@ -53,23 +69,13 @@ namespace Camera
|
|||||||
public event EventHandler<ImageEventArgs> ImageCaptured;
|
public event EventHandler<ImageEventArgs> ImageCaptured;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 根据区域编号获取颜色
|
/// 根据区域编号获取检测结果
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="AreaNum">区域编号</param>
|
/// <param name="AreaNum">区域编号</param>
|
||||||
/// <returns>对应区域的颜色</returns>
|
/// <returns>检测结果字符串</returns>
|
||||||
public Color GetColor(int AreaNum)
|
public string GetColor(int AreaNum)
|
||||||
{
|
{
|
||||||
switch (AreaNum)
|
return GetLedZoneDetectionResult(AreaNum);
|
||||||
{
|
|
||||||
case 1:
|
|
||||||
return Color.Red;
|
|
||||||
case 2:
|
|
||||||
return Color.Green;
|
|
||||||
case 3:
|
|
||||||
return Color.Blue;
|
|
||||||
default:
|
|
||||||
return Color.Gray;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -460,6 +466,9 @@ namespace Camera
|
|||||||
string colorStr = ColorTranslator.ToHtml(ledColor);
|
string colorStr = ColorTranslator.ToHtml(ledColor);
|
||||||
writer.WriteLine(string.Format("{0},{1},{2},{3},{4},{5}", index, ledZone.X, ledZone.Y, ledZone.Width, ledZone.Height, colorStr));
|
writer.WriteLine(string.Format("{0},{1},{2},{3},{4},{5}", index, ledZone.X, ledZone.Y, ledZone.Width, ledZone.Height, colorStr));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
writer.WriteLine();
|
||||||
|
writer.WriteLine(string.Format("亮灭阈值,{0},{1}", _ledDetector.BrightLimit, _ledDetector.SatLimit));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch { }
|
catch { }
|
||||||
@@ -486,6 +495,7 @@ namespace Camera
|
|||||||
{
|
{
|
||||||
string line;
|
string line;
|
||||||
bool isDetectionZone = true;
|
bool isDetectionZone = true;
|
||||||
|
bool isReadingLedThresholds = false;
|
||||||
while ((line = reader.ReadLine()) != null)
|
while ((line = reader.ReadLine()) != null)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrWhiteSpace(line))
|
if (string.IsNullOrWhiteSpace(line))
|
||||||
@@ -495,6 +505,15 @@ namespace Camera
|
|||||||
}
|
}
|
||||||
|
|
||||||
string[] parts = line.Split(',');
|
string[] parts = line.Split(',');
|
||||||
|
if (parts.Length >= 2 && parts[0] == "亮灭阈值")
|
||||||
|
{
|
||||||
|
if (int.TryParse(parts[1], out int brightLimit))
|
||||||
|
_ledDetector.BrightLimit = brightLimit;
|
||||||
|
if (parts.Length >= 3 && int.TryParse(parts[2], out int satLimit))
|
||||||
|
_ledDetector.SatLimit = satLimit;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if (parts.Length >= 4)
|
if (parts.Length >= 4)
|
||||||
{
|
{
|
||||||
if (isDetectionZone)
|
if (isDetectionZone)
|
||||||
|
|||||||
@@ -9,8 +9,20 @@ public enum LedColor { Unknown, Red, Green, Blue }
|
|||||||
|
|
||||||
public class LedDetector
|
public class LedDetector
|
||||||
{
|
{
|
||||||
private const int BRIGHT_LIMIT = 110;
|
private int _brightLimit = 110;
|
||||||
private const int SAT_LIMIT = 35;
|
private int _satLimit = 35;
|
||||||
|
|
||||||
|
public int BrightLimit
|
||||||
|
{
|
||||||
|
get { return _brightLimit; }
|
||||||
|
set { _brightLimit = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public int SatLimit
|
||||||
|
{
|
||||||
|
get { return _satLimit; }
|
||||||
|
set { _satLimit = value; }
|
||||||
|
}
|
||||||
|
|
||||||
public Tuple<LedState, LedColor> Detect(Image<Bgr, byte> image, Rectangle roi)
|
public Tuple<LedState, LedColor> Detect(Image<Bgr, byte> image, Rectangle roi)
|
||||||
{
|
{
|
||||||
@@ -29,7 +41,8 @@ public class LedDetector
|
|||||||
S.Dispose();
|
S.Dispose();
|
||||||
V.Dispose();
|
V.Dispose();
|
||||||
|
|
||||||
bool isOn = avgV > BRIGHT_LIMIT && avgS < SAT_LIMIT;
|
//bool isOn = avgV > _brightLimit;
|
||||||
|
bool isOn = avgV > _brightLimit && avgS > _satLimit;
|
||||||
|
|
||||||
if (!isOn)
|
if (!isOn)
|
||||||
{
|
{
|
||||||
@@ -37,11 +50,11 @@ public class LedDetector
|
|||||||
}
|
}
|
||||||
|
|
||||||
LedColor color = LedColor.Unknown;
|
LedColor color = LedColor.Unknown;
|
||||||
if ((avgH >= 0 && avgH <= 10) || (avgH >= 170 && avgH <= 180))
|
if ((avgH >= 60 && avgH < 75))
|
||||||
color = LedColor.Red;
|
color = LedColor.Red;
|
||||||
else if (avgH >= 35 && avgH <= 75)
|
else if (avgH >= 30 && avgH < 60)
|
||||||
color = LedColor.Green;
|
color = LedColor.Green;
|
||||||
else if (avgH >= 90 && avgH <= 130)
|
else if (avgH >= 90 && avgH < 130)
|
||||||
color = LedColor.Blue;
|
color = LedColor.Blue;
|
||||||
|
|
||||||
return new Tuple<LedState, LedColor>(LedState.On, color);
|
return new Tuple<LedState, LedColor>(LedState.On, color);
|
||||||
|
|||||||
@@ -27,6 +27,11 @@ namespace Camera
|
|||||||
this.toolStripButton4 = new System.Windows.Forms.ToolStripButton();
|
this.toolStripButton4 = new System.Windows.Forms.ToolStripButton();
|
||||||
this.toolStripTextBox1 = new System.Windows.Forms.ToolStripTextBox();
|
this.toolStripTextBox1 = new System.Windows.Forms.ToolStripTextBox();
|
||||||
this.toolStrip2 = new System.Windows.Forms.ToolStrip();
|
this.toolStrip2 = new System.Windows.Forms.ToolStrip();
|
||||||
|
this.toolStrip3 = new System.Windows.Forms.ToolStrip();
|
||||||
|
this.toolStripLabel5 = new System.Windows.Forms.ToolStripLabel();
|
||||||
|
this.toolStripNumericUpDown5 = new ToolStripNumericUpDown();
|
||||||
|
this.toolStripLabel6 = new System.Windows.Forms.ToolStripLabel();
|
||||||
|
this.toolStripNumericUpDown6 = new ToolStripNumericUpDown();
|
||||||
this.toolStripLabel1 = new System.Windows.Forms.ToolStripLabel();
|
this.toolStripLabel1 = new System.Windows.Forms.ToolStripLabel();
|
||||||
this.toolStripNumericUpDown1 = new ToolStripNumericUpDown();
|
this.toolStripNumericUpDown1 = new ToolStripNumericUpDown();
|
||||||
this.toolStripLabel2 = new System.Windows.Forms.ToolStripLabel();
|
this.toolStripLabel2 = new System.Windows.Forms.ToolStripLabel();
|
||||||
@@ -43,6 +48,7 @@ namespace Camera
|
|||||||
((System.ComponentModel.ISupportInitialize)(this.picBoxCamera)).BeginInit();
|
((System.ComponentModel.ISupportInitialize)(this.picBoxCamera)).BeginInit();
|
||||||
this.toolStrip1.SuspendLayout();
|
this.toolStrip1.SuspendLayout();
|
||||||
this.toolStrip2.SuspendLayout();
|
this.toolStrip2.SuspendLayout();
|
||||||
|
this.toolStrip3.SuspendLayout();
|
||||||
this.toolStripContainer1.SuspendLayout();
|
this.toolStripContainer1.SuspendLayout();
|
||||||
((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit();
|
((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit();
|
||||||
this.SuspendLayout();
|
this.SuspendLayout();
|
||||||
@@ -93,6 +99,7 @@ namespace Camera
|
|||||||
this.toolStripContainer1.TopToolStripPanel.Padding = new System.Windows.Forms.Padding(0);
|
this.toolStripContainer1.TopToolStripPanel.Padding = new System.Windows.Forms.Padding(0);
|
||||||
this.toolStripContainer1.TopToolStripPanel.Controls.Add(this.toolStrip1);
|
this.toolStripContainer1.TopToolStripPanel.Controls.Add(this.toolStrip1);
|
||||||
this.toolStripContainer1.TopToolStripPanel.Controls.Add(this.toolStrip2);
|
this.toolStripContainer1.TopToolStripPanel.Controls.Add(this.toolStrip2);
|
||||||
|
this.toolStripContainer1.TopToolStripPanel.Controls.Add(this.toolStrip3);
|
||||||
//
|
//
|
||||||
// toolStripContainer1.ContentPanel
|
// toolStripContainer1.ContentPanel
|
||||||
//
|
//
|
||||||
@@ -181,6 +188,89 @@ namespace Camera
|
|||||||
this.toolStrip2.Size = new System.Drawing.Size(559, 30);
|
this.toolStrip2.Size = new System.Drawing.Size(559, 30);
|
||||||
this.toolStrip2.TabIndex = 1;
|
this.toolStrip2.TabIndex = 1;
|
||||||
//
|
//
|
||||||
|
// toolStrip3
|
||||||
|
//
|
||||||
|
this.toolStrip3.Dock = System.Windows.Forms.DockStyle.Top;
|
||||||
|
this.toolStrip3.Location = new System.Drawing.Point(0, 55);
|
||||||
|
this.toolStrip3.ImageScalingSize = new System.Drawing.Size(32, 32);
|
||||||
|
this.toolStrip3.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||||
|
this.toolStripLabel5,
|
||||||
|
this.toolStripNumericUpDown5,
|
||||||
|
this.toolStripLabel6,
|
||||||
|
this.toolStripNumericUpDown6});
|
||||||
|
this.toolStrip3.Name = "toolStrip3";
|
||||||
|
this.toolStrip3.Size = new System.Drawing.Size(559, 30);
|
||||||
|
this.toolStrip3.TabIndex = 2;
|
||||||
|
this.toolStrip3.Visible = true;
|
||||||
|
//
|
||||||
|
// toolStripLabel5
|
||||||
|
//
|
||||||
|
this.toolStripLabel5.Name = "toolStripLabel5";
|
||||||
|
this.toolStripLabel5.Size = new System.Drawing.Size(56, 27);
|
||||||
|
this.toolStripLabel5.Text = "亮度:";
|
||||||
|
//
|
||||||
|
// toolStripNumericUpDown5
|
||||||
|
//
|
||||||
|
this.toolStripNumericUpDown5.AutoSize = false;
|
||||||
|
this.toolStripNumericUpDown5.DecimalPlaces = 0;
|
||||||
|
this.toolStripNumericUpDown5.Increment = new decimal(new int[] {
|
||||||
|
1,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0});
|
||||||
|
this.toolStripNumericUpDown5.Maximum = new decimal(new int[] {
|
||||||
|
255,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0});
|
||||||
|
this.toolStripNumericUpDown5.Minimum = new decimal(new int[] {
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0});
|
||||||
|
this.toolStripNumericUpDown5.Name = "toolStripNumericUpDown5";
|
||||||
|
this.toolStripNumericUpDown5.Size = new System.Drawing.Size(60, 27);
|
||||||
|
this.toolStripNumericUpDown5.ToolTipText = "亮度阈值";
|
||||||
|
this.toolStripNumericUpDown5.Value = new decimal(new int[] {
|
||||||
|
110,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0});
|
||||||
|
//
|
||||||
|
// toolStripLabel6
|
||||||
|
//
|
||||||
|
this.toolStripLabel6.Name = "toolStripLabel6";
|
||||||
|
this.toolStripLabel6.Size = new System.Drawing.Size(44, 27);
|
||||||
|
this.toolStripLabel6.Text = "饱和度:";
|
||||||
|
//
|
||||||
|
// toolStripNumericUpDown6
|
||||||
|
//
|
||||||
|
this.toolStripNumericUpDown6.AutoSize = false;
|
||||||
|
this.toolStripNumericUpDown6.DecimalPlaces = 0;
|
||||||
|
this.toolStripNumericUpDown6.Increment = new decimal(new int[] {
|
||||||
|
1,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0});
|
||||||
|
this.toolStripNumericUpDown6.Maximum = new decimal(new int[] {
|
||||||
|
255,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0});
|
||||||
|
this.toolStripNumericUpDown6.Minimum = new decimal(new int[] {
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0});
|
||||||
|
this.toolStripNumericUpDown6.Name = "toolStripNumericUpDown6";
|
||||||
|
this.toolStripNumericUpDown6.Size = new System.Drawing.Size(60, 27);
|
||||||
|
this.toolStripNumericUpDown6.ToolTipText = "饱和度阈值";
|
||||||
|
this.toolStripNumericUpDown6.Value = new decimal(new int[] {
|
||||||
|
35,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0});
|
||||||
|
//
|
||||||
// toolStripLabel1
|
// toolStripLabel1
|
||||||
//
|
//
|
||||||
this.toolStripLabel1.Name = "toolStripLabel1";
|
this.toolStripLabel1.Name = "toolStripLabel1";
|
||||||
@@ -320,6 +410,8 @@ namespace Camera
|
|||||||
0,
|
0,
|
||||||
0});
|
0});
|
||||||
this.toolStripNumericUpDown4.ValueChanged += new System.EventHandler(this.ToolStripNumericUpDown4_ValueChanged);
|
this.toolStripNumericUpDown4.ValueChanged += new System.EventHandler(this.ToolStripNumericUpDown4_ValueChanged);
|
||||||
|
this.toolStripNumericUpDown5.ValueChanged += new System.EventHandler(this.ToolStripNumericUpDown5_ValueChanged);
|
||||||
|
this.toolStripNumericUpDown6.ValueChanged += new System.EventHandler(this.ToolStripNumericUpDown6_ValueChanged);
|
||||||
//
|
//
|
||||||
// dataGridView1
|
// dataGridView1
|
||||||
//
|
//
|
||||||
@@ -359,6 +451,8 @@ namespace Camera
|
|||||||
this.toolStrip1.PerformLayout();
|
this.toolStrip1.PerformLayout();
|
||||||
this.toolStrip2.ResumeLayout(false);
|
this.toolStrip2.ResumeLayout(false);
|
||||||
this.toolStrip2.PerformLayout();
|
this.toolStrip2.PerformLayout();
|
||||||
|
this.toolStrip3.ResumeLayout(false);
|
||||||
|
this.toolStrip3.PerformLayout();
|
||||||
this.toolStripContainer1.ResumeLayout(false);
|
this.toolStripContainer1.ResumeLayout(false);
|
||||||
this.toolStripContainer1.PerformLayout();
|
this.toolStripContainer1.PerformLayout();
|
||||||
((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit();
|
((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit();
|
||||||
@@ -386,6 +480,11 @@ namespace Camera
|
|||||||
private ToolStripNumericUpDown toolStripNumericUpDown3;
|
private ToolStripNumericUpDown toolStripNumericUpDown3;
|
||||||
private System.Windows.Forms.ToolStripLabel toolStripLabel4;
|
private System.Windows.Forms.ToolStripLabel toolStripLabel4;
|
||||||
private ToolStripNumericUpDown toolStripNumericUpDown4;
|
private ToolStripNumericUpDown toolStripNumericUpDown4;
|
||||||
|
private System.Windows.Forms.ToolStrip toolStrip3;
|
||||||
|
private System.Windows.Forms.ToolStripLabel toolStripLabel5;
|
||||||
|
private ToolStripNumericUpDown toolStripNumericUpDown5;
|
||||||
|
private System.Windows.Forms.ToolStripLabel toolStripLabel6;
|
||||||
|
private ToolStripNumericUpDown toolStripNumericUpDown6;
|
||||||
private System.Windows.Forms.DataGridView dataGridView1;
|
private System.Windows.Forms.DataGridView dataGridView1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -30,6 +30,9 @@ namespace Camera
|
|||||||
// 设置NumericUpDown的基本属性
|
// 设置NumericUpDown的基本属性
|
||||||
_numericUpDown.Size = new Size(60, 22);
|
_numericUpDown.Size = new Size(60, 22);
|
||||||
_numericUpDown.TextAlign = HorizontalAlignment.Right;
|
_numericUpDown.TextAlign = HorizontalAlignment.Right;
|
||||||
|
|
||||||
|
// 转发ValueChanged事件
|
||||||
|
_numericUpDown.ValueChanged += (s, e) => ValueChanged?.Invoke(s, e);
|
||||||
}
|
}
|
||||||
|
|
||||||
[System.ComponentModel.Browsable(false)]
|
[System.ComponentModel.Browsable(false)]
|
||||||
@@ -205,6 +208,8 @@ namespace Camera
|
|||||||
_camera.ImageCaptured += Camera_ImageCaptured;
|
_camera.ImageCaptured += Camera_ImageCaptured;
|
||||||
_detectionZoneColor = _camera.GetDetectionZoneColor();
|
_detectionZoneColor = _camera.GetDetectionZoneColor();
|
||||||
_ledZoneColors = _camera.GetLedZoneColors();
|
_ledZoneColors = _camera.GetLedZoneColors();
|
||||||
|
toolStripNumericUpDown5.Value = _camera.GetBrightLimit();
|
||||||
|
toolStripNumericUpDown6.Value = _camera.GetSatLimit();
|
||||||
}
|
}
|
||||||
picBoxCamera.BackColor = Color.Gray;
|
picBoxCamera.BackColor = Color.Gray;
|
||||||
splitContainer1.FixedPanel = System.Windows.Forms.FixedPanel.Panel2;
|
splitContainer1.FixedPanel = System.Windows.Forms.FixedPanel.Panel2;
|
||||||
@@ -1180,14 +1185,15 @@ namespace Camera
|
|||||||
if (dataGridView1.SelectedRows.Count > 0)
|
if (dataGridView1.SelectedRows.Count > 0)
|
||||||
{
|
{
|
||||||
int newSelectedZoneIndex = Convert.ToInt32(dataGridView1.SelectedRows[0].Cells["Index"].Value);
|
int newSelectedZoneIndex = Convert.ToInt32(dataGridView1.SelectedRows[0].Cells["Index"].Value);
|
||||||
|
System.Diagnostics.Debug.WriteLine("列表选中索引: " + newSelectedZoneIndex);
|
||||||
if (newSelectedZoneIndex != _lastSelectedZoneIndex)
|
if (newSelectedZoneIndex != _lastSelectedZoneIndex)
|
||||||
{
|
{
|
||||||
_lastSelectedZoneIndex = newSelectedZoneIndex;
|
_lastSelectedZoneIndex = newSelectedZoneIndex;
|
||||||
_selectedZoneIndex = newSelectedZoneIndex;
|
_selectedZoneIndex = newSelectedZoneIndex;
|
||||||
// 更新位置和宽高值
|
|
||||||
if (_selectedZoneIndex >= 0 && _camera != null)
|
if (_selectedZoneIndex >= 0 && _camera != null)
|
||||||
{
|
{
|
||||||
Rectangle zone = _camera.GetLedZone(_selectedZoneIndex);
|
Rectangle zone = _camera.GetLedZone(_selectedZoneIndex);
|
||||||
|
System.Diagnostics.Debug.WriteLine("GetLedZone(" + _selectedZoneIndex + ") 返回: X=" + zone.X + ", Y=" + zone.Y + ", W=" + zone.Width + ", H=" + zone.Height);
|
||||||
toolStripNumericUpDown1.Value = zone.X;
|
toolStripNumericUpDown1.Value = zone.X;
|
||||||
toolStripNumericUpDown2.Value = zone.Y;
|
toolStripNumericUpDown2.Value = zone.Y;
|
||||||
toolStripNumericUpDown3.Value = zone.Width;
|
toolStripNumericUpDown3.Value = zone.Width;
|
||||||
@@ -1391,6 +1397,7 @@ namespace Camera
|
|||||||
toolStripButton4.Visible = false;
|
toolStripButton4.Visible = false;
|
||||||
toolStripTextBox1.Visible = false;
|
toolStripTextBox1.Visible = false;
|
||||||
toolStripTextBox1.Text = "";
|
toolStripTextBox1.Text = "";
|
||||||
|
toolStrip3.Visible = true;
|
||||||
// 如果有LED区域则显示位置和宽高设置框
|
// 如果有LED区域则显示位置和宽高设置框
|
||||||
if (_camera != null && _camera.GetLedZoneCount() > 0)
|
if (_camera != null && _camera.GetLedZoneCount() > 0)
|
||||||
{
|
{
|
||||||
@@ -1426,6 +1433,7 @@ namespace Camera
|
|||||||
toolStripTextBox1.Text = _currentLedIndex.ToString();
|
toolStripTextBox1.Text = _currentLedIndex.ToString();
|
||||||
// 不显示位置和宽高设置框
|
// 不显示位置和宽高设置框
|
||||||
toolStrip2.Visible = false;
|
toolStrip2.Visible = false;
|
||||||
|
toolStrip3.Visible = false;
|
||||||
break;
|
break;
|
||||||
case 2: // 绘制状态
|
case 2: // 绘制状态
|
||||||
toolStripButton2.Visible = true;
|
toolStripButton2.Visible = true;
|
||||||
@@ -1434,6 +1442,7 @@ namespace Camera
|
|||||||
toolStripTextBox1.Visible = false;
|
toolStripTextBox1.Visible = false;
|
||||||
toolStripTextBox1.Text = "";
|
toolStripTextBox1.Text = "";
|
||||||
toolStrip2.Visible = false;
|
toolStrip2.Visible = false;
|
||||||
|
toolStrip3.Visible = false;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1475,6 +1484,7 @@ namespace Camera
|
|||||||
Rectangle zone = _camera.GetLedZone(index);
|
Rectangle zone = _camera.GetLedZone(index);
|
||||||
zone.X = x;
|
zone.X = x;
|
||||||
_camera.SetLedZone(index, zone);
|
_camera.SetLedZone(index, zone);
|
||||||
|
UpdateDataGridViewRow(index, zone);
|
||||||
picBoxCamera.Invalidate();
|
picBoxCamera.Invalidate();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1500,6 +1510,7 @@ namespace Camera
|
|||||||
Rectangle zone = _camera.GetLedZone(index);
|
Rectangle zone = _camera.GetLedZone(index);
|
||||||
zone.Y = y;
|
zone.Y = y;
|
||||||
_camera.SetLedZone(index, zone);
|
_camera.SetLedZone(index, zone);
|
||||||
|
UpdateDataGridViewRow(index, zone);
|
||||||
picBoxCamera.Invalidate();
|
picBoxCamera.Invalidate();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1525,9 +1536,25 @@ namespace Camera
|
|||||||
Rectangle zone = _camera.GetLedZone(index);
|
Rectangle zone = _camera.GetLedZone(index);
|
||||||
zone.Width = width;
|
zone.Width = width;
|
||||||
_camera.SetLedZone(index, zone);
|
_camera.SetLedZone(index, zone);
|
||||||
|
UpdateDataGridViewRow(index, zone);
|
||||||
picBoxCamera.Invalidate();
|
picBoxCamera.Invalidate();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void UpdateDataGridViewRow(int index, Rectangle zone)
|
||||||
|
{
|
||||||
|
foreach (DataGridViewRow row in dataGridView1.Rows)
|
||||||
|
{
|
||||||
|
if (Convert.ToInt32(row.Cells["Index"].Value) == index)
|
||||||
|
{
|
||||||
|
row.Cells["X"].Value = zone.X;
|
||||||
|
row.Cells["Y"].Value = zone.Y;
|
||||||
|
row.Cells["Width"].Value = zone.Width;
|
||||||
|
row.Cells["Height"].Value = zone.Height;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// 高度相关事件
|
// 高度相关事件
|
||||||
private void ToolStripNumericUpDown4_ValueChanged(object sender, EventArgs e)
|
private void ToolStripNumericUpDown4_ValueChanged(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
@@ -1550,7 +1577,26 @@ namespace Camera
|
|||||||
Rectangle zone = _camera.GetLedZone(index);
|
Rectangle zone = _camera.GetLedZone(index);
|
||||||
zone.Height = height;
|
zone.Height = height;
|
||||||
_camera.SetLedZone(index, zone);
|
_camera.SetLedZone(index, zone);
|
||||||
|
UpdateDataGridViewRow(index, zone);
|
||||||
picBoxCamera.Invalidate();
|
picBoxCamera.Invalidate();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 亮度阈值事件
|
||||||
|
private void ToolStripNumericUpDown5_ValueChanged(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (_camera == null) return;
|
||||||
|
int brightLimit = (int)toolStripNumericUpDown5.Value;
|
||||||
|
int satLimit = (int)toolStripNumericUpDown6.Value;
|
||||||
|
_camera.SetLedDetectorParams(brightLimit, satLimit);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 饱和度阈值事件
|
||||||
|
private void ToolStripNumericUpDown6_ValueChanged(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (_camera == null) return;
|
||||||
|
int brightLimit = (int)toolStripNumericUpDown5.Value;
|
||||||
|
int satLimit = (int)toolStripNumericUpDown6.Value;
|
||||||
|
_camera.SetLedDetectorParams(brightLimit, satLimit);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
<Deterministic>true</Deterministic>
|
<Deterministic>true</Deterministic>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||||
<PlatformTarget>x86</PlatformTarget>
|
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||||
<DebugSymbols>true</DebugSymbols>
|
<DebugSymbols>true</DebugSymbols>
|
||||||
<DebugType>full</DebugType>
|
<DebugType>full</DebugType>
|
||||||
<Optimize>false</Optimize>
|
<Optimize>false</Optimize>
|
||||||
|
|||||||
Reference in New Issue
Block a user