Обнаружение AxisError: ось 1 выходит за границы массива измерения 0 - PullRequest
0 голосов
/ 10 февраля 2020

Я просто пытался сделать функцию распознавания тела, но я столкнулся с этой ошибкой оси.

import cv2
import time
import numpy as np

## Preparation for writing the ouput video
fourcc = cv2.VideoWriter_fourcc(*'XVID')
out = cv2.VideoWriter('output.avi',fourcc,20.0, (640,480))

##reading from the webcam 
cap = cv2.VideoCapture(0)

## Allow the system to sleep for 3 seconds before the webcam starts
time.sleep(3)
count = 0
background = 0

## Capture the background in range of 60
for i in range(60):
    ret,background = cap.read()
background = np.flip(background,axis=1)

AxisError                                 
Traceback (most recent call last) <ipython-input-6-28a19252eb8f> in <module>()
      for i in range(60):
           ret,background = cap.read()
 ---> background = np.flip(background,axis=1) AxisError: axis 1 is out of bounds for array of dimension 0

1 Ответ

0 голосов
/ 10 февраля 2020

Если вы получаете нулевое измерение, это, вероятно, означает, что захват не удался, поэтому у вас есть массив нулевого размера. Проверьте ret, чтобы убедиться, что он установлен на True:

# ...
ret,background = cap.read()

if not ret:
    raise RuntimeError("Couldn't capture an image")

background = np.flip(background,axis=1)

Вы также можете проверить, что захват действительно открыт, прежде чем пытаться захватить кадр:

# ...

if not cap.isOpened():
     raise RuntimeError("Capture is not open - is the webcam connected?")

# ... Read the frame, check ret, flip it, etc.

A примечание: я не уверен, что это специально, но вы также выполняете переворачивание только на последнем кадре, так как он находится за пределами -1 oop. Если вы собираетесь сделать это для каждого кадра, он должен быть с отступом. Вы выбрасываете первые 59 фоновых кадров, которые вы захватили.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...