Я не использовал его, но если вы посмотрите документацию , он имеет необязательный параметр для возврата обнаруженного кадра:
- параметр return_detected_frame (необязательно)) : Этот параметр позволяет возвращать обнаруженный кадр в виде массива Numpy для каждого кадра, секунды и минуты обнаруженного видео. Возвращенный массив Numpy будет проанализирован в соответствующие функции per_frame_function, per_second_function и per_minute_function (см. Подробности ниже)
, а затем вам также необходимо передать функцию в этот параметр:
- параметр per_frame_function (необязательно): Этот параметр позволяет вам анализировать имя функции, которую вы определяете. Затем для каждого обнаруженного кадра видео функция будет проанализирована в параметре, и аналитические данные видео будут проанализированы в функции. Возвращенные данные можно визуализировать или сохранить в базе данных NoSQL для дальнейшей обработки и визуализации.
Новая функция должна выглядеть так же, как в документации:
def forFrame(frame_number, output_array, output_count, returned_frame):
plt.clf()
this_colors = []
labels = []
sizes = []
counter = 0
for eachItem in output_count:
counter += 1
labels.append(eachItem + " = " + str(output_count[eachItem]))
sizes.append(output_count[eachItem])
this_colors.append(color_index[eachItem])
global resized
if (resized == False):
manager = plt.get_current_fig_manager()
manager.resize(width=1000, height=500)
resized = True
plt.subplot(1, 2, 1)
plt.title("Frame : " + str(frame_number))
plt.axis("off")
plt.imshow(returned_frame, interpolation="none")
plt.subplot(1, 2, 2)
plt.title("Analysis: " + str(frame_number))
plt.pie(sizes, labels=labels, colors=this_colors, shadow=True, startangle=140, autopct="%1.1f%%")
plt.pause(0.01)
Это будеттакже нанесите другие аналитические данные, но вы можете просто построить фрейм.
Ваш код должен будет измениться так, чтобы он выглядел следующим образом:
video_path = detector.detectObjectsFromVideo(camera_input=cap,
output_file_path=os.path.join(execution_path, "captured")
, frames_per_second=5, log_progress=True, detection_timeout=120,
return_detected_frame=True, per_frame_function=forFrame)
Обратите внимание на два последних аргумента.
Надеюсь, это поможет вам