pyphon 截图小工具
import cv2 #将数据存为小图片 def fan() : f=open("picture.txt","r") a = [] b = [] for eachline in f: eachline = eachline.strip() eachline = eachline.split(" ") for i in eachline: i = str(i) b.append(i) if len(b) == 4: a.append(b) b = [] i_mg = cv2.imread("jiangnan.jpg") i=0 for picture in a : x = int(picture[0]) y = int(picture[1]) w = int(picture[2]) h = int(picture[3]) i+=1 I_mg = i_mg[y:h,x:w] c = cv2.imwrite(str(i)+".jpg", I_mg) return image = cv2.imread("jiangnan.jpg") global startPointx global startPointy global flagDraw startPointx = 0 startPointy = 0 flagDraw = False cv2.namedWindow("rectangle",cv2.WINDOW_NORMAL) #cv2.namedWindow("rectangle_1",cv2.WINDOW_NOR cv2.imshow('rectangle', image) if __name__ == '__main__': image = cv2.imread("jiangnan.jpg") h, w = image.shape[:2] # top = int(0.05*h) #设置图片大小 # bottom = int(0.05*h) # left = int(0.05*h)q # right = int(0.05*h) imgc = cv2.copyMakeBorder(image, 0,0,0,0, cv2.BORDER_CONSTANT) def onMouseEvent(event,x,y,flags,param): global startPointx global startPointy global flagDraw #鼠标左键按下响应 if(event==1): #第一点 print "Position is: %d,%d" ,x,y startPointx = x startPointy = y flagDraw = True a = str(x) b = str(y) l.write(a) l.write(" ") l.write(b) l.write(" ") #鼠标移动响应 if(event==0): #滑动过程 if(flagDraw==True): imgc = cv2.copyMakeBorder(image,0,0,0,0,cv2.BORDER_CONSTANT) #复制的意义是显示最后一个,否则会出现很多个矩形框
cv2.rectangle(imgc, (startPointx,startPointy), (x,y), (255,0,0),3) cv2.imshow('rectangle', imgc) print "EndPosition is: %d,%d" ,x,y #鼠标左键抬起响应 if(event==4): #第二点 if(flagDraw==True): cv2.rectangle(image, (startPointx,startPointy), (x,y), (255,0,0),3) #cv2.imshow('rectangle_1', image) flagDraw = False c = str(x) d = str(y) l.write(c) l.write(" ") l.write(d) l.write(" ") # cv2.imshow('rectangle', imgc) l=open("picture.txt","w") f=open("picture.txt","r") while True: cv.SetMouseCallback('rectangle', onMouseEvent) #调用滑鼠 c = cv2.waitKey() if c == 27 or c == ord('q'): break cv2.waitKey(0) l.close() f.close() cv2.destroyAllWindows() fan() #滑鼠 # events = ['CV_EVENT_MOUSEMOVE', 'CV_EVENT_LBUTTONDOWN', # 'CV_EVENT_RBUTTONDOWN','CV_EVENT_MBUTTONDOWN', # 'CV_EVENT_LBUTTONUP','CV_EVENT_RBUTTONUP', # 'CV_EVENT_MBUTTONUP' , 'CV_EVENT_LBUTTONDBLCLK', # 'CV_EVENT_RBUTTONDBLCLK','CV_EVENT_MBUTTONDBLCLK']
出现的问题:
1、fun函数调用不熟悉
2、开始没有创建一个框,所以点击左键和放开的框不是想象的框,而是有放大或者放小
cv2.namedWindow("rectangle",cv2.WINDOW_NORMAL)
#cv2.namedWindow("rectangle_1",cv2.WINDOW_NOR
cv2.imshow('rectangle', image) #因为图像总是点击之后才出现,所以要先show出来
3、 imgc = cv2.copyMakeBorder(image,0,0,0,0,cv2.BORDER_CONSTANT)
#复制的意义是显示最后一个,否则会出现很多个矩形框
浙公网安备 33010602011771号