Что нового

Определение средней яркости набора пикселей

errtu42

Новичок
Сообщения
1
Репутация
0
Нужно определить среднюю яркость пикселей по контуру прямоугольника в центре экрана. Снапшоты и определение цвета пикселей через FastFind, в нем все работает как часы. Конвертер тоже работает как надо. Писал вот такой код:
Код:
Func box()
   FFSnapShot(900, 500, 1020, 580) 
   Global $b = 0

   For $i = 1 To 119
	  $var = FFGetPixel($i, 1) ;Получаем цвет пикселя
	  $var1hsb = _RGBtoHSB(colorSplit($var)[0], colorSplit($var)[1], colorSplit($var)[2]) ;Конвертируем RGB в HSB
	  $b = $b + $var1hsb[2] ; Плюсуем яркость пикселя

	  $var = FFGetPixel($i, 79)
	  $var1hsb = _RGBtoHSB(colorSplit($var)[0], colorSplit($var)[1], colorSplit($var)[2])
	  $b = $b + $var1hsb[2]
   Next

   For $i = 1 To 79
	  $var = FFGetPixel(1, $i)
	  $var1hsb = _RGBtoHSB(colorSplit($var)[0], colorSplit($var)[1], colorSplit($var)[2])
	  $b = $b + $var1hsb[2]

	  $var = FFGetPixel(119, $i)
	  $var1hsb = _RGBtoHSB(colorSplit($var)[0], colorSplit($var)[1], colorSplit($var)[2])
	  $b = $b + $var1hsb[2]
   Next
   Return ($b/(238+158))
EndFunc


Функция возвращает всегда 24990. Вот такое работает как надо:

Код:
Func react()
   If $Started Then
	  FFSnapShot()
	  $var = FFGetPixel(960, 540)
	  $color = 20
	  $var1hsb = _RGBtoHSB(colorSplit($var)[0], colorSplit($var)[1], colorSplit($var)[2])
	  if $var1hsb[2] < $color Then
		 MouseClick("left")
		 Sleep(10)
	  EndIf
   EndIf
EndFunc


В упор не вижу разницы в коде, но одно работает, а другое нет. В чем дело?
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Отдебаж каждую строку через consolewrite и покажи что оно выводит, тогда мб кто и ответит. Гадалок тут нет.
 
Верх