gpt4 book ai didi

python - 如何在opencv python中获取视频的前一帧

转载 作者:太空狗 更新时间:2023-10-30 02:53:51 25 4
gpt4 key购买 nike

我想根据不断增加的尺寸从视频中检测障碍物。为此,我首先在灰度图像上应用 SIFT 以获得当前帧的特征点。接下来将当前帧的特征点与上一帧进行比较,我想应用蛮力算法。为此,我想获得前一帧中的特征点。如何访问 opencv python 中的上一帧?以及当当前帧是视频的第一帧时如何避免访问上一帧?

下面是python写的获取当前帧特征点的代码。

import cv2
import numpy as np


cap = cv2.VideoCapture('video3.mov')

while(cap.isOpened()):

ret, frame = cap.read()

gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

#detect key feature points
sift = cv2.xfeatures2d.SIFT_create()
kp, des = sift.detectAndCompute(gray, None)

#draw key points detected
img=cv2.drawKeypoints(gray,kp,gray,flags=cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)

cv2.imshow("grayframe",img)

if cv2.waitKey(100) & 0xFF == ord('q'):
break

cap.release()
cv2.destroyAllWindows()

最佳答案

您还可以获取/设置从零开始的帧索引 (CAP_PROP_POS_FRAMES),如果您希望灵活地返回多个帧、与特定帧进行比较等,这可能很有用。请注意,这会重置下一个 read() 的位置,所以如果你真的只想要前一帧,根据其他答案将它存储在一个变量中可能更好。

next_frame = cap.get(cv2.CAP_PROP_POS_FRAMES)
current_frame = next_frame - 1
previous_frame = current_frame - 1

if previous_frame >= 0:
cap.set(cv2.CAP_PROP_POS_FRAMES, previous_frame)
ret, frame = cap.read()

关于python - 如何在opencv python中获取视频的前一帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48025689/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com