作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我想根据不断增加的尺寸从视频中检测障碍物。为此,我首先在灰度图像上应用 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/
有时,当我调用 ipdb 时,我知道我想要成为跟踪设置上方的框架。我认为这就是 API 公开 frame 参数的原因(如 the documentation 中所述)。 所以这是函数: import
我是一名优秀的程序员,十分优秀!