赞
踩
主要用到opencv的cv2,直接贴代码:
- import cv2
- import numpy as np
- global img
- #global point1,point2
- cut_Pos = np.zeros((2,2),np.int)
- def on_mouse(event,x,y,flags,param):
- global img,point1,point2
- img2 = img.copy()
- if event == cv2.EVENT_LBUTTONDOWN:
- point1=(x,y)
- cv2.circle(img2,point1,10,(0,255,0),5)#点击左键,显示绿色圆圈
- cv2.imshow('image',img2)
- elif event == cv2.EVENT_MOUSEMOVE and (flags & cv2.EVENT_FLAG_LBUTTON):
- cv2.rectangle(img2,point1,(x,y),(255,0,0),5)#移动点击下的左键,画出蓝色截图框
- cv2.imshow('image',img2)
- elif event == cv2.EVENT_LBUTTONUP:
- point2 = (x,y)
- cv2.rectangle(img2,point1,point2,(0,0,255),5)#松开左键,显示最终的红色截图框
- cv2.imshow('image',img2)
-
- cut_Pos[0][0]=min(point1[0],point2[0])
- cut_Pos[0][1]=max(point1[0],point2[0])
- cut_Pos[1][0]=min(point1[1],point2[1])
- cut_Pos[1][1]=max(point1[1],point2[1])
- cv2.imshow('image',img[cut_Pos[1][0]:cut_Pos[1][1],cut_Pos[0][0]:cut_Pos[0][1]])
-
- #min_x = min(point1[0],point2[0])
- #min_y = min(point1[1],point2[1])
- #width = abs(point1[0]-point2[0])
- #height = abs(point1[1]-point2[1])
- #cut_img = img[min_y:min_y+height,min_x:min_x+width]
- #cv2.imwrite('photo_1.jpeg',cut_img)
-
-
- def main():
- global img
- img = cv2.imread('E://photo_1.jpeg')
- cv2.namedWindow('image')
- cv2.setMouseCallback('image',on_mouse)
- cv2.imshow('image',img)
- cv2.waitKey(0)
- if __name__ == '__main__':
- main()
用到的函数主要是:
cv2.imread(image_path,flag):
读取图像,两个参数。参数1给出图像路径;参数2指定图像读取方式(默认加载彩色图像,标识为1;灰度图标识0;-1表示加载的图像包含alpha通道)。
cv2.imshow():
建立窗口显示图片,共两个参数。参数1指定窗口名称;参数2是读入的图片对象。
cv2.nameWindow():
新建窗口,有两个参数。参数1窗口名称;参数2是窗口属性,决定是否窗口可以调整。
cv2.setMouseCallback():
void setMousecallback(const string& winname, MouseCallback onMouse, void* userdata=0)
winname:窗口的名字
onMouse:鼠标响应函数,回调函数。指定窗口里每次鼠标时间发生的时候,被调用的函数指针
这个函数的原型应该为void on_Mouse(int event, int x, int y, int flags, void* param)
event是 CV_EVENT_*变量之一;
x和y是鼠标指针在图像坐标系的坐标(不是窗口坐标系);
flags是CV_EVENT_FLAG的组合,
param是用户定义的传递到setMouseCallback函数调用的参数。
userdate:传给回调函数的参数
cv2.waitKey():
键盘绑定函数,只有一个参数,表示等待毫秒数,将等待特定的几毫秒,看键盘是否有输入,返回值为ASCII值。如果其参数为0,则表示无限期的等待键盘输入。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。