Python cv2 возвращает numpy массив другого размера, чем указано - PullRequest
0 голосов
/ 03 февраля 2020

У меня есть небольшая программа, в которой я хочу транслировать изображения с камеры моего ноутбука и обрабатывать их (здесь неважно), а затем выводить их на мой экран. Мой текущий код выглядит следующим образом:

Python 3.7.1 / cv2 4.1.0

import cv2 as cv
import numpy as np

cap = cv.VideoCapture(0)
cap.set(cv.CAP_PROP_FPS, 20)
cap.set(cv.CAP_PROP_FRAME_WIDTH, 320)
cap.set(cv.CAP_PROP_FRAME_HEIGHT, 200)

while True:
    frame_created, frame = cap.read()

    print(frame.shape)  # writes (360, 640, 3)

    cv.imshow('frame', self.frame)
    key = cv.waitKey(5) & 0xFF
    if key == 27:
        break

Теперь мне интересно, почему возвращенный кадр имеет форму, показанную выше, так как я указал другой кадр высота и ширина рамы с cap.set()? Я что-то здесь упускаю или это ошибка в текущей версии? Выходной кадр также имеет «неправильную» форму.

1 Ответ

1 голос
/ 03 февраля 2020

Если ваша камера изначально не поддерживает 300x200, запрос на нее только приблизит вас. Документы OpenCV могут быть более понятны, вместо того, чтобы дать вам понять, что

Эффективное поведение зависит от драйвера устройства и API Backend

означает.

См. здесь , чтобы узнать немного больше.

...