Что нового

Как сделать поиск картинки на которой немного меняються цвета

joker2d

Новичок
Сообщения
182
Репутация
0
Пока придумал как то сделать скрин экрана в формате 16 цветов
И потом искать картинку(преобразованную тоже в 16 цветов) на скрине с помощью _BmpSearch

поэтому вопрос как сделать скрин в формате 16 цветов ?

Ну или подскажите функцию в которой можно задать процент совпадения цветов для поиска, в функции _BmpSearch такого как понимаю нет
 
Автор
J

joker2d

Новичок
Сообщения
182
Репутация
0
InnI сказал(а):
joker2d
как сделать скрин в формате 16 цветов
Код:
#include <ScreenCapture.au3>

$__g_iBMPFormat = $GDIP_PXF04INDEXED
_ScreenCapture_Capture("scr.bmp")

Скрин получил, открыл его в Paint и вырезал кусок кнопки, после чего сохранил в том же Paint в формате BMP, но _BmpSearch ничего не находит
когда делал тоже самое не урезая скрин до 16 цветов все работало
если сделать поиск скажем по квадрату белого цвета то все работает, что делаю не так, как и чем сохранить скрин кнопки в 16 цветов ?


Добавлено:
Сообщение автоматически объединено:

Код:
#include <ScreenCapture.au3>
#include "BmpSearch.au3"
$__g_iBMPFormat = $GDIP_PXF04INDEXED

_GDIPlus_Startup()
$hSource = _ScreenCapture_Capture()
$hBmp = _GDIPlus_BitmapCreateFromFile(@ScriptDir & "\test.bmp")
$hFind = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hBmp)

$aCoords = _BmpSearch($hSource, $hFind, 1)

If @error Then
  ConsoleWrite("Не найдено" & @CRLF)
Else
  ConsoleWrite("X:" & $aCoords[1][2] & " Y:" & $aCoords[1][3] & " time:" & @extended & @CRLF)
EndIf


вот код
если один цвет делаю то все работает, а если даже одну линию захватываю то ничего не ищет, если не переводить все в 16 цветов то работает без проблем вырезаю в Paint часть скрина и он находиться

получаеться что
Код:
$__g_iBMPFormat = $GDIP_PXF04INDEXED

не действует на
Код:
$hBmp = _GDIPlus_BitmapCreateFromFile(@ScriptDir & "\test.bmp")


потому что
Код:
$hSource = _ScreenCapture_Capture()

точно сохраняет все в 16 цветов

что не так делаю ?
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
Код:
#include <ScreenCapture.au3>
#include "BmpSearch.au3"

$__g_iBMPFormat = $GDIP_PXF04INDEXED

_GDIPlus_Startup()

$hBitmap = _ScreenCapture_Capture()
$hImage = _GDIPlus_BitmapCreateFromHBITMAP($hBitmap)
$iX = _GDIPlus_ImageGetWidth($hImage)
$iY = _GDIPlus_ImageGetHeight($hImage)
$hClone = _GDIPlus_BitmapCloneArea($hImage, 0, 0, $iX, $iY, $__g_iBMPFormat)
$hSource = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hClone)

$hBmp = _GDIPlus_BitmapCreateFromFile(@ScriptDir & "\test.bmp")
$hFind = _GDIPlus_BitmapCreateHBITMAPFromBitmap($hBmp)

$aCoords = _BmpSearch($hSource, $hFind, 1)

If @error Then
  ConsoleWrite("Не найдено" & @CRLF)
Else
  ConsoleWrite("X:" & $aCoords[1][2] & " Y:" & $aCoords[1][3] & " time:" & @extended & @CRLF)
EndIf
 
Верх