Pyrhonで範囲を指定して、スクリーンショットをとる
Pyrhonで範囲を指定して、スクリーンショットをとる
PyAutoGuiをつかう
import pyautogui
screenshot = pyautogui.screenshot()
screenshot.save("screenshot.png")
screenshot_regon = pyautogui.screenshot(region=(0,0,300,400))
screenshot_regon.save("screenshot_region.png")
Pillowをつかう
from PIL import ImageGrab
screenshot_regon = ImageGrab.grab(bbox=(0,0,300,400))
screenshot_regon.save("screenshot_.pillow.png")
OpenCVをつかう
PIL(Python Image Library) で取得したスクリーンショットをNumpy配列に変換し、OpneCVなどの他のライブラリで画像処理を可能にしています。
screenshot_npには、画像のピクセルデータが格納されます。
cv2.cvtColor()で画像の色空間の変換を行っています。RGBは一般に多くのライブラリで使用される色順番です。
cropped_image = screenshot_rgb[0:400, 0:300]は、Numpyのスライシング機能を利用して、行0~399 列0~299を指定しています。
import cv2
import numpy as np
from PIL import ImageGrab
# スクリーンショットを撮る
screenshot = ImageGrab.grab()
# NumPy配列に変換
screenshot_np = np.array(screenshot)
# BGRからRGBに変換
screenshot_rgb = cv2.cvtColor(screenshot_np, cv2.COLOR_BGR2RGB)
# 特定の範囲を指定して切り取る
cropped_image = screenshot_rgb[0:400, 0:300]
# スクリーンショットを保存
cv2.imwrite("screenshot_opencv.png", cropped_image)