|
You last visited: Today at 10:17
Advertisement
Image Search Fragen bei Bildersuche
Discussion on Image Search Fragen bei Bildersuche within the AutoIt forum part of the Coders Den category.
10/28/2013, 22:44
|
#1
|
elite*gold: 0
Join Date: Nov 2010
Posts: 1,548
Received Thanks: 333
|
Image Search Fragen bei Bildersuche
Hallo , liebe Community ich versuche seit einer halben Stunde zu verstehen wie man Image Search richtig benutzt. Ich möchte nach einem Bild suchen (besten falls wenn ich die Bildschirmwerte angebe wo es sich befinden soll ) und er soll dort suchen ob dieses Bild vorhanden ist , aus einer Reihe von Bildern und mir ausgeben welches Bild vorhanden war.
Bsp :
Es werden verschiedene Bilder von Tieren gezeigt und ich habe die Bilder der Tiere abgespeichert und er soll entscheiden welches von ka 5 Tieren gezeigt wurde.
Hier meine Version von der imagesearch.au3 ich habe verschiedene im Internet gefunden deswegen weiß ich nicht ob diese Richtig ist :
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
Ich hoffe ihr könnt mir da weiter helfen , das einzige was ich im Internet dazu finden konnte waren irgendwelche Fragen dazu in anderen Foren.
Bitte erklärt auch die einzelnen Funktionsabläufe.
Ich will die Member ja auch unterstützen deswegen würde ich
20 eg die ich ehh nie benutzen werde dem diejenigen schicken der mir geholfen hat. Will euch nicht kaufen xD Nettigkeit soll sich auch mal auszahlen
mfg Waller66
|
|
|
10/28/2013, 22:55
|
#2
|
elite*gold: 60
Join Date: Aug 2009
Posts: 2,256
Received Thanks: 815
|
Im Grunde ist nur _ImageSearch wichtig.
So wie ich das da aus dem CodeSnippet entnehmen kann ist das doch nur die UDF und kein Source? Ohne Snippet können wir dir nicht helfen und ja die Version ist die die man im Internet findet, da gibts eigentlich keine großen Unterschiede.
Code:
Local $sImage = "Bild.jpg", $iX = 0, $iY = 0, $iTolerance = 10
$iResult = _ImageSearch($sImage, 0, $iX, $iY, $iTolerance)
If $iResult = 1 Then MsgBox(64, "Found.", "X: " & $iX & @CRLF & "Y: " & $iY)
$sImage ist der Pfad zum Bild, das ist im üblichen eine .jpg Datei.
Die 0 gibt an der die die Werte ($iX und $iY) von oben links und nicht vom Zentrum wiedergeben soll.
$iX und $iY werden als ByRef in der UDF aufgerufen, das heißt man muss sie zwangshalber definieren, da dort später die Position gespeichert wird wenn man das findet.
$iTolerance ist die Toleranz, bei .jpg Datei üblicherweise höher als bei .png, die reich von 0 - 255 (selber auswählen was man möchte.)
|
|
|
10/28/2013, 23:28
|
#3
|
elite*gold: 0
Join Date: Nov 2010
Posts: 1,548
Received Thanks: 333
|
Vielen Dank für die schnelle Antwort , ich werde es mir morgen früh angucken. Wenns geht hast du morgen die 20 eg Noch eine Frage , ich habe das alles verstanden bis auf die Variablen $iX = 0, $iY = 0
werden die nicht von mir mit einem wert belegt (verstehe die aussage nicht von dir : von oben links und nicht vom Zentrum wiedergeben soll. ) oder bleiben die 0 ?
Code:
if $result[0]="0" then return 0
if $result^ ERROR
>Exit code: 1 Time: 0.230
Das gibt mir der Compiler aus .
obwohl ich die variable $result nicht benutzte
|
|
|
10/29/2013, 11:41
|
#4
|
elite*gold: 60
Join Date: Aug 2009
Posts: 2,256
Received Thanks: 815
|
Folgendes, man kann Funktionsparameter auch mit ByRef definieren, die werden dann nicht returned aber verändert, hier schau mal:
Code:
$iZahl1 = 500
_ChangeNumber($iZahl1)
Func _ChangeNumber(ByRef $iVar1)
$iVar1 = 200
EndFunc
MsgBox(64, "", $iZahl1)
Außerdem wird kein Array returned sondern nur 0 oder eine 1, 0 ist dabei der Fehler und 1 der Erfolg.
Zu der Sache mit den Bildschirmkoordinaten, es ist besser lieber die Koordinaten die von links oben ausgehen zu nehmen und nicht die vom Zentrum, da viele Funktionen so arbeiten.
Sagen wir du hast ein Fenster das ist 400x300 groß.
Wenn du einstellst das das Zentrum die Anfangskoordinaten sind, dann sind deine Koordinaten für die Mitte vom Screen 0/0 aber für oben links -200/-150.
Wenn du einstellst, das die Koordinaten gleich von links oben anfangen ist es links oben 0/0 und in der Mitte 200/150.
|
|
|
10/29/2013, 13:14
|
#5
|
elite*gold: 0
Join Date: Nov 2010
Posts: 1,548
Received Thanks: 333
|
gott bin ich ein Trottel ich habs ist ja super easy
|
|
|
10/29/2013, 13:26
|
#6
|
elite*gold: 60
Join Date: Aug 2009
Posts: 2,256
Received Thanks: 815
|
Schön das es klappt
|
|
|
10/29/2013, 13:52
|
#7
|
elite*gold: 0
Join Date: Nov 2010
Posts: 1,548
Received Thanks: 333
|
wie bekomme ich die suche bereich spezifisch ?
ImageSearchArea( "bild.bmp", 1, 797, 374, 1224, 810, $found_X, $found_Y, 0 )
das habe ich gefunden wie wende ich das auf $iResult an ?
|
|
|
10/29/2013, 16:05
|
#8
|
elite*gold: 60
Join Date: Aug 2009
Posts: 2,256
Received Thanks: 815
|
_ImageSearchArea in deinem Falle wird entweder 0 oder 1 returnen, da spiel eigentlih $iResult von _ImageSearch keine Rolle, wenn du aber abfragen willst ob es geklappt hat kannst du ja das nehmen
Code:
Local $iResult = _ImageSearchArea(...)
If $iResult Then
MsgBox(64, "", "Funktioniert")
Else
MsgBox(64, "", "Fehler")
EndIf
|
|
|
10/29/2013, 16:12
|
#9
|
elite*gold: 0
Join Date: Nov 2010
Posts: 1,548
Received Thanks: 333
|
achso nein okay das will ich doch gar nicht .
ich will den _ImageSearch auf einen Bereich des bildschirm begrenzen geht das ?
|
|
|
10/29/2013, 17:19
|
#10
|
elite*gold: 60
Join Date: Aug 2009
Posts: 2,256
Received Thanks: 815
|
Wie gesagt mit _ImageSearchArea oder wo ist das Problem? Damit machst du auch eine _ImageSearch durche nur auf einen bestimmten Bereich, Parameter findeste in der UDF.
|
|
|
|
Similar Threads
|
autoit image search
05/23/2013 - Metin2 Private Server - 3 Replies
Hey :D,
ich hab mir mit AutoIt was geschrieben und habe dabei imagesearch benutzt,
ich will die exe aber weiterschicken ohne, dass jemand die ganze bilder sieht ich dafür benötigt habe, gibts da ne einfache Lösung die bilder mit in die exe einzubinden?
wenn ihr mehr infos zum script braucht sagt bescheid ;-).
LG Tom
|
Image search
05/23/2013 - AutoIt - 1 Replies
Wie binde ich bilder in meine exe ein?
Ich möchte nämlich nur die exe haben und sie verschicken können, ohne, dass ich die bilder immer beilegen muss.
LG Tom
|
Image search API
11/28/2012 - Web Development - 2 Replies
Heyho,
ich wollte mal nachfragen ob wer von euch Dienste / API's kennt womit man Bilder suchen kann? Am besten gratis.
Yahoo API - Gibt es nicht mehr
Google API - Wird bald mal geschlossen, die neue kostet ab 100 Anfragen Geld
Flickr API - Geht zwar, aber die Resultate lassen eher zu wünschen übrig
Instagram API - Geht, aber man kann nur nach einen Tag ohne Leerzeichen etc. suchen
Pinterest hat z.Z. keine API mehr
|
[UDF] Autoit Image Search
10/01/2010 - AutoIt - 8 Replies
We dont like racist forum fuc|< you.
|
Image Search Problem
06/23/2010 - AutoIt - 9 Replies
Heyy
ich bin gerade dabei einen Bot zu Schreiben, leider habe ich ein Problem mit Image Search ... irgendwie checke ich das nicht so :(
Ich habe vor dass wenn man Start klickt dass der Bot nach einem Bild sucht und dann mit der Maus dorthin geht und ein Linksklick macht.
Hier mal der Source Code von mein Bot:
#include <GUIConstants.au3>
Global $INTERVALL
|
All times are GMT +2. The time now is 10:17.
|
|