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)
                        #复制的意义是显示最后一个,否则会出现很多个矩形框

 

 

posted @ 2014-01-15 15:17  黑仔啊哈  阅读(599)  评论(0)    收藏  举报