这是我正在使用的一些代码,它应该成功返回视频的第一帧。我认为这里的相关位是第2:5行,第二位是最后一位,其中count = 2。
def define_bounds(video_file, threshold_value, index_value):
vidcap = cv2.VideoCapture(video_file)
count=0
while count <1:
success,color_img = vidcap.read()
blkwht_img = np.asarray(Image.fromarray(color_img).convert('L'))[index_value]
retval, final_img = cv2.threshold(blkwht_img, threshold_value, 200, cv2.ADAPTIVE_THRESH_GAUSSIAN_C)
for pixel_row in range(139,-1,-1):
if np.median(final_img[pixel_row,:]) <10:
silenced = pixel_row - 2
upmotion = pixel_row - 16
destination = pixel_row - 44
downmotion = pixel_row - 31
break
count=2
return silenced, upmotion, destination, downmotion
我确实知道vidcap.read()成功读取从第一个到最后一个的帧(我用其他代码来确定这个,它只是从头到尾导出所有帧)。
但上面的代码在读取第一帧时失败了...它读取了一些帧,但我不知道哪一帧。当我手动输入第一帧,第二帧和最后一帧时,它不是第一个,第二个或最后一个,因为函数的输出不匹配。
我的代码中有什么愚蠢的错误吗?另外:我正确使用休息吗?我还是新手。谢谢!