2017-01-11 2 views
0

Отказ от ответственности: у меня нет опыта в компьютерном зрении или обработке изображений, но мне нужно обработать видео для получения данных для машинного обучения.Moviepy: Как читать фильмы с серой рамкой?

Я хочу прочитать фильм с оттенками серого (я сделал это с использованием изображений в оттенках серого) - кадр за кадром с использованием видео. Для дальнейшей обработки мне нужны рамки с серой шкалой. Вот мой код:

clip = VideoFileClip('movie.mp4') 
count =1 
for frames in clip.iter_frames(): 
    print frames.shape 
    count+=1 
print count 

Фрейм формы вышли быть (360L, 480L, 3L) в то время как я ожидал (360L, 480L). И это меня озадачивает. Есть ли способ получить «ожидаемую» форму? Идеи OpenCV на Python тоже могут работать, но я бы предпочел использовать кинематографию.

+0

Это просто возвращается вам массив пикселей? то есть у вас 360 высот, 480 ширины и 3 канала (возможно, RGB) – EdChum

+0

@EdChum: Да, он возвращает RGB-кадры. Но мне нужны рамки с серой шкалой – GKS

+0

Я не знаю о фильме, но вы можете преобразовать RGB в HSL и взять только компонент «L» (яркость) с чем-то вроде https://docs.python.org/2/library/ colorsys.html. Если ваш кадр находится в массиве numpy, вы также можете использовать: http://stackoverflow.com/questions/15278323/converting-image-from-rgb-to-hsv-color-space. Наконец, если изображения уже оттенки серого, возможно, одно и то же значение находится в 3-х каналах. В этом случае вы можете просто взять первый канал и проигнорировать остальные (проверьте, какие значения фактически содержат данные). – jjmontes

ответ

0

Если ваш имеем дело с видео и изображениями, OpenCV является вашим другом:

import cv2 
from moviepy.editor import VideoFileClip 

clip = VideoFileClip('movie.mp4') 
count =1 
for frames in clip.iter_frames(): 
    gray_frames = cv2.cvtColor(frames, cv2.COLOR_RGB2GRAY) 
    print frames.shape 
    print gray_frames.shape 
    count+=1 
print count 
Смежные вопросы