2016-12-22 4 views
1

Я хочу сделать скриншоты конкретной области моего экрана с помощью ImageGrab и преобразовать изображение в массив numpy для анализа с помощью OpenCV. Однако я наткнулся на ошибку типа данных src 17, которую я продолжаю получать только случайным образом, когда меняю параметры функции захвата. Например, когда параметры: (10, 10, 50, 40), он печатает обычный массив numpy, который затем может быть преобразован в оттенки серого с opencv, однако с другими параметрами, такими как: (100, 100, 100, 100) он продолжает давать src data type = 17 is not supported error. Когда я пытаюсь распечатать массив numpy, он также не отображает массив, а только место в памяти с размером 0x0, например: <PIL.Image.Image image mode=RGB size=0x0 at 0x532C570> Ниже приведен пример кода. Цените это, если кто-нибудь может помочь мне объяснить, почему это происходит, и, возможно, предложить исправить это.src data type 17 не поддерживается ошибка с OpenCV Python

import cv2 
import numpy as np 
from PIL import ImageGrab 

while True: 
    img = ImageGrab.grab(bbox=(10, 10, 50, 40)) 
    img_np = np.array(img) 
    print img_np 
    #img_grayscaled = cv2.cvtColor(img_np, cv2.COLOR_BGR2GRAY) 

ответ

1

ограничивающая окно PIL является 4-кортеж, определяющий левый, верхний, правый и нижний пиксельные координаты см docs for getbbox. Таким образом, (100, 100, 100, 100) не дает правильного изображения (нулевая высота и ширина).

+0

О, черт побери, даже не осознал этого, считая, что ширина и высота равны количеству пикселей, которые перемещаются к оси x и y. Спасибо за объяснение. – user21398