Что нового

Последовательный поиск пикселей одного цвета

OXIGEN

Новичок
Сообщения
30
Репутация
0
Здравствуйте. Вот скриптик, который находит в заданной области пиксель и записывает его координаты в текстовый файл.
Но работает, только до первого найденного пикселя, как его заставить найти все (в данном случае "белые") пиксели в
заданных координатах и записать их в файл? И возможна-ли реализация пропуска нескольких пикселей ? Допустим,
в квадрате находятся девять "белых" пикселей, а записать координаты нужно только 1-го, 4-го, и 7-го. Или на PixelSearch
это не реализуется?


Код:
$coord1 = PixelSearch(333, 329, 1127, 672, 0xFFFFFF)
If Not @error Then

$hFile = FileOpen("tochka.txt", 1)

FileWrite($hFile, "координаты 1-й белой точки" & @CRLF & @CRLF)
FileWrite($hFile, $coord1[0] & @CRLF)
FileWrite($hFile, $coord1[1] & @CRLF & @CRLF)
Beep(1000,100)

Else
MsgBox(16, '', 'Координаты не найдены!!!')
Exit

EndIf


Спасибо.
 

Oki

Продвинутый
Сообщения
452
Репутация
62
Код:
$iX1  = 333
$iY1 = 329
$iX2 = 1127 ; Должно быть не меньше, чем $iX1.
$iY2 = 672 ; Должно быть не меньше, чем $iY1.
$iX = $iX1
$iY = $iY1
$iCount = 0
$iSkipConst = 2 ; Чтобы выводить 1-ю, 4-ю, 7-ю и так далее, пропуская две после каждой найденной.
Do
    If $iX = $iX1 Then
        $aiCoord = PixelSearch($iX, $iY, $iX2, $iY2, 0xFFFFFF)
    Else
        $aiCoord = PixelSearch($iX, $iY, $iX2, $iY, 0xFFFFFF)
    EndIf
    If @error Then
        If $iX = $iX1 Then
            $iY = $iY2 + 1
        Else
            $iX = $iX1
            $iY += 1
        EndIf
    Else
        $iCount += 1
        $iX = $aiCoord[0]
        $iY = $aiCoord[1]
        If $iCount = 1 Then
            $hFile = FileOpen("tochka.txt", 1)
        EndIf
        if Mod($iCount, $iSkipConst + 1) = 1 Then
            FileWrite($hFile, "координаты "& $iCount &"-й белой точки" & @CRLF & @CRLF & $iX & @CRLF & $iY& @CRLF& @CRLF)
        EndIf
        If $iX = $iX2 Then
            $iY += 1
            $iX = $iX1
        Else
            $iX += 1
        EndIf
    EndIf
Until $iY > $iY2
if $iCount = 0 Then
    MsgBox(16, "", "Координаты не найдены!!!")
Else
    FileClose($hFile)
    Beep(1000, 100)
EndIf
 
Последнее редактирование:
Автор
O

OXIGEN

Новичок
Сообщения
30
Репутация
0
Огромное СПАСИБО! Именно ТО, чо НАДО!
 
Верх