Подсчет количества по цвету пиксей в прямоугольной области как ?
помогите примером пожалуйста
Подсчет количества по цвету пиксей в прямоугольной области как ?
Re: Подсчет количества по цвету пиксей в прямоугольной области как ?
Подсчёт количества чего?
Пикселей определённого цвета?
Разных цветов?
Вопрос учитель Йода как задаёте вы почему?
Пикселей определённого цвета?
Разных цветов?
Code: Select all
SetBatchLines, -1
MouseGetPos, areaX, areaY
areaW := 100
areaH := 60
redPixels := 0
colorGroups := [], colorGroups.SetCapacity(32768)
Loop %areaH% {
pxY := A_Index
Loop %areaW% {
pxX := A_Index
PixelGetColor, pxColor, % areaX + pxX, % areaY + pxY
colorGroups[pxColor] := 1
If (pxColor == 0x0000FF)
redPixels++
}
}
colorGroupsNum := 0
For color In colorGroups
colorGroupsNum++
MsgBox, Красных пикселей: %redPixels%`nВсего цветов: %colorGroupsNum%
Re: Подсчет количества по цвету пиксей в прямоугольной области как ?
Подсчет количества пикселей определённого цвета в определенной области экрана
спасибо большое
спасибо большое
Re: Подсчет количества по цвету пиксей в прямоугольной области как ?
Пожалуйста не могли бы откоментировать код я новичек хотел бы разобраться и модифицировать очень интересна эта тема ну и считает он что то долго наверно потому что все цвета считает а мне нужно только определеный может будет считать быстрей
Re: Подсчет количества по цвету пиксей в прямоугольной области как ?
Code: Select all
SetBatchLines, -1 ; Ставим отсутствие задержки между командами (для скорости)
MouseGetPos, areaX, areaY ; Получаем координаты курсора мыши - от него и будем отсчитывать область
areaW := 100 ; Ширина искомой области (в пикселях)
areaH := 60 ; Высота искомой области
redPixels := 0 ; Переменная для подсчёта красных пикселей
; Первый цикл, повторяется areaH раз
Loop %areaH% {
; Специальная переменная A_Index увеличивается на 1 на каждом витке цикла.
; Сохраняем её в переменной, отвечающей за вертикальную координату
pxY := A_Index
; Второй цикл, areaW раз, для горизонтальной координаты
Loop %areaW% {
; В каждом цикле у переменной A_Index своё значение.
; Внутри этого, второго цикла оно будет от 1 до areaW.
pxX := A_Index
; Получаем цвет пикселя возле курсора мыши (см. выше areaX, areaY),
; а именно на pxX пикселей правее и на pxY ниже курсора.
PixelGetColor, pxColor, % areaX + pxX, % areaY + pxY
; Полученный цвет будет в формате BGR, т.е. красный и синий каналы
; поменяны местами.
; Если пиксель полностью красный, увеличиваем переменную redPixels на 1.
; 0x0000FF - шестнадцатеричное представление красного цвета:
; 0 синего, 0 зелёного и 255 красного.
; См.: https://ru.wikipedia.org/wiki/HTML-цвета
If (pxColor == 0x0000FF)
redPixels++
}
}
MsgBox, Красных пикселей: %redPixels%
В любом случае, постоянно дёргать PixelGetColor — не самый лучший способ. Быстрее было бы делать скриншот и читать цвета напрямую из памяти, но раз вы новичок, не могу рекомендовать этот способ.
Re: Подсчет количества по цвету пиксей в прямоугольной области как ?
спасибо огромное
Return to “Скрипты и библиотеки”
Who is online
Users browsing this forum: No registered users and 19 guests