Suche Farb PixelSearch code

07/21/2010 13:55 SprayDay#1
Hey,

Kann mir irgendjemand den code für pixelsearch, oder am besten direkt das ganze script schicken, wo pixelsearch nach einem 'weißen beachball' sucht?
wäre voll cool :)
07/21/2010 16:19 DraaaKe#2
Das hier ist eine Community, keine Job Börse^^ Das Skript das du möchtest wird wohl nicht sehr schwer zu schreiben sein, Blos arbeite ich nie mit Pixelsearch. Wenn du mir genauer beschreiben könntest, wo sich der Ball bewegt und in welcher Fenstergröße und ob sonst noch irgendwo weis auf dem Bildschirm is, dann könnte ich dir weiter helfen :D

Und die genaue Farbe wäre nicht schlecht
07/21/2010 16:24 lczocker#3
Du kannst es auch mit ImageSearch den ball als gesamtes bild suchen lassen, das wäre (glaub ich) einfacher als nach einem einzigen pixel zu suchen

schau dir mal die UDF an

ImageSearch.au3:
PHP Code:
#include-once
; ------------------------------------------------------------------------------
;
; 
AutoIt Version: 3.0
; Language:       English
; Description:    Functions that assist with Image Search
;                 Require that the ImageSearchDLL.dll be loadable
;
; ------------------------------------------------------------------------------

;===============================================================================
;
; 
Description:      Find the position of an image on the desktop
; Syntax:           _ImageSearchArea, _ImageSearch
; Parameter(s):     
;                   
$findImage - the image to locate on the desktop
;                   $tolerance - 0 for no tolerance (0-255). Needed when colors of 
;                                image differ from desktop. e.g GIF
;                   $resultPosition - Set where the returned x,y location of the image is.
;                                     
1 for centre of image, 0 for top left of image
;                   $x $y - Return the x and y location of the image
;
; Return 
Value(s):  On Success - Returns 1
;                   On Failure - Returns 0 
;
; 
Note: Use _ImageSearch to search the entire desktop, _ImageSearchArea to specify
;       a desktop region to search
;
;===============================================================================
Func _ImageSearch($findImage,$resultPosition,ByRef $x, ByRef $y,$tolerance)
   return 
_ImageSearchArea($findImage,$resultPosition,0,0,@DesktopWidth,@DesktopHeight,$x,$y,$tolerance)
EndFunc

Func _ImageSearchArea
($findImage,$resultPosition,$x1,$y1,$right,$bottom,ByRef $x, ByRef $y, $tolerance)
    ;
MsgBox(0,"asd","" & $x1 & " " & $y1 & " " & $right & " " & $bottom)
    if 
$tolerance>0 then $findImage = "*" & $tolerance & " " & $findImage
    $result 
= DllCall("ImageSearchDLL.dll","str","ImageSearch","int",$x1,"int",$y1,"int",$right,"int",$bottom,"str",$findImage)

    ; If 
error exit
    if 
$result[0]="0" then return 0
    
    
; Otherwise get the x,y location of the match and the size of the image to
    
; compute the centre of search
    $array 
= StringSplit($result[0],"|")
   
   
$x=Int(Number($array[2]))
   
$y=Int(Number($array[3]))
   if 
$resultPosition=1 then
      $x
=$x + Int(Number($array[4])/2)
      
$y=$y + Int(Number($array[5])/2)
   endif
   return 
1
EndFunc

;===============================================================================
;
; 
Description:      Wait for a specified number of seconds for an image to appear
;     
; 
Syntax:           _WaitForImageSearch, _WaitForImagesSearch
; Parameter(s):     
;                    
$waitSecs  - seconds to try and find the image
;                   $findImage - the image to locate on the desktop
;                   $tolerance - 0 for no tolerance (0-255). Needed when colors of 
;                                image differ from desktop. e.g GIF
;                   $resultPosition - Set where the returned x,y location of the image is.
;                                     
1 for centre of image, 0 for top left of image
;                   $x $y - Return the x and y location of the image
;
; Return 
Value(s):  On Success - Returns 1
;                   On Failure - Returns 0 
;
;
;===============================================================================
Func _WaitForImageSearch($findImage,$waitSecs,$resultPosition,ByRef $x, ByRef $y,$tolerance)
    
$waitSecs = $waitSecs * 1000
    $startTime
=TimerInit()
    While 
TimerDiff($startTime) < $waitSecs
        sleep
(100)
        
$result=_ImageSearch($findImage,$resultPosition,$x, $y,$tolerance)
        if 
$result > 0 Then
            
return 1
        
EndIf
    
WEnd
    
return 0
EndFunc

;===============================================================================
;
; 
Description:      Wait for a specified number of seconds for any of a set of
;                   images to appear
;     
; 
Syntax:           _WaitForImagesSearch
; Parameter(s):     
;                    
$waitSecs  - seconds to try and find the image
;                   $findImage - the ARRAY of images to locate on the desktop
;                              - ARRAY[0] is set to the number of images to loop through
;                                 ARRAY[1] is the first image
;                   $tolerance - 0 for no tolerance (0-255). Needed when colors of 
;                                image differ from desktop. e.g GIF
;                   $resultPosition - Set where the returned x,y location of the image is.
;                                     
1 for centre of image, 0 for top left of image
;                   $x $y - Return the x and y location of the image
;
; Return 
Value(s):  On Success - Returns the index of the successful find
;                   On Failure - Returns 0 
;
;
;===============================================================================
Func _WaitForImagesSearch($findImage,$waitSecs,$resultPosition,ByRef $x, ByRef $y,$tolerance)
    
$waitSecs = $waitSecs * 1000
    $startTime
=TimerInit()
    While 
TimerDiff($startTime) < $waitSecs
        
for $i = 1 to $findImage[0]
            
sleep(100)
            
$result=_ImageSearch($findImage[$i],$resultPosition,$x, $y,$tolerance)
            if 
$result > 0 Then
                
return $i
            
EndIf
        
Next    
    WEnd
    
return 0
EndFunc 
07/21/2010 17:37 PenGuin :O#4
ImageSearch ist nur dann besser, wenn auch andere weiße Pixel auf dem Bewegungszyklus des Balles liegen, ansonsten sollte PixelSearch reichen.