Сначала необходимо найти глаза! Стандартный путь состоял бы в том, чтобы выполнить граничный детектор, и затем Hough преобразовывает для нахождения двух кругов того же размера, но могли бы быть более легкие алгоритмы для того, чтобы просто найти кластеры красных пикселей.
Тогда необходимо решить, что заменить их, предположив, что существует достаточно зеленых/синих данных в изображении, Вы могли просто проигнорировать красный канал.
OpenCV является очень хорошей свободной библиотекой для обработки изображений, это могло бы быть излишество для того, что Вы хотите - но имеет много примеров и очень активного сообщества. Вы могли также искать алгоритмы отслеживания объекта, отслеживание цветного объекта в сцене очень similair и типичная проблема.
Для проверки времени суток используйте:
TimeSpan start = new TimeSpan(10, 0, 0); //10 o'clock
TimeSpan end = new TimeSpan(12, 0, 0); //12 o'clock
TimeSpan now = DateTime.Now.TimeOfDay;
if ((now > start) && (now < end))
{
//match found
}
Для абсолютного времени используйте:
DateTime start = new DateTime(2009, 12, 9, 10, 0, 0)); //10 o'clock
DateTime end = new DateTime(2009, 12, 10, 12, 0, 0)); //12 o'clock
DateTime now = DateTime.Now;
if ((now > start) && (now < end))
{
//match found
}
Свойство TimeOfDay
возвращает значение TimeSpan
.
Попробуйте следующий код:
TimeSpan time = DateTime.Now.TimeOfDay;
if (time > new TimeSpan(11, 59, 00) //Hours, Minutes, Seconds
&& time < new TimeSpan(13, 01, 00)) {
//match found
}
Кроме того, новый DateTime ()
совпадает с DateTime.MinValue
и всегда будет равняться 1/1/0001 12:00:00 AM
. (Типы значений не могут иметь непустые значения по умолчанию) Вы хотите использовать DateTime.Now
.
if (new TimeSpan(11,59,0) <= currentTime.TimeOfDay && new TimeSpan(13,01,0) >= currentTime.TimeOfDay)
{
//match found
}
если вы действительно хотите преобразовать строку в TimeSpan, вы можете использовать:
TimeSpan start = TimeSpan.Parse("11:59");
TimeSpan end = TimeSpan.Parse("13:01");
Вы очень близки, проблема в том, что вы сравниваете DateTime с TimeOfDay. Что вам нужно сделать, так это добавить свойство .TimeOfDay в конец ваших функций Convert.ToDateTime ().
Try using the TimeRange object in C# to complete your goal.
TimeRange timeRange = new TimeRange();
timeRange = TimeRange.Parse("13:00-14:00");
bool IsNowInTheRange = timeRange.IsIn(DateTime.Now.TimeOfDay);
Console.Write(IsNowInTheRange);