Я управляю нейронной сетью на прямом потоке скриншотов размером 800x600. Так как я получал только 3 кадра в секунду, я выполнил некоторые действия по устранению неполадок и выяснил, сколько приблизительно времени тратится на каждый шаг:
- Снимок экрана: 12 мс
- Обработка изображения: 280 мс
- Обнаружение объекта и визуализация коробки: 16 мс
- Отображение изображения: 0,5 мс
Я использую mss для снятия снимков экрана ( документация ).
Вот код без части обнаружения объекта:
import numpy as np
import cv2
from PIL import Image
import mss
monitor = {"top": 40, "left": 0, "width": 800, "height": 600}
with mss.mss() as sct:
while True:
# # Screenshot:
image = sct.grab(monitor)
# # Image processing:
image = Image.frombytes("RGB", image.size, image.bgra, "raw", "RGBX")
(im_width, im_height) = image.size
image_np = np.array(image.getdata()).reshape((im_height, im_width, 3)).astype(np.uint8)
# # Object detection and box visualisation:
# ...
# # Displaying image:
cv2.imshow("Object Detection", image_np)
Есть идеи, как мне сделать это быстрее?