Python делает скриншот экрана и сохраняет его в буфер - PullRequest
0 голосов
/ 17 декабря 2018

Я хочу сделать снимок экрана и сохранить его в буфере как фотографию (X.jpg), а позже я могу использовать cv2(opencv) для чтения того же изображения из буфера.
Я действую какследуйте:

Редактировать Мой код:

from PIL import ImageGrab
from io import BytesIO

ii = ImageGrab.grab()
with BytesIO() as output:
    ii.save(output,format="JPEG")# This line has an error 
    cam = output.getvalue()
result, frame = cv2.imencode('.jpg', cam, encode_param)

Я получаю это Ошибки:

TypeError: img is not a numpy array, neither a scalar

спасибо

1 Ответ

0 голосов
/ 18 декабря 2018

Вот демо:

from PIL import ImageGrab
from io import BytesIO
import numpy as np 
import cv2

## (1) Grab the rgb frame as PIL.Image
ii = ImageGrab.grab()
print(type(ii)) # <class 'PIL.Image.Image'>

## (2) Convert PIL.Image to np.array 
rgb = np.array(ii)
print(type(ii)) # <class 'numpy.ndarray'>

## (3) Convert into BGR and display 
bgr = cv2.cvtColor(rgb, cv2.COLOR_RGB2BGR)
cv2.imshow("frame", bgr)
cv2.waitKey()
cv2.destroyAllWindows()
...