我使用python来记录写入过程(从0到结尾),并使用opencv将写入视频转换为许多帧。但当观察结果时,我发现有时2-3帧的图片是相等的。我想在写入文件时只保留第一张相等的图片,并添加时间线。有专家能给我一些建议吗?以下是我的代码:
#cv2
import numpy as np
import cv2
from PIL import Image
def get_images_from_video(video_name, time_F):
video_images = []
vc = cv2.VideoCapture(video_name)
c = 1
#判斷是否開啟影片
if vc.isOpened():
rval, video_frame = vc.read()
else:
rval = False
#擷取視頻至結束
while rval:
rval, video_frame = vc.read()
#每隔幾幀進行擷取
if(c % time_F == 0):
video_images.append(video_frame)
c = c + 1
vc.release()
return video_images
#time_F越小,取樣張數越多
time_F = 24
#影片名稱
video_name = 'writingvideo2/11_0330吳恒基.mp4'
#numpy
#讀取影片並轉成圖片
video_images = get_images_from_video(video_name, time_F)
crop_img=[]
#顯示出所有擷取之圖片
for i in range(0,len(video_images)):
#i_str=str(i)
#cv2.imshow('windows',video_images[i])
x=50
y=150
w=1800
h=650
crop_img.append(video_images[i][y:y+h,x:x+w])
cv2.imshow("cropped", crop_img[i])
#correct write path
i_str=str(i)
filename='output2/image/11/'+i_str+'.png'
cv2.imwrite(filename, crop_img[i], [cv2.IMWRITE_JPEG_QUALITY, 90])
cv2.waitKey(100)
cv2.destroyAllWindows
所以我想要的是,如果它们相等,保留前一帧并丢弃当前照片
您需要使用某种度量来计算两个连续帧之间的相似性。这是一个研究得很好的问题,你可以通过阅读这个问题获得很多见解。 Image comparison - fast algorithm
但是请注意,从视频中删除帧会改变速度,从而改变视频的长度
相关问题 更多 >
编程相关推荐