检测同一图像的所有出现

Detect all occurrences of same image

我的脚本可以识别给定的图像,但如果存在两张相同的图像,它将忽略第二张。我想把它算作在不同位置发现了 2 次。有五行可以出现相同的text-image:

屏幕

图片

输出from line 113

[Results found]: Additional Damage of Critical Hits +1% found.

源代码(excerpt

Func Awakes_adoch()
   ToolTip('Scanning for adoch awakes', 0, 0)

   $adoch1 = _ImageSearchArea("images/adoch/adoch1.png", 1, 0, 0, 400, 390, $x, $y, 0)
   If ($adoch1 = 1) Then
      $awake_adoch_attribute_count += 1
   EndIf

   $adoch3 = _ImageSearchArea("images/adoch/adoch3.png", 1, 0, 0, 400, 390, $x, $y, 0)
   If ($adoch3 = 1) Then
      $awake_adoch_attribute_count += 3
   EndIf

   $adoch5 = _ImageSearchArea("images/adoch/adoch5.png", 1, 0, 0, 400, 390, $x, $y, 0)
   If ($adoch5 = 1) Then
      $awake_adoch_attribute_count += 5
   EndIf

   $adoch7 = _ImageSearchArea("images/adoch/adoch7.png", 1, 0, 0, 400, 390, $x, $y, 0)
   If ($adoch7 = 1) Then
      $awake_adoch_attribute_count += 7
   EndIf

   $adoch9 = _ImageSearchArea("images/adoch/adoch9.png", 1, 0, 0, 400, 390, $x, $y, 0)
   If ($adoch9 = 1) Then
      $awake_adoch_attribute_count += 9
   EndIf

   $adoch11 = _ImageSearchArea("images/adoch/adoch11.png", 1, 0, 0, 400, 390, $x, $y, 0)
   If ($adoch11 = 1) Then
      $awake_adoch_attribute_count += 11
   EndIf

   $adoch13 = _ImageSearchArea("images/adoch/adoch13.png", 1, 0, 0, 400, 390, $x, $y, 0)
   If ($adoch13 = 1) Then
      $awake_adoch_attribute_count += 13
   EndIf

   $adoch15 = _ImageSearchArea("images/adoch/adoch15.png", 1, 0, 0, 400, 390, $x, $y, 0)
   If ($adoch15 = 1) Then
      $awake_adoch_attribute_count += 15
   EndIf

   $adoch17 = _ImageSearchArea("images/adoch/adoch17.png", 1, 0, 0, 400, 390, $x, $y, 0)
   If ($adoch17 = 1) Then
      $awake_adoch_attribute_count += 17
   EndIf

   $adoch19 = _ImageSearchArea("images/adoch/adoch19.png", 1, 0, 0, 400, 390, $x, $y, 0)
   If ($adoch19 = 1) Then
      $awake_adoch_attribute_count += 19
   EndIf

   Sleep(50)
   ToolTip('[Scan]: Additional Damage of Critical Hits +' & $awake_adoch_attribute_count & '% found.', 0, 0)
EndFunc

Source code (full)

如果输出 window 如下所示,它应该可以加起来达到 25:

Additional Damage of Critical Hits +3%
DEF + 40
Additional Damage of Critical Hits +3%
DEF + 4
Additional Damage of Critical Hits +19%

另一个例子:

我正在寻找一种不会跳过数字或将它们从上一个镜头添加到下一个镜头的解决方案。

Source code (new)

相对容易,因为所有搜索到的图像都在彼此下方(当搜索到的图像位于随机位置时会困难得多):

#include "ImageSearch64.au3"

$searchpath = "c:\users022505\Downloads\" ; where are my images?
$x = 0 ; dummy parameter for coordinates
$y = 0 ; dummy parameter for coordinates
$Damage = 100

ConsoleWrite("Initial Damage: " & $Damage & @CRLF)
AddDamage()
ConsoleWrite("Resulting Damage: " & $Damage & @CRLF)

Func AddDamage()
    $Damage += GetLocations($searchpath & "adoch1.png")
    $Damage += GetLocations($searchpath & "adoch5.png") * 5
    $Damage += GetLocations($searchpath & "adoch9.png") * 9
    $Damage += GetLocations($searchpath & "adoch11.png") * 11
    Return $Damage
EndFunc   ;==>AddDamage

Func GetLocations($search)
    Local $Findings = 0, $found = 0
    Local $dx = 0, $dy = 0  ;sub coordinates
    While 1
        Local $found = _ImageSearchArea($search, 1, $dx, $dy, 400, 390, $x, $y, 0)
        If $found = 0 Then Return $Findings ; no more findings
        $Findings += 1
        $dy = $y ; set new coordinate window to search (excluding last finding)
    WEnd
EndFunc   ;==>GetLocations