Sign in to follow this  
Followers 0
oSamplex

PixelSearch Optimalize small area

13 posts in this topic

"PixelSearch(0, 0, 0, 50, 0xFF0000, 25)"

The time it takes for this Search is around 15-30ms.
However increasing the Search area by quite some results that this search time is not increasing
So im wondering if there are any other techniques to accomplish a faster search time for this little 1x50 area? (Im hoping to achieve 5-15ms)

Thanks in advance.

Share this post


Link to post
Share on other sites



I'm not sure that there is an "optimization" as such. What type of window or control are you looking for? Most people eventually leave PixelSearch behind for other methods, as there are much easier ways to accomplish window manipulation.


√-1 2^3 ∑ π, and it was delicious!

Share this post


Link to post
Share on other sites

#3 ·  Posted (edited)

However increasing the Search area 

How you increase this area ? any example ?

Edit:

Welcome to the forum.

Edited by mLipok

Signature beginning:   Wondering who uses AutoIT and what it can be used for ?
* GHAPI UDF - modest begining - comunication with GitHub REST API *
ADO.au3 UDF     POP3.au3 UDF     XML.au3 UDF    How to use IE.au3  UDF with  AutoIt v3.3.14.x  for other useful stuff click the following button

Spoiler

Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind. 

My contribution (my own projects): * Debenu Quick PDF Library - UDF * Debenu PDF Viewer SDK - UDF * Acrobat Reader - ActiveX Viewer * UDF for PDFCreator v1.x.x * XZip - UDF * AppCompatFlags UDF * CrowdinAPI UDF * _WinMergeCompare2Files() * _JavaExceptionAdd() * _IsBeta() * Writing DPI Awareness App - workaround * _AutoIt_RequiredVersion() * Chilkatsoft.au3 UDF * TeamViewer.au3 UDF * JavaManagement UDF * VIES over SOAP * WinSCP UDF * GHAPI UDF - modest begining - comunication with GitHub REST API *

My contribution to others projects or UDF based on  others projects: * _sql.au3 UDF  * POP3.au3 UDF *  RTF Printer - UDF * XML.au3 - BETA * ADO.au3 UDF SMTP Mailer UDF *

Useful links: * Forum Rules * Forum etiquette *  Forum Information and FAQs * How to post code on the forum * AutoIt Online Documentation * AutoIt Online Beta Documentation * SciTE4AutoIt3 getting started * Convert text blocks to AutoIt code * Games made in Autoit * Programming related sites * Polish AutoIt Tutorial * DllCall Code Generator * 

Wiki: Expand your knowledge - AutoIt Wiki * Collection of User Defined Functions * How to use HelpFile * Best coding practices * 

IE Related:  * How to use IE.au3  UDF with  AutoIt v3.3.14.x * Why isn't Autoit able to click a Javascript Dialog? * Clicking javascript button with no ID * IE document >> save as MHT file * IETab Switcher (by LarsJ ) * HTML Entities * _IEquerySelectorAll() (by uncommon) * 

I encourage you to read: * Global Vars * Best Coding Practices * Please explain code used in Help file for several File functions * OOP-like approach in AutoIt * UDF-Spec Questions *  EXAMPLE: How To Catch ConsoleWrite() output to a file or to CMD *

"Homo sum; humani nil a me alienum puto" - Publius Terentius Afer
"Program are meant to be read by humans and only incidentally for computers and execute" - Donald Knuth, "The Art of Computer Programming"
:naughty:  :ranting:, be  :) and       \\//_.

Anticipating Errors :  "Any program that accepts data from a user must include code to validate that data before sending it to the data store. You cannot rely on the data store, ...., or even your programming language to notify you of problems. You must check every byte entered by your users, making sure that data is the correct type for its field and that required fields are not empty."

Signature last update: 2017-06-04

Share this post


Link to post
Share on other sites

I'm not sure that there is an "optimization" as such. What type of window or control are you looking for? Most people eventually leave PixelSearch behind for other methods, as there are much easier ways to accomplish window manipulation.

Agreed. What is the name of the application? I'm sure somebody here has already coded what you need and no point reinventing the wheel.

Share this post


Link to post
Share on other sites

@mLipok

Thanks,

Im trying to figure out if there is any faster way to detect a certain colored pixel in an area.
The thing is now that the size of this area does not have a big effect on time to find result and the area I'm searchin in is only 1x50,

so it feels like a lot of wasted process time. So I hope I can reduce it, if there is an other way with pixel detect.

I hope this clears it up.

PixelSearch ( left, top, right, bottom, color [, shade-variation = 0 [, step = 1 [, hwnd]]] )
PixelSearch(0, 0, 0, 50, 0xFF0000, 25)

 

Share this post


Link to post
Share on other sites

PixelSearch ( left, top, right, bottom, color [, shade-variation = 0 [, step = 1 [, hwnd]]] )

PixelSearch(0, 0, 0, 50, 0xFF0000, 25)

 

I ask you how you increase this area.

I asked for your code, not what HelpFile says.

btw.

Please answer to other members question because they have right.


Signature beginning:   Wondering who uses AutoIT and what it can be used for ?
* GHAPI UDF - modest begining - comunication with GitHub REST API *
ADO.au3 UDF     POP3.au3 UDF     XML.au3 UDF    How to use IE.au3  UDF with  AutoIt v3.3.14.x  for other useful stuff click the following button

Spoiler

Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind. 

My contribution (my own projects): * Debenu Quick PDF Library - UDF * Debenu PDF Viewer SDK - UDF * Acrobat Reader - ActiveX Viewer * UDF for PDFCreator v1.x.x * XZip - UDF * AppCompatFlags UDF * CrowdinAPI UDF * _WinMergeCompare2Files() * _JavaExceptionAdd() * _IsBeta() * Writing DPI Awareness App - workaround * _AutoIt_RequiredVersion() * Chilkatsoft.au3 UDF * TeamViewer.au3 UDF * JavaManagement UDF * VIES over SOAP * WinSCP UDF * GHAPI UDF - modest begining - comunication with GitHub REST API *

My contribution to others projects or UDF based on  others projects: * _sql.au3 UDF  * POP3.au3 UDF *  RTF Printer - UDF * XML.au3 - BETA * ADO.au3 UDF SMTP Mailer UDF *

Useful links: * Forum Rules * Forum etiquette *  Forum Information and FAQs * How to post code on the forum * AutoIt Online Documentation * AutoIt Online Beta Documentation * SciTE4AutoIt3 getting started * Convert text blocks to AutoIt code * Games made in Autoit * Programming related sites * Polish AutoIt Tutorial * DllCall Code Generator * 

Wiki: Expand your knowledge - AutoIt Wiki * Collection of User Defined Functions * How to use HelpFile * Best coding practices * 

IE Related:  * How to use IE.au3  UDF with  AutoIt v3.3.14.x * Why isn't Autoit able to click a Javascript Dialog? * Clicking javascript button with no ID * IE document >> save as MHT file * IETab Switcher (by LarsJ ) * HTML Entities * _IEquerySelectorAll() (by uncommon) * 

I encourage you to read: * Global Vars * Best Coding Practices * Please explain code used in Help file for several File functions * OOP-like approach in AutoIt * UDF-Spec Questions *  EXAMPLE: How To Catch ConsoleWrite() output to a file or to CMD *

"Homo sum; humani nil a me alienum puto" - Publius Terentius Afer
"Program are meant to be read by humans and only incidentally for computers and execute" - Donald Knuth, "The Art of Computer Programming"
:naughty:  :ranting:, be  :) and       \\//_.

Anticipating Errors :  "Any program that accepts data from a user must include code to validate that data before sending it to the data store. You cannot rely on the data store, ...., or even your programming language to notify you of problems. You must check every byte entered by your users, making sure that data is the correct type for its field and that required fields are not empty."

Signature last update: 2017-06-04

Share this post


Link to post
Share on other sites

I dont think him increasing the search area is an issue. He wants faster results for his small area of search.

I think he is saying that a 50X50 search area rakes 15-30s and a 100x100 search area also takes his PC 15-30s more or less.

 

Does this pixel popup in a random location within this 50x50 search area? If not reduce the search size to just the location the pixel appears in.

What is the purpose of the function? There maybe other methods that are faster in some instances depending on what you are interacting with.

Share this post


Link to post
Share on other sites

@Shane0000

You understand me, thanks for that.

I already narrowed the area down where the pixel can popup, but this has no effect on process time compared to let's say 100x100 (I use 50x1 at this moment)
It stays around 15-30ms which keeps me wondering if there is any faster way, because it's quite a bit.

Share this post


Link to post
Share on other sites

You are only selectively answering questions, which must be answered to get the best response.  Go through prior posts, and respond to all questions.


IEbyXPATH-Grab IE DOM objects by XPATH IEscriptRecord-Makings of an IE script recorder ExcelFromXML-Create Excel docs without excel installed GetAllWindowControls-Output all control data on a given window.

Share this post


Link to post
Share on other sites

oSamplex,

 

You are only selectively answering questions

Indeed - but these are some questions you had best answer promptly. ;)

 

- Why the requirement for such speed of execution?

- Why the requirement for "shade-variation"?

- The coordinates you give (0, 0, 0, 50) are a single line of pixels down the top left side of the screen - why such a limited area?

Over to you. :)

M23


Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind._______My UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Share this post


Link to post
Share on other sites

oSamplex,

 

Indeed - but these are some questions you had best answer promptly. ;)

 

- Why the requirement for such speed of execution?

- Why the requirement for "shade-variation"?

- The coordinates you give (0, 0, 0, 50) are a single line of pixels down the top left side of the screen - why such a limited area?

Over to you. :)

M23

 

I second this. I'm hoping I can learn something new here.

Share this post


Link to post
Share on other sites

I've runned some tests with PixelSearch/PixelGetColor and they have as result they are quite slow to my taste 17-30ms.
If there is no other library that might be faster or something else pixel-wise that could speed it up, I will accept it.

I'm sure that I do rely on pixel detection on screen, so I'm not bothering answering questions about if it can be done without 'pixels',

so I'm sorry if you feel different about that.
 

$times = 100

$total = 0
For $i = 0 To $times
   $timer = TimerInit()
   Local $iColor = PixelGetColor(0, 50)
   $timer = TimerDiff($timer)
   $total = $timer + $total
Next
   ConsoleWrite("'PixelGetColor' Average Time: " & $total / $times & "ms" & @CRLF)

$total = 0
For $i = 0 To $times
   $timer = TimerInit()
   Local $aCoord = PixelSearch(0, 0, 50, 0, 0xFF0000, 60)
   $timer = TimerDiff($timer)
   $total = $timer + $total
 Next
 ConsoleWrite("'PixelSearch' Average Time: " & $total / $times & "ms" & @CRLF)

;~ Average search time 17-30ms of PixelGetColor and PixelSearch,
;  but PixelGetColor has to be done multiple times to achieve the search area.
;  My conclusion is that Pixel searches has some serious delay,
;  where no other function exicst to replace to detect a pixel in an area.

Share this post


Link to post
Share on other sites

oSamplex,

 

so I'm not bothering answering questions

So we are not bothering giving answers. Thread locked. :naughty:

M23


Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind._______My UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this  
Followers 0