Find-Image


Поиск картинки



Параметры #1

  • -Image Изображение, загруженное в память

  • -Screen Искать изображение на всем экране

  • -Path Путь к файлу, в котором будет произведен поиск изображения

  • -Handle Указатель окна, в котором будет произведен поиск изображения

  • -Visible Поиск в неперекрытом окне

  • -Picture Картинка, загруженная в память, в которой будет произведен поиск изображения

  • -Accuracy Точность совпадения (80 = 80% accuracy )

  • -Deviation Отклонение в цвете (20 = 20% color deviation)

  • -Count Количество изображений, которое будет найдено

  • -V2 Альтернативный алгоритм поиска.

    • -Attempts По скольким пикселям искать изображение. Если 0, то искать по всем.

    • -BgColor Цвет фона. Пиксели указанного цвета не участвуют в поиске.

    1 - по умолчанию
    0 - искать все

    Wake up, Neo, select all

    $img = Get-Image "D:\image.bmp"
    Find-Image $img -Screen -Accuracy 95

Параметры #2

  • -Image Изображение, загруженное в память

  • -Screen / -Path / -Handle / -Picture

  • -StartPos Координаты начала области поиска

  • -EndPos Координаты конца области поиска

  • -Accuracy Точность совпадения (80 = 80% accuracy )

  • -Deviation Отклонение в цвете (20 = 20% color deviation)

  • -Count Количество изображений, которое будет найдено

    1 - по умолчанию
    0 - искать все

    Wake up, Neo, select all

    Find-Image $img -Path "C:\Picture.bmp" -StartPos 50, 50 -EndPos 250, 250

Параметры #3

  • -Image Изображение, загруженное в память

  • -Screen / -Path / -Handle / -Picture

  • -StartPos Координаты начала области поиска

  • -Size Размеры области поиска

  • -Accuracy Точность совпадения (80 = 80% accuracy )

  • -Deviation Отклонение в цвете (20 = 20% color deviation)

  • -Count Количество изображений, которое будет найдено

    1 - по умолчанию
    0 - искать все

    Wake up, Neo, select all

    Find-Image $img -Handle 1567893 -StartPos 50, 50 -Size 200, 200

Параметры #4

  • -Image Изображение, загруженное в память

  • -Screen / -Path / -Handle / -Picture

  • -Rect Объект Rectangle, содержащий информацию об области поиска

  • -Accuracy Точность совпадения (80 = 80% accuracy )

  • -Deviation Отклонение в цвете (20 = 20% color deviation)

  • -Count Количество изображений, которое будет найдено

    1 - по умолчанию
    0 - искать все

    Wake up, Neo, select all

    $pic = Get-Image "D:\picture.bmp"
    $rect = [Drawing.Rectangle]::new(50, 50, 200, 200)
    Find-Image $img -Picture $pic -Rect $rect

Примеры

  1. Поиск изображения на всём экране.

    Wake up, Neo, select all

    Clear-Host
    try{
    $img = Get-Image -Path "C:\image.bmp" # загрузить картинку
    }
    catch{
    Write-Host "Картинка не загрузилась" -ForegroundColor Red
    Stop-Script
    }

    $coord = Find-Image $img -Screen -Accuracy 95 # поиск картинки
    if($coord){
    Write-Host "Координаты картинки: $($coord.location[0])" -ForegroundColor Green
    Move-Cursor $coord.location[0]
    }
    else{
    Write-Host "Картинка не найдена" -ForegroundColor Red
    }
  2. Поиск изображения на экране в указанных координатах.

    Wake up, Neo, select all

    Clear-Host
    try{
    $img = Get-Image -Path "C:\image.bmp"
    }
    catch{
    Write-Host "Картинка не загрузилась" -ForegroundColor Red
    Stop-Script
    }

    # левый верхний угол области поиска 50, 200
    # правый нижний угол области поиска 200, 500
    $coord = Find-Image $img -Screen -StartPos 50, 200 -EndPos 200, 500
    if($coord){
    Write-Host "Координаты картинки: $($coord.location[0])" -ForegroundColor Green
    Move-Cursor $coord.location[0]
    }
    else{
    Write-Host "Картинка не найдена" -ForegroundColor Red
    }
  3. Поиск картинки на экране с меньшей точностью (Accuracy) и отклонением в цвете (Deviation).

    Wake up, Neo, select all

    Clear-Host
    try{
    $img = Get-Image -Path "C:\image.bmp"
    }
    catch{
    Write-Host "Картинка не загрузилась" -ForegroundColor Red
    Stop-Script
    }

    # точность поиска 95%, отклонение в цвете 10%
    $coord = Find-Image $img -Screen -Accuracy 95 -Deviation 10
    if($coord){
    Write-Host "Координаты картинки: $($coord.location[0])" -ForegroundColor Green
    Move-Cursor $coord.location[0]
    }
    else{
    Write-Host "Картинка не найдена" -ForegroundColor Red
    }
  4. Поиск на экране нескольких одинаковых изображений.

    Wake up, Neo, select all

    Clear-Host
    try{
    $img = Get-Image -Path "C:\image.bmp"
    }
    catch{
    Write-Host "Картинка не загрузилась" -ForegroundColor Red
    Stop-Script
    }

    $coord = Find-Image $img -Screen -Accuracy 95 -Count 0 -Deviation 10
    if($coord){
    foreach($item in $coord){ # цикл для всех найденных изображений
    Write-Host "Координаты картинки: $($item.location)" -ForegroundColor Green
    Move-Cursor $item.location # навести курсор на картинку
    Start-Sleep -m 500 # пауза 0.5 секунды
    }
    }
    else{
    Write-Host "Картинка не найдена" -ForegroundColor Red
    }
  5. Поиск картинки в указанном окне. Окно не должно быть перекрыто другими окнами.

    Wake up, Neo, select all

    Clear-Host
    try{
    $img = Get-Image -Path "C:\attack.bmp"
    }
    catch{
    Write-Host "Картинка не загрузилась" -ForegroundColor Red
    Stop-Script
    }

    $window = Find-Window -Title "Warspear Online" # поиск окна с именем Warspear Online
    if(!$window){
    Write-Host "Окно не найдено" -ForegroundColor Red
    Stop-Script
    }
    Set-ForegroundWindow $window.handle[0] # переместить окно на передний план
    Start-Sleep 1 # пауза 1 секунду

    $coord = Find-Image $img -Handle $window.handle[0] -Visible -Accuracy 95 -Deviation 10
    if($coord){
    Write-Host "Координаты картинки: $($coord.location[0])" -ForegroundColor Green
    Move-Cursor $coord.location[0] -Handle $window.handle[0] # переместить курсор
    }
    else{
    Write-Host "Картинка не найдена" -ForegroundColor Red
    }
  6. Поиск картинки в указанном окне. Окно может быть перекрыто (но, не свёрнуто) другими окнами.
    Отличие от примера 5 в том что не указан параметр -Visible.

    Wake up, Neo, select all

    Clear-Host
    try{
    $img = Get-Image -Path "C:\attack.bmp"
    }
    catch{
    Write-Host "Картинка не загрузилась" -ForegroundColor Red
    Stop-Script
    }

    $window = Find-Window -Title "Warspear Online" # поиск окна с именем Warspear Online
    if(!$window){
    Write-Host "Окно не найдено" -ForegroundColor Red
    Stop-Script
    }

    $coord = Find-Image $img -Handle $window.handle[0] -Accuracy 95 -Deviation 10
    if($coord){
    Write-Host "Координаты картинки: $($coord.location[0])" -ForegroundColor Green
    Click-Mouse $coord.location[0] -Handle $window.handle[0] -Event # клик на картинку, курсор при этом не задействован
    }
    else{
    Write-Host "Картинка не найдена" -ForegroundColor Red
    }
  7. Загрузить картинки в массив и искать их в цикле.

    Wake up, Neo, select all

    Clear-Host
    try{
    $img = Get-Image -Path "C:\image.bmp", "C:\папка\song.bmp", "C:\dance.bmp" # загрузить картинки в массив
    }
    catch{
    Write-Host "Картинка не загрузилась" -ForegroundColor Red
    Stop-Script
    }

    for($i=0; $i -lt $img.Count; $i++){ # цикл для поиска всех картинок из массива
    $coord = Find-Image $img[$i] -Screen -Accuracy 95 -Deviation 10
    if($coord){
    Write-Host "Координаты картинки: $($coord.location[0])" -ForegroundColor Green
    Move-Cursor $coord.location[0] # навести курсор на картинку
    Start-Sleep -m 500 # пауза 0.5 секунды
    }
    else{
    Write-Host "Картинка не найдена" -ForegroundColor Red
    }
    }
  8. Загрузить картинки в массив искать их на сделанном скрине.

    Wake up, Neo, select all

    Clear-Host
    try{
    $img = Get-Image -Path "C:\image.bmp", "C:\папка\song.bmp", "C:\dance.bmp" # загрузить картинки в массив
    }
    catch{
    Write-Host "Картинка не загрузилась" -ForegroundColor Red
    Stop-Script
    }

    $screen = Get-Image -Screen # сделать скрин всего экрана
    for($i=0; $i -lt $img.Count; $i++){ # цикл для поиска всех картинок из массива
    $coord = Find-Image $img[$i] -Picture $screen -Accuracy 95 -Deviation 10 # искать картинки на сделанном скрине
    if($coord){
    Write-Host "Координаты картинки $i : $($coord.location[0])" -ForegroundColor Green
    }
    else{
    Write-Host "Картинка не найдена" -ForegroundColor Red
    }
    }
    $screen.Dispose() # удалить скрин
  9. Ожидание появления картинки

    Wake up, Neo, select all

    Clear-Host
    try{
    $img = Get-Image -Path "C:\image.bmp" # загрузить картинку
    }
    catch{
    Write-Host "Картинка не загрузилась" -ForegroundColor Red
    Stop-Script
    }

    # ждать пока картинка не будет найдена
    Do {
    $coord = Find-Image $img -Screen -Accuracy 95 # поиск картинки на экране
    Start-Sleep -m 10
    }
    Until($coord)

    Write-Host ("Координаты: X = {0}, Y = {1}" -f $coord.location.X[0], $coord.location.Y[0]) -ForegroundColor Green
    Move-Cursor $coord.location.X[0], $coord.location.Y[0] # переместить курсор на найденную картинку
    Move-Cursor $coord.location[0] # или так
  10. Ожидание картинки указанное количество времени.

    Wake up, Neo, select all

    Clear-Host
    try{
    $img = Get-Image -Path "C:\image.bmp" # загрузить картинку
    }
    catch{
    Write-Host "Картинка не загрузилась" -ForegroundColor Red
    Stop-Script
    }

    $time = (Get-DAte).AddMilliseconds(3500) # текущее время + 3.5 секунды
    while((Get-Date) -lt $time){ # цикл ожидания картинки 3.5 секунды
    $coord = Find-Image $img -Screen -Accuracy 95 -Deviation 10 # поиск картинки на экране
    if ($coord){ # если картинка нашлась
    break # выход из цикла
    }
    sleep -m 10
    }

    if ((Get-Date) -ge $time){ # проверка были ли найдена картинка за указанное время
    Write-Host "Время вышло, картинка не найдена" -ForegroundColor Red
    }
    else{
    Write-Host "Координаты картинки: $($coord.location)" -ForegroundColor Green
    }