检测到Off状态
This commit is contained in:
@@ -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))
|
||||||
|
|||||||
Reference in New Issue
Block a user