当前位置:   article > 正文

图像截切显示python实现_python全屏截图并用cv2显示出来

python全屏截图并用cv2显示出来

主要用到opencv的cv2,直接贴代码:

  1. import cv2
  2. import numpy as np
  3. global img
  4. #global point1,point2
  5. cut_Pos = np.zeros((2,2),np.int)
  6. def on_mouse(event,x,y,flags,param):
  7. global img,point1,point2
  8. img2 = img.copy()
  9. if event == cv2.EVENT_LBUTTONDOWN:
  10. point1=(x,y)
  11. cv2.circle(img2,point1,10,(0,255,0),5)#点击左键,显示绿色圆圈
  12. cv2.imshow('image',img2)
  13. elif event == cv2.EVENT_MOUSEMOVE and (flags & cv2.EVENT_FLAG_LBUTTON):
  14. cv2.rectangle(img2,point1,(x,y),(255,0,0),5)#移动点击下的左键,画出蓝色截图框
  15. cv2.imshow('image',img2)
  16. elif event == cv2.EVENT_LBUTTONUP:
  17. point2 = (x,y)
  18. cv2.rectangle(img2,point1,point2,(0,0,255),5)#松开左键,显示最终的红色截图框
  19. cv2.imshow('image',img2)
  20. cut_Pos[0][0]=min(point1[0],point2[0])
  21. cut_Pos[0][1]=max(point1[0],point2[0])
  22. cut_Pos[1][0]=min(point1[1],point2[1])
  23. cut_Pos[1][1]=max(point1[1],point2[1])
  24. cv2.imshow('image',img[cut_Pos[1][0]:cut_Pos[1][1],cut_Pos[0][0]:cut_Pos[0][1]])
  25. #min_x = min(point1[0],point2[0])
  26. #min_y = min(point1[1],point2[1])
  27. #width = abs(point1[0]-point2[0])
  28. #height = abs(point1[1]-point2[1])
  29. #cut_img = img[min_y:min_y+height,min_x:min_x+width]
  30. #cv2.imwrite('photo_1.jpeg',cut_img)
  31. def main():
  32. global img
  33. img = cv2.imread('E://photo_1.jpeg')
  34. cv2.namedWindow('image')
  35. cv2.setMouseCallback('image',on_mouse)
  36. cv2.imshow('image',img)
  37. cv2.waitKey(0)
  38. if __name__ == '__main__':
  39. 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,则表示无限期的等待键盘输入。

 

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号