检测到Off状态

This commit is contained in:
zqm
2026-03-26 23:04:28 +08:00
parent d522eea509
commit 3e781179f5

View File

@@ -5,11 +5,13 @@ using Emgu.CV.CvEnum;
using Emgu.CV.Structure; using Emgu.CV.Structure;
public enum LedState { Off, On } public enum LedState { Off, On }
public enum LedColor { Unknown, Red, Green, Blue } public enum LedColor { Unknown, Red, Green, Blue }
public class LedDetector public class LedDetector
{ {
private const int BRIGHT_LIMIT = 110;
private const int SAT_LIMIT = 35;
public Tuple<LedState, LedColor> Detect(Image<Bgr, byte> image, Rectangle roi) public Tuple<LedState, LedColor> Detect(Image<Bgr, byte> image, Rectangle roi)
{ {
using (Image<Bgr, byte> subImg = image.GetSubRect(roi)) using (Image<Bgr, byte> subImg = image.GetSubRect(roi))
@@ -27,9 +29,12 @@ public class LedDetector
S.Dispose(); S.Dispose();
V.Dispose(); V.Dispose();
bool isOff = (avgS < 38) || (avgV < 55); bool isOn = avgV > BRIGHT_LIMIT && avgS < SAT_LIMIT;
if (isOff)
if (!isOn)
{
return new Tuple<LedState, LedColor>(LedState.Off, LedColor.Unknown); return new Tuple<LedState, LedColor>(LedState.Off, LedColor.Unknown);
}
LedColor color = LedColor.Unknown; LedColor color = LedColor.Unknown;
if ((avgH >= 0 && avgH <= 10) || (avgH >= 170 && avgH <= 180)) if ((avgH >= 0 && avgH <= 10) || (avgH >= 170 && avgH <= 180))