Python 开始从特定帧读取视频
我已获得已保存视频的帧数Python 开始从特定帧读取视频,python,opencv,image-processing,hsv,Python,Opencv,Image Processing,Hsv,我已获得已保存视频的帧数 self.frame_count = self.capture.get(cv.CV_CAP_PROP_FRAME_COUNT) - 1 现在,我想从一个特定的帧计数开始读取一帧。我该怎么做 原因:我需要跟踪一个对象,并且我已经使用HSV图像分割找到了要跟踪的对象的位置。现在要跟踪它,我打算从那个特定的帧开始视频,并将跟踪窗口设置为对象的坐标 想要:它不应该是冗余的和计算密集型的 尝试以下操作: f=#将要开始的帧放在这里 自我捕获设置(CV\U CAP\U PROP\
self.frame_count = self.capture.get(cv.CV_CAP_PROP_FRAME_COUNT) - 1
现在,我想从一个特定的帧计数开始读取一帧。我该怎么做
原因:我需要跟踪一个对象,并且我已经使用HSV图像分割找到了要跟踪的对象的位置。现在要跟踪它,我打算从那个特定的帧开始视频,并将跟踪窗口设置为对象的坐标
想要:它不应该是冗余的和计算密集型的 尝试以下操作:
f=#将要开始的帧放在这里
自我捕获设置(CV\U CAP\U PROP\U POS\U框架,f)
当f
使用以下代码完成任务您使用的Opencv版本很旧。使用Opencv2
链接:
我希望这是您想要的代码。对于OpenCV Python的任何版本3和4,请遵循以下步骤-
import cv2
# suppose you want to start reading from frame no 500
frame_set_no = 500
cap = cv2.VideoCapture("full_path/cow.mp4")
# capture is set to the desired frame
cap.set(cv2.CAP_PROP_POS_FRAMES, frame_set_no)
while True:
ret, frame = cap.read()
cv2.imshow("Video", frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cv2.destroyAllWindows()
我有这样的想法,但这是太密集的计算。因为它需要读取“不需要的”帧,直到找到正确的帧。我想要一个最佳的方法。在使用
read()开始阅读之前,使用capture.Set(CV\u CAP\u PROP\u POS\u FRAMES,frame)设置下一个要捕获的帧
@tilaprimera我已经根据之前的回答修改了答案comment@tilaprimera刚刚看到你的编辑在评论队列中弹出,因为对原始答案的更改太大而被拒绝,所以我将在这里发布更改。更改了两行:self.capture.set(CV\u CAP\u PROP\u POS\u FRAMES,f)
和而f
@tilaprimera当编辑出现在审阅队列中时,我们看不到注释,因此我们不知道您和wolfrevo正在合作改进答案。这是一个小的编辑,但因为它改变了帖子的含义,它被归类为“彻底的改变”。)最好的解决方法是使用类似的服务或共享代码示例!我确实使用cv2接口。再次感谢您精心编写的代码。我要对我的代码进行大量编辑,以确定它是否真的有效。所以以后会有更多的更新。我也在使用python opencv2创建跟踪对象的代码。我对此有些怀疑。我可以知道您的电子邮件id以询问相关问题吗?我想你可以在这里提问,也可以在这里发帖。我自己就是一个傻瓜。:)
import cv2
# suppose you want to start reading from frame no 500
frame_set_no = 500
cap = cv2.VideoCapture("full_path/cow.mp4")
# capture is set to the desired frame
cap.set(cv2.CAP_PROP_POS_FRAMES, frame_set_no)
while True:
ret, frame = cap.read()
cv2.imshow("Video", frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cv2.destroyAllWindows()