Python 优化电影条码
在reddit上看到一些东西后,我最近一直在制作电影条形码生成器。我不熟悉python中的图像和视频,所以请原谅我代码中的任何愚蠢错误。我面临的问题是,我的代码需要与电影运行时一样长的时间来生成条形码。据我所知,代码非常简单,遍历电影的每一帧,取中间的像素列并将其附加到最终图像上 我这样做是为了在代码运行时,我们可以看到最终产品像进度条一样被制作出来 由于我也想为其他电影制作这些条形码,我想知道是否有可能使这些代码更有效。我不想每次决定制作条形码都要等2个小时,我认为这将是优化代码的一个有趣的练习 我认为它如此缓慢的原因是,当我调用Python 优化电影条码,python,python-3.x,opencv,image-processing,video,Python,Python 3.x,Opencv,Image Processing,Video,在reddit上看到一些东西后,我最近一直在制作电影条形码生成器。我不熟悉python中的图像和视频,所以请原谅我代码中的任何愚蠢错误。我面临的问题是,我的代码需要与电影运行时一样长的时间来生成条形码。据我所知,代码非常简单,遍历电影的每一帧,取中间的像素列并将其附加到最终图像上 我这样做是为了在代码运行时,我们可以看到最终产品像进度条一样被制作出来 由于我也想为其他电影制作这些条形码,我想知道是否有可能使这些代码更有效。我不想每次决定制作条形码都要等2个小时,我认为这将是优化代码的一个有趣的练
cap.read()
时,CV2必须解码每一帧。有没有办法绕过这个问题?那样的话,我就只需要解码我为最终图像采样的帧。我还试图实现某种并行处理,但我对此一无所知,而且在线复制代码也不顺利
以下是完整的代码:
import numpy as np
from os import system
cap = cv2.VideoCapture("PATH OF MOVIE")
width_center = int((cap.get(cv2.CAP_PROP_FRAME_WIDTH)/2))
height = cap.get(cv2.CAP_PROP_FRAME_HEIGHT)
img = np.zeros((int(height),1,3),np.uint8)
frame_count = 0
try:
total_frames = cap.get(cv2.CAP_PROP_FRAME_COUNT)
except:
total_frames = 1
print("Frames percentage is broken, unable to get total frame count")
while(1):
ret, frame = cap.read()
if cv2.waitKey(1) & 0xFF == ord('q') or ret==False :
cap.release()
cv2.destroyAllWindows()
break
if frame_count % int(total_frames/2000) == 0:
img = cv2.hconcat([img, cv2.resize(frame, (1,int(height)))])
if int(frame_count/total_frames*100) != int((frame_count-1)/total_frames*100):
print(str(int(frame_count/total_frames*100))+" % Done!")
cv2.imshow('frame',img)
frame_count += 1
cv2.imwrite("PATH OF IMAGE", img)
print("Image created!")
提前谢谢你的帮助