Python создать скриншот области - PullRequest
1 голос
/ 19 марта 2019

Возможно ли в python создать скриншот области, как в этом примере?

пример

import pyautogui

def capture_current_scene(name_screenshot, i):
    im1= pyautogui.screenshot()
    im1.save(name_screenshot+'_'+str(i))


def capture_area_scene():
    currentMouseX1, currentMouseY1 = pyautogui.position()

    # click one ==> initialize a rectangle form

    currentMouseX2, currentMouseY2 = pyautogui.position()

    # click two ==> end the rectangle form
    # you created an area screenshot

1 Ответ

1 голос
/ 20 марта 2019

Вот один из способов сделать это.Сначала вы отображаете скриншот полного изображения (при необходимости изменяете размер).Создается MouseCallback, который сохраняет положение мыши по оси x / y при нажатии, рисует прямоугольник на изображении при перетаскивании, а после отпускания мыши создает подизображение.

Результат: enter image description here

Код:

import cv2
import numpy as np 

img = cv2.imread("screenshot.jpg", 1)
click1 = False
point1 = (0,0)

def click(event,x,y,flags, params):
        global click1, point1
        if event == cv2.EVENT_LBUTTONDOWN:
                # if mousedown, store the x,y position of the mous
                click1 = True
                point1 = (x,y)
        elif event == cv2.EVENT_MOUSEMOVE and click1:
                # when dragging pressed, draw rectangle in image
                img_copy = img.copy()
                cv2.rectangle(img_copy, point1, (x,y), (0,0,255),2)
                cv2.imshow("Image", img_copy)
        elif event == cv2.EVENT_LBUTTONUP:
                # on mouseUp, create subimage
                click1 = False
                sub_img = img[point1[1]:y,point1[0]:x]
                cv2.imshow("subimg", sub_img)

cv2.namedWindow("Image")
cv2.setMouseCallback("Image", click)

cv2.imshow("Image", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...