Если у меня есть клип и мне нужно обработать каждый кадр, а затем показать кадры (отобразить их).Я нашел много примеров того, как вы можете получить кадры клипа, а затем сохранить (записать) их как новое видео.Однако я попытался выполнить итерацию для каждого кадра, а затем показать каждое обработанное изображение, но Matplotlib показывает только одно изображение после завершения цикла.
clip = VideoFileClip(filename)
for frame in clip.iter_frames():
new_frame= Fun(frame)
plt.imshow(new_frame)
обновление кадра в matplotlib с предварительным просмотром с камеры в реальном времени
Я нашел эту ссылку, но она использует кадры с камеры, мне нужно отображать изображения процессов по мере их поступления от Fun по одному.Поэтому я не хочу сохранять его или создавать список обработанных кадров, а затем показывать их, мне нужно сделать это один за другим.
Я использовал второй метод из ссылки, но он печатает только 0, 0 и показывает только первый кадр!Кажется, он не может изменить индекс, чтобы перейти к следующему кадру!
import cv2
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
index =0
inF=[]
for frames in clip.iter_frames():
inF.append(frames)
global inF
def grab_frame():
print(index)
frame = inF[index]
return cv2.cvtColor(frame,cv2.COLOR_BGR2RGB)
#Initiate the two cameras
cap1 = clip
#create two subplots
ax1 = plt.subplot(1,2,1)
#create two image plots
im1 = ax1.imshow(grab_frame())
def update(i):
global index
im1.set_data(grab_frame())
index+=1
ani = FuncAnimation(plt.gcf(), update, interval=10)
plt.show()
Не могли бы вы мне помочь?Любой намек?
Спасибо