Ошибки и предупреждения с GStreamer они подрывают мой вывод? - PullRequest
0 голосов
/ 09 января 2019

Я использую скрипт Python3 для разделения видеоклипов (.mp4) на кадры (.png изображения). Для этого я использую методы opencv (cv2).

import cv2
import os

dataset_folder = 'Video-dataset/'
save_path = 'Video-dataset-images/'

if not os.path.exists(save_path):
    os.mkdir(save_path)

videos_list = os.listdir(dataset_folder)
video_ids = [re.findall("[0-9_]*", video)[0] for video in videos]

for video in video_ids:
    video_path = dataset_folder + video + ".mp4"
    save_name = save_path + video
    cap = cv2.VideoCapture(video_path)
    fps = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))
    fps_count = 0
    for i in range(fps):
        ret, frame = cap.read()
        if ret:
            cv2.imwrite(save_name+str(10000+fps_count)+'.png', frame)
            fps_count += 1

Я получаю фактические видеоклипы, разделенные на изображения, однако я получаю также следующие отголоски из сценария:

[INFO: 0] VIDEOIO: разрешенные бэкэнды (7, отсортированные по приоритету): FFMPEG (1000); GStreamer (990); V4L2 (980); CV_IMAGES (970); CV_MJPEG (960); Firewire (950); GPhoto2 (940)

(python3.6: 12757): GStreamer-CRITICAL **: 13: 40: 56.545: gst_element_make_from_uri: утверждение 'gst_uri_is_valid (uri)' не выполнено GStreamer: Ошибка при открытии корзины: нет элемента "Набор видеоданных"

(python3.6: 12757): GStreamer-CRITICAL **: 13: 40: 56.545: gst_element_get_state: утверждение 'GST_IS_ELEMENT (element)' не выполнено [ ПРЕДУПРЕЖДЕНИЕ: 0] VideoCapture (имя файла = набор видео-данных / 01.mp4) был создан без поддержка запрашиваемого backendID = 300

(python3.6: 12757): GStreamer-CRITICAL **: 13: 41: 18.943: gst_element_make_from_uri: утверждение 'gst_uri_is_valid (uri)' не выполнено GStreamer: Ошибка при открытии корзины: нет элемента "Набор видеоданных"

(python3.6: 12757): GStreamer-CRITICAL **: 13: 41: 18.943: gst_element_get_state: утверждение 'GST_IS_ELEMENT (element)' не выполнено [ ПРЕДУПРЕЖДЕНИЕ: 0] VideoCapture (имя файла = набор видео-данных / 03.mp4) был создан без поддержка запрашиваемого backendID = 300

(python3.6: 12757): GStreamer-CRITICAL **: 13: 41: 19.331: gst_element_make_from_uri: утверждение 'gst_uri_is_valid (uri)' не выполнено GStreamer: Ошибка при открытии корзины: нет элемента "Набор видеоданных"

(python3.6: 12757): GStreamer-CRITICAL **: 13: 41: 19.331: gst_element_get_state: утверждение 'GST_IS_ELEMENT (element)' не выполнено [ ПРЕДУПРЕЖДЕНИЕ: 0] VideoCapture (имя файла = набор видео-данных / 10.mp4) был создан без поддержка запрашиваемого backendID = 300

(python3.6: 12757): GStreamer-CRITICAL **: 13: 41: 25.879: gst_element_make_from_uri: утверждение 'gst_uri_is_valid (uri)' не выполнено GStreamer: Ошибка при открытии корзины: нет элемента "Набор видеоданных"

(python3.6: 12757): GStreamer-CRITICAL **: 13: 41: 25.879: gst_element_get_state: утверждение 'GST_IS_ELEMENT (element)' не выполнено [ ПРЕДУПРЕЖДЕНИЕ: 0] VideoCapture (имя файла = набор видео-данных / 15.mp4) был создан без поддержка запрашиваемого backendID = 300

(python3.6: 12757): GStreamer-CRITICAL **: 13: 41: 31.485: gst_element_make_from_uri: утверждение 'gst_uri_is_valid (uri)' не выполнено GStreamer: Ошибка при открытии корзины: нет элемента "Набор видеоданных"

(python3.6: 12757): GStreamer-CRITICAL **: 13: 41: 31.485: gst_element_get_state: утверждение 'GST_IS_ELEMENT (element)' не выполнено [ ПРЕДУПРЕЖДЕНИЕ: 0] VideoCapture (имя файла = набор видео-данных / 27.mp4) был создан без поддержка запрашиваемого backendID = 300

(python3.6: 12757): GStreamer-CRITICAL **: 13: 41: 38.932: gst_element_make_from_uri: утверждение 'gst_uri_is_valid (uri)' не выполнено GStreamer: Ошибка при открытии корзины: нет элемента "Набор видеоданных"

(python3.6: 12757): GStreamer-CRITICAL **: 13: 41: 38.932: gst_element_get_state: утверждение 'GST_IS_ELEMENT (element)' не выполнено [ ПРЕДУПРЕЖДЕНИЕ: 0] VideoCapture (имя файла = набор видео-данных / 34.mp4) был создан без поддержка запрашиваемого backendID = 300

1 Ответ

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

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

video_ids = [re.findall("[0-9_]*", video)[0] for video in videos]

Более того, эти видео имеют расширение .avi, которое я исключаю из цикла.

...