I'm new to Python and this is my first ever thing I've scripted and I'm just wondering what I can do to remove this warning:
Warning (from warnings module): File "C:\Users\Luri\Desktop\Bot Stuff\ImageSaver.py", line 76 currentdiff=abs(anread[w,h])-abs(bnread[w,h]) RuntimeWarning: overflow encountered in ubyte_scalars
I've tried Googling the answer and nothing that was clear to me came up as far as fixing this.
I'm trying to write a program that will compare a continuously updating image that is taken from a rectangle around my cursor with a reference image that I'm searching for.
Then depending on what region the cursor is in relative to the target image, it will adjust accordingly.
Thank you for any help you can give!
-J
Code is below:
import os import sys import time import Image import ImageGrab import win32api import numpy, scipy def mousePos(): #--------------------------------------------------------- #User Settings: SaveDirectory=r'C:\Users\Luri\Desktop\Bot Stuff' ImageEditorPath=r'C:\WINDOWS\system32\mspaint.exe' #Here is another example: #ImageEditorPath=r'C:\Program Files\IrfanView\i_view32.exe' #--------------------------------------------------------- i,j = win32api.GetCursorPos() print 'Your Cusor Position is:', i,j time.sleep(1) size = 112, 58 #------------------- #data is defined as | x0y0 = [0,0] = (xpos-56,ypos-29) | x0y1 = [0,1] = (xpos-56,ypos+29) | x1y1 = [1,1] = (xpos+56,ypos+29) | x1y0 = [1,0] = (xpos+56,ypos-29) #Take In Image In Rectangle around cursor position to locate text of name pixeldiff=0 currentdiff=0 NQ1=193395 NQ2=166330 NQ3=171697 NQ4=168734 NAC=190253 NBC=205430 x0=i-56 y0=j-29 x1=i+56 y1=j+29 box=[x0, y0, x1, y1] img=ImageGrab.grab() saveas=os.path.join(SaveDirectory,'fullscreen.jpg') img.save(saveas) editorstring='""%s" "%s"'% (ImageEditorPath,saveas) #Crop box around cursor cursorbox=img.crop(box) saveas=os.path.join(SaveDirectory,'cursorbox.jpg') cursorbox.save(saveas) #Converts the given cursor rectangle to 8bit grayscale from RGB out = cursorbox.convert("L") saveas=os.path.join(SaveDirectory,'lmodecurbox.jpg') out.save(saveas) #Takes the converted grayscale picture and converts it to an array a=numpy.asarray(out) aarray=Image.fromarray(a) sizea = a.shape # print sizea # print a anread=a[:] #Loads the reference image reference=Image.open("referencecold.png") #Converts the given cursor rectangle to 8bit grayscale from RGB refout = reference.convert("L") saveas=os.path.join(SaveDirectory,'lmoderefbox.jpg') refout.save(saveas) #Takes the converted grayscale picture and converts it to an array b=numpy.asarray(refout) barray=Image.fromarray(b) sizeb = b.shape # print sizeb # print b # print size bnread=b[:] # print bnread #Realized you can determine position based on this single quadrant #Loop Quadrant 1 x0y1 to xmym for h in range(0,29): for w in range(0,55): #currentdiff=0 currentdiff=abs(anread[w,h])-abs(bnread[w,h]) pixeldiff=pixeldiff+currentdiff # print pixeldiff #Test Above if pixeldiff<198559 and pixeldiff>190253: #Test Left if pixeldiff > 175000: #Move Above and Left print ('Go Up and Left') else: #Move Above Right print ('Go Up and Right') if pixeldiff>198559 and pixeldiff<205430: if pixeldiff < 185000: #Move Below and Left print ('Go Down and Left') else: #Move Below and Right print ('Go Down and Right') """ #Nominal Q1=193395 Variance low = 188408 Variance high = 203194 #Nominal Q2=166330 Variance low = 181116 Variance high = 199208 #Nominal Q3=171697 Variance low = 172279 Variance high = 201816 #Nominal Q4=168734 Variance low = 190644 Variance high = 191878 #Nominal Center = 198559 #Nominal Above Center = 190253 #Nominal Below Center = 205430 #Loop Quadrant 2 xmy1 to x1ym for h in range(0,29): for w in range(55,111): difference=abs(a(w,h)-b(w,h)) currentdiff=abs(anread[w,h])-abs(bnread[w,h]) pixeldiff=pixeldiff+currentdiff #Loop Quadrant 3 x0ym to xmy0 for h in range(29,57): for w in range(0,55): difference=abs(a(w,h)-b(w,h)) currentdiff=abs(anread[w,h])-abs(bnread[w,h]) pixeldiff=pixeldiff+currentdiff #Loop Quadrant 4 xmym to x1y0 for h in range(29,57): for w in range(55,111): difference=abs(a(w,h)-b(w,h)) currentdiff=abs(anread[w,h])-abs(bnread[w,h]) pixeldiff=pixeldiff+currentdiff #Fine Nominal Values for Each quadrant pixeldiff #Compare which is similar and then move cursor in center of that quadrant """ def main(): # while True: mousePos() if __name__ == "__main__": main() #Compare image to constantly updating image of rectangle around cursor (maybe per second?) by searching for the quadrant with most similarity #------------------- #Based on comparison, move cursor to middle (x and y value) of matched quadrant by population of similar features and repeat
You are adding two uint8
values together resulting in an uint8
value. You need to transform your data types in the calculation. I suggest you try this:
pixeldiff = (int(ipxeldiff)+int(currentdiff))/2
This should work.
Edit: balanced bracketts
I had a similar problem that I resolved by initializing my numpy arrays as an int64
datatype:
imAnchor = array(Image.open(imList[10]), dtype='int64')
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With