- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
OpenCV tutorials-python中给出的方法在处理上有一些延迟,就像以0.5速度播放视频,你能推荐其他任何可以忽略不计地获得光流特征(位移矢量场)的方法吗延迟?
import cv2
import numpy as np
cap = cv2.VideoCapture("vtest.avi")
ret, frame1 = cap.read()
prvs = cv2.cvtColor(frame1,cv2.COLOR_BGR2GRAY)
hsv = np.zeros_like(frame1)
hsv[...,1] = 255
while(1):
ret, frame2 = cap.read()
next = cv2.cvtColor(frame2,cv2.COLOR_BGR2GRAY)
flow = cv2.calcOpticalFlowFarneback(prvs,next, None, 0.5, 3, 15, 3, 5, 1.2, 0)
mag, ang = cv2.cartToPolar(flow[...,0], flow[...,1])
hsv[...,0] = ang*180/np.pi/2
hsv[...,2] = cv2.normalize(mag,None,0,255,cv2.NORM_MINMAX)
rgb = cv2.cvtColor(hsv,cv2.COLOR_HSV2BGR)
cv2.imshow('frame2',rgb)
k = cv2.waitKey(30) & 0xff
if k == 27:
break
elif k == ord('s'):
cv2.imwrite('opticalfb.png',frame2)
cv2.imwrite('opticalhsv.png',rgb)
prvs = next
cap.release()
cv2.destroyAllWindows()
最佳答案
首先,您在代码中使用的方法不是 Lucas-Kanade。您正在使用 calcOpticalFlowFarneback
函数,即 Farneback运动估计方法。
总的来说,光流是一个相当重的算法,这真的取决于你的需要。您主要有两种类型的方法 - 稀疏和密集:
calcOpticalFlowFarneback
是一个密集算法,这意味着它生成一个流矩阵为你的框架的大小,它实际上计算了每一个的流量像素。 calcOpticalFlowPyrLK
(Lucas-Kanade) 方法是一种稀疏方法,只采用指定的像素数并计算其上的流量。如果你想要更好的性能,你可能想尝试 Lucas-Kanade 方法。
看看这个OpenCV Optical Flow Tutorial ,你有 Farneback 和 Lucas-Kanade 的两个例子。
在 Lucas-Kanade 示例中,他们使用了 goodFeaturesToTrack
方法生成的像素数量在这种运动估计算法中很适合跟踪。根据您的需要,您可能想使用此方法或自己定义一些像素。
请注意,您当然可以更改处理像素的数量,从而更改算法的处理时间。
您可能想要结帐 this answer同样,即使它适用于 DualTVL1 方法,它也可能适用于其他方法。
关于python - Lucas-Kanade 方法的光流?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37656713/
谁能解释一下这两者之间的关系? 我知道 LK 方法用于找到图像的光流与检测图像特征的 KLT 跟踪器。两者之间有什么关系吗? LK方法中是否使用了KLT tracker算法来寻找光流? 最佳答案 KL
我对图像对齐和跟踪感到困惑,因为它们在许多讲座中一起处理。 kanade Lucas 图像对齐与跟踪有任何关系吗?如果是,图像对齐如何用于跟踪? 最佳答案 Lucas-Kanade(又名 Kanade
OpenCV 能否用于使用 Lucas Kanade 方法计算密集光流?我知道 gpu/ocl 模块中的功能可以做到这一点 (gpu::PyrLKOpticalFlow::dense),但是是否有非
OpenCV tutorials-python中给出的方法在处理上有一些延迟,就像以0.5速度播放视频,你能推荐其他任何可以忽略不计地获得光流特征(位移矢量场)的方法吗延迟? import cv2 i
我最近一直在尝试实现用于图像对齐的 Lucas-Kanade 算法,如本文所述:https://www.ri.cmu.edu/pub_files/pub3/baker_simon_2004_1/bak
在时间复杂度的大 O 表示法中,在 OpenCV (C++) 中实现的 Lucas-Kanade 光流计算的复杂度是多少?你是如何推断出来的? 谢谢! 最佳答案 假设扭曲参数的数量是n,T中的像素数量
我一直在努力使用 C# 代码优化 Lucas-Lehmer 素数测试(是的,我正在用 Mersenne 素数做一些事情来计算完美数。我想知道当前代码是否有可能进一步提高速度.我用System.Nume
我正在尝试使用具有Haar级联分类的Lucas Kanade算法执行面部跟踪。 Lucas Kanade是成功的并且可以跟踪用户,但是不幸的是,一些用于检测点的良好功能浪费在了背景的角落。我希望利用H
我正在编写一个代码,我必须找到我感兴趣的所有角点的轨迹。因此,同样,我使用了 LKPyr 光流,它使用前一个图像的角点并找到它们在当前图像中。我逐帧使用光流,即帧 1 和 2,然后是 2 和 3。因此
SO上也有类似的问题,但是没有找到我想要的答案。我需要实现强大的光流以跟踪(检测到的)面部特征。我使用 goodFeaturesToTrack/SURF(我还没有决定哪个最好)来获取初始功能。 我的问
我正在研究光流,基于 the lecture notes here和互联网上的一些示例,I wrote this Python code . 所有代码和示例图像也在那里。对于大约 4-5 个像素的小位
Lucas-Lehmer primality test测试质数以确定它们是否也是 Mersenne primes .瓶颈之一是计算 (s**2 − 2) % (2**p - 1) 时的模运算。 使用按
我目前正在编写一个 C++ 程序来查找 Mersenne 素数,利用 MS Win8.1 上的 ttmath api。我已经编写了 Lucas-Lehmer 算法,但无论我尝试什么值,我总是得到一条无
我目前正在做一个对象跟踪的项目,使用过c++、opencv。我已经成功地使用 Farneback dense optical flow 来实现分割方法,例如 k 均值(使用每帧中的位移)。现在我想用
我尝试对 Mersenne 数 ( https://en.wikipedia.org/wiki/Lucas%E2%80%93Lehmer_primality_test ) 实现 Lucas–Lehme
我想根据从cvCalcOpticalFlowPyrLK的输出中得到的所有点绘制一个边界框。 我已经完成了对物体的跟踪,并能够绘制出表示流动方向的线。但是,在将所有要点分组并归类为对象时遇到问题。 我正
我想处理 Lucas Kanade 的 3D 图像并获得 3D 运动场。图片的大小为[NI, NJ, NK, NT] 其中NI, NJ, NK 是数字x、y 和 z 方向的体素数; NT 表示时间步数
我按照 opencv 教程中的步骤操作: http://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_video/py
作为大学项目,我正在使用 Lucas Kanade 方法编写光流脚本。虽然它运作良好,但有些事情我无法弄清楚。它在开始时使用几 MB 的内存,但该数量每秒都在迅速增加。当它为 480p 电影的 1 帧
根据我的研究,LK光流可以通过三种方式实现。 cvgoodfeaturestotrackcvfindcorner子像素calcOpticalFlowPyrLK 是否有可能使用颜色或使用轮廓来跟踪对象?
我是一名优秀的程序员,十分优秀!