Доброго времени суток!
Исходные данные :
1 область поиска
2 А,В и С искомые координаты прямоугольника который в определенный отрезок времени меняет свое местоположение в области поиска , внутренняя часть прямоугольника постепенно заполняется серым цветом.
3 Случайно возникающие ошибочные пиксели такого же цвета как и искомая координата А
Задача:
Сделать функцию которая:
1 за определенное время находит точку А , ее можно считать верной, если исходя из полученных координат А существует точка В с таким же цветом , координаты которой известны относительно координат точки А
2 Если точка А - верна, проверяем цвет точки С координаты которой тоже известны относительно А
3 точка С верна если ее цвет серый (прямоугольник заполнился серым цветом , функция отработала успешно)
В простом виде когда точка А единственная этого цвета примерно так:
Прошу помощи в решении задачи, когда как на картинке еще много точек с таким цветом , также надо привязать к функции подобный цикл
который будет управлять поиском, выдавая результат что точка С верна или не верна.
Добавлено:
разобрался ;D
Исходные данные :
1 область поиска
2 А,В и С искомые координаты прямоугольника который в определенный отрезок времени меняет свое местоположение в области поиска , внутренняя часть прямоугольника постепенно заполняется серым цветом.
3 Случайно возникающие ошибочные пиксели такого же цвета как и искомая координата А
Задача:
Сделать функцию которая:
1 за определенное время находит точку А , ее можно считать верной, если исходя из полученных координат А существует точка В с таким же цветом , координаты которой известны относительно координат точки А
2 Если точка А - верна, проверяем цвет точки С координаты которой тоже известны относительно А
3 точка С верна если ее цвет серый (прямоугольник заполнился серым цветом , функция отработала успешно)
В простом виде когда точка А единственная этого цвета примерно так:
Код:
Func Done()
Local $Aс=0xD3D4D5 ; Искомый цвет пикселя точки А
Local $x1=440 ; границы области поиска
Local $x2=514
Local $y1=385
Local $y2=470
Local $sh=3 ; вириация цвета
Local $time=1000; 1 секунда - время проверки
Local $Bx=72 ; координаты точки В относительно полученных координат А
Local $By=0
Local $Cс=0x4A4C4E ; Искомый цвет пикселя точки C
Local $Gx=71 ; координаты точки С относительно полученных координат А
Local $Gy=1
Local $a=PixelSearch( $x1, $y1, $x2, $y2, $Aс, $sh )
If @error=0 Then
ProgressOn("","","Точка А найдена",1024,0,1)
local $b=PixelSearch( $a[0]+$Bx, $a[1], $a[0]+$Bx, $a[1], $Aс, $sh )
If @error=0 Then
ProgressOn("","","Точка В найдена",1024,0,1)
local $c=PixelSearch( $a[0]+$Gx, $a[1]+$Gy, $a[0]+$Gx, $a[1]+$Gy, $Cс, $sh )
If @error=0 Then
ProgressOn("","","Квадрат заполнен серым цветом",1024,0,1)
ElseIf @error=1 Then
EndIf
ElseIf @error=1 Then
EndIf
ElseIf @error=1 Then
EndIf
EndFunc
Прошу помощи в решении задачи, когда как на картинке еще много точек с таким цветом , также надо привязать к функции подобный цикл
Код:
Func pointC()
Local $t = TimerInit()
Do
PixelSearch( $a[0]+$Gx, $a[1]+$Gy, $a[0]+$Gx, $a[1]+$Gy, $Cс, $sh )
If Not @error Then Return True
If TimerDiff($t) >= $time Then Return False
Until 0
EndFunc
If pointC() Then
ProgressOn("","","Квадрат заполнен серым цветом",1024,0,1)
Else
EndIf
Добавлено:
Сообщение автоматически объединено:
разобрался ;D