i follow this post to give some time it to operate, wait a long time still looping
http://answers.opencv.org/question/60094/libpng-warning-image-width-is-zero-in-ihdr/ i can not stand this Ninja coding life any more, i have to open my code for ask this error import cv2 import numpy as np #from matplotlib import pyplot as plt import time #print("1=" + str(int(sys.argv[1]))) #print("2=" + str(int(sys.argv[2]))) #print("3=" + str(int(sys.argv[3]))) img_rgb = cv2.imread(r'C:\Users\martin\Documents\scree2.png') img_gray = cv2.cvtColor(img_rgb, cv2.COLOR_BGR2GRAY) template = cv2.imread(r'C:\Users\martin\Documents\dragob.png',0) w, h = template.shape[::-1] res = cv2.matchTemplate(img_gray,template,cv2.TM_CCOEFF_NORMED) threshold = 0.64 loc = np.where( res >= threshold) pt = [(0,0)] while not zip(*loc[::-1]): threshold = threshold - 0.02 loc = np.where( res >= threshold) counter = 1 print("threshold="+str(threshold)) for pt2 in zip(*loc[::-1]): cv2.rectangle(img_rgb, pt2, (pt2[0] + w, pt2[1] + h), (0,0,255), 2) pt = pt2 crop_img = img_rgb[pt[1]:(pt[1]+h), pt[0]:(pt[0]+w)] counter = counter + 1 cv2.imwrite("C:\\Users\\tester\\Documents\\res.png",crop_img) #import cv2 #winName = "Movement Indicator" #cv2.namedWindow(winName, cv2.WINDOW_NORMAL) img = cv2.imread(r'C:\Users\tester\Documents\res.png',1) gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) height, width = gray.shape edges = cv2.Canny(gray,height,width,apertureSize = 3) #edges = cv2.Canny(gray,30,200) #gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY) #ret,thresh = cv2.threshold(edges.copy(),cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE,0) ret,thresh = cv2.threshold(edges,250,150,0) contours,hierarchy = cv2.findContours(thresh, 1, 2) #contours = sorted(contours, key = cv2.contourArea, reverse = True)[:10] im = img.copy() cntcounter = 0 for cnt in contours: epsilon = 0.1*cv2.arcLength(cnt,True) approx = cv2.approxPolyDP(cnt,epsilon,True) #peri = cv2.arcLength(cnt, True) #approx = cv2.approxPolyDP(c, 0.5 * peri, True) #print("len(approx)="+str(len(approx))) if len(approx) == 4: print("approx=" + str(approx)) cntcounter = cntcounter + 1 print("here1") x,y,w,h = cv2.boundingRect(cnt) print("here2") #im = img.copy() while im is None: time.sleep(1) if im is not None: print("here3") im = cv2.rectangle(im.copy(), (x,y), (x+w, y+h), (0,255,0), 2) #cv2.imwrite("C:\\Users\\martin\\Documents\\masda"+str(cntcounter)+".png",imi) #im = cv2.line(im,(x,y),(x+w,y),(0,255,0),2) #im = cv2.line(im,(x+w,y),(x+w,y+h),(0,255,0),2) #im = cv2.line(im,(x,y+h),(x+w,y+h),(0,255,0),2) #im = cv2.line(im,(x,y),(x,y+h),(0,255,0),2) On Friday, September 16, 2016 at 7:34:04 PM UTC+8, Waffle wrote: > On 16 September 2016 at 14:24, meInvent bbird <jobmatt...@gmail.com> wrote: > > im = img.copy() > > cntcounter = 0 > > for cnt in contours: > > epsilon = 0.1*cv2.arcLength(cnt,True) > > approx = cv2.approxPolyDP(cnt,epsilon,True) > > #peri = cv2.arcLength(cnt, True) > > #approx = cv2.approxPolyDP(c, 0.5 * peri, True) > > #print("len(approx)="+str(len(approx))) > > if len(approx) == 4: > > print("approx=" + str(approx)) > > cntcounter = cntcounter + 1 > > print("here1") > > x,y,w,h = cv2.boundingRect(cnt) > > print("here2") > > while im is None: > > time.sleep(1) > > if im is not None: > > print("here3") > > im = cv2.rectangle(im.copy(), (x,y), (x+w, y+h), (0,255,0), > > 2) > > #im = cv2.line(im,(x,y),(x+w,y),(0,255,0),2) > > #im = cv2.line(im,(x+w,y),(x+w,y+h),(0,255,0),2) > > #im = cv2.line(im,(x,y+h),(x+w,y+h),(0,255,0),2) > > #im = cv2.line(im,(x,y),(x,y+h),(0,255,0),2) > > > > > > cv2.imwrite(r'C:\Users\tester\Documents\masda.png',im) > > -- > > https://mail.python.org/mailman/listinfo/python-list > > not sure but.. this bit reads really suspicious: > > while im is None: > time.sleep(1) > > if im is ever None then how will it ever become not None? unless there > is some other thread at work i can't really see this happening. > and if there is some other thread at work then there is probably some > better solution than sleep() -- https://mail.python.org/mailman/listinfo/python-list