OpenCV матрица рамки заполнена нулями - PullRequest
0 голосов
/ 22 января 2019

Я недавно загрузил openCV 3.4.5 в Windows с Python 3.5.4.

Я запустил этот базовый фрагмент кода, чтобы показать видео:

import cv2

cap = cv2.VideoCapture(0)

while(True):
    # Capture frame-by-frame
    ret, frame = cap.read()
    print(frame)

    # Display the resulting frame
    cv2.imshow('frame', frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# When everything done, release the capture
cap.release()
cv2.destroyAllWindows()

Видео показывается свеб-камера моего ноутбука.
Обратите внимание, что я печатаю каждый кадр из видео, но в выводе моей консоли каждый массив numpy заполнен нулями.Я не понимаю, почему это так, так как видео работает

пример вывода консоли

[[[0 0 0]
  [0 0 0]
  [0 0 0]
  ...
  [0 0 0]
  [0 0 0]
  [0 0 0]]

 [[0 0 0]
  [0 0 0]
  [0 0 0]
  ...
  [0 0 0]
  [0 0 0]
  [0 0 0]]

 [[0 0 0]
  [0 0 0]
  [0 0 0]
  ...
  [0 0 0]
  [0 0 0]
  [0 0 0]]

 ...

1 Ответ

0 голосов
/ 22 января 2019

Из Opencv документов метод read для VideoCapture возвращает кортеж (ret, frame).frame будет True, если чтение этого frame прошло успешно, и False в противном случае.Таким образом, чтобы уточнить, что происходит, когда вы запускаете свой код, вот что вы должны сделать:

  • измените оператор печати в цикле while на print(ret), затем запустите ваш кодснова
    • , если значения ret в основном или полностью True, то считывание каждого frame обычно успешно.Это означает, что массивы frame на самом деле не пусты, они просто почему-то появляются в вашей распечатке (например, все значения по краям 0, но в той части, которая удаляется, есть ненулевые значения)по точкам ...).Если вы затем измените оператор печати на print(frame.sum()), вы сможете легко увидеть, что в каждом frame
    • есть по крайней мере несколько ненулевых значений, если значения ret в основном False,тогда это означает, что считывание большинства Frame s не выполняется, что, в свою очередь, означает, что пустые массивы являются ожидаемым значением.Если imshow действительно все еще отображает изображения в этом случае, это означает, что происходит что-то действительно, действительно странное.
...