Python Opencv:使用cv2.videocapture.set(CAP_PROP_POS_MSEC/CAP_PROP_POS_FRAMES)获取错误的特定帧

Python Opencv:使用cv2.videocapture.set(CAP_PROP_POS_MSEC/CAP_PROP_POS_FRAMES)获取错误的特定帧,python,opencv,Python,Opencv,我遇到了一个错误。我无法使用python 2.7.3中的opencv 3.4.2在.mov视频中使用cap.set(cap_PROP_POS_MSEC/cap_PROP_POS_FRAMES)获取特定帧。是否有人在.mov视频中遇到这种情况 我的系统的管道是用cap.read()从第一帧到最后通过某种算法检测视频中的关键帧,然后保存我自己统计的关键帧id。最后,我使用cap.set(cap_PROP_POS_MSEC/cap_PROP_POS_frames)根据指定的关键帧id提取视频中的特定帧

我遇到了一个错误。我无法使用python 2.7.3中的opencv 3.4.2在.mov视频中使用
cap.set(cap_PROP_POS_MSEC/cap_PROP_POS_FRAMES)
获取特定帧。是否有人在.mov视频中遇到这种情况

我的系统的管道是用cap.read()从第一帧到最后通过某种算法检测视频中的关键帧,然后保存我自己统计的关键帧id。最后,我使用cap.set(cap_PROP_POS_MSEC/cap_PROP_POS_frames)根据指定的关键帧id提取视频中的特定帧。 代码如下:

def detectkeyframe():
cap=cv2.视频捕获(视频路径)
帧id=0
关键帧ID=[]
尽管如此:
ret,frame=cap.read()
如果不是ret:
打破
如果是关键帧:
关键帧id.append(帧id)
cv2.imwrite(帧)#保存以进行比较
帧id+=1
def转储关键帧(关键帧ID):
cap=cv2.视频捕获(视频路径)
对于关键帧帧id中的帧id:
封盖套件(封盖道具位置框架、框架id)
#cap.set(cap_PROP_POS_MSEC,timeofframe_id)#它也没用
ret,frame=cap.read()
cv2.imwrite(帧)
两个函数保存的帧不同,来自
dumpkeyframe()
的帧始终位于来自
detectkeyframe()的帧前面
有人告诉我哪里错了吗?
我发现了一些其他人遇到的类似问题: