#decoding:utf-8 import numpy as np from math import * import sys import os import glob import argparse import cv2 as cv drag_start = None#å ¨å±åéåæ¹åé¼ æ ææ½æ¶ä½¿ç¨ sel = (0,0,0,0)#å ¨å±åé é¿æ¹å½¢å·¦ä¸é¢å³ä¸å®ç¹åæ åå¨ def onmouse(event, x, y, flags, param):#é¼ æ äºä»¶ååºå½æ° global drag_start, sel if event == cv.EVENT_LBUTTONDOWN:#左鮿䏿¶è®°å½å½ååå§åæ ï¼å¹¶åå§åç©å½¢sel drag_start = x, y sel = 0,0,0,0 elif event == cv.EVENT_LBUTTONUP:#é¼ æ å·¦é®å¹å¼¹èµ·æ¶ååº if sel[2] > sel[0] and sel[3] > sel[1]:#夿å³ä¸è§åæ æ¯å¦å¤§äºå·¦ä¸è§ patch = gray[sel[1]:sel[3],sel[0]:sel[2]]#åç©å½¢åºåå åç´ ä½ä¸ºpatchå¾å result = cv.matchTemplate(gray,patch,cv.TM_CCOEFF_NORMED) result = np.abs(result)**3 val, result = cv.threshold(result, 0.01, 0, cv.THRESH_TOZERO)#å°ä½äº0ã01çå¼èµå¼ä¸º0 result8 = cv.normalize(result,None,0,255,cv.NORM_MINMAX,cv.CV_8U)#å°result转åå°0-255åºé´ cv.imshow("result", result8) drag_start = None elif drag_start: #print flags if flags & cv.EVENT_FLAG_LBUTTON:#åå½ååæ ä¸åå§åæ è¾å°ç为ç©å½¢åæ å·¦ä¸ï¼è¾å¤§ç为å³ä¸ minpos = min(drag_start[0], x), min(drag_start[1], y) maxpos = max(drag_start[0], x), max(drag_start[1], y) sel = minpos[0], minpos[1], maxpos[0], maxpos[1] img = cv.cvtColor(gray, cv.COLOR_GRAY2BGR) cv.rectangle(img, (sel[0], sel[1]), (sel[2], sel[3]), (0,255,255), 1) cv.imshow("gray", img) else: print "selection is complete" drag_start = None if __name__ == '__main__': parser = argparse.ArgumentParser(description='Demonstrate mouse interaction with images') parser.add_argument("-i","--input", default='../', help="Input directory.") args = parser.parse_args() path = args.input#è·åå¾åè·¯å¾åæ° cv.namedWindow("gray",1) cv.setMouseCallback("gray", onmouse) '''''Loop through all the images in the directory''' for infile in glob.glob( os.path.join(path, '*.*') ):#éåæä»¶å¤¹ä¸çå¾çæä»¶ ext = os.path.splitext(infile)[1][1:] #get the filename extenstion if ext == "png" or ext == "jpg" or ext == "bmp" or ext == "tiff" or ext == "pbm": print infile img=cv.imread(infile,1) if img == None: continue sel = (0,0,0,0) drag_start = None gray=cv.cvtColor(img, cv.COLOR_BGR2GRAY) cv.imshow("gray",gray) if (cv.waitKey() & 255) == 27: break cv.destroyAllWindows()