我正在尝试使用imageio
API 读取帧。我有一个reader
作为对象,我使用imageio.get_reader(video_path,"ffmpeg")
. 我有以下帧阅读器功能
def read_frames(reader, frame_q, use_webcam):
if use_webcam:
time.sleep(15)
frame_cnt = 0
while True:
#if frame_cnt % 5 == 0:
# ret, frame = reader.read()
# cur_img = frame[:,:,::-1]
# frame_q.put(cur_img)
#else:
# ret, frame = reader.read()
ret, frame = reader.read()
cur_img = frame[:,:,::-1] # bgr to rgb from opencv reader
frame_q.put(cur_img)
if frame_q.qsize() > 100:
time.sleep(1)
else:
time.sleep(DELAY/1000.)
#print(cur_img.shape)
else:
#for cur_img in reader: # this is imageio reader, it uses rgb
nframes = reader.get_length() **#getting error here**
# if nframes == float('inf') or nframes ==float('-inf'):
# return float("nan")
# return int(nframes)
for ii in range(nframes):
while frame_q.qsize() > 500: # so that we dont use huge amounts of memory
time.sleep(1)
cur_img = reader.get_next_data()
frame_q.put(cur_img)
#shape = cur_img.shape
#noisy_img = np.uint8(cur_img.astype(np.float) + np.random.randn(*shape) * 20)
#frame_q.put(noisy_img)
if ii % 100 == 0:
print("%i / %i frames in queue" % (ii, nframes))
print("All %i frames in queue" % (nframes))
追溯:
Traceback (most recent call last):
File "/home/prashantb/anaconda3/envs/demo/lib/python3.6/multiprocessing/process.py", line 258, in _bootstrap
self.run()
File "/home/prashantb/anaconda3/envs/demo/lib/python3.6/multiprocessing/process.py", line 93, in run
self._target(*self._args, **self._kwargs)
File "multiprocess_detect_actions.py", line 67, in read_frames
for ii in range(nframes):
TypeError: 'float' object cannot be interpreted as an integer
我尝试float('inf')
按照代码中的注释使用,但在这种情况下没有用。我也尝试将浮点值转换为整数,但它显示相同的错误。我将不胜感激您对此的建议。谢谢你。