为了账号安全,请及时绑定邮箱和手机立即绑定

我怎样才能让 findcontour 变慢?

我怎样才能让 findcontour 变慢?

30秒到达战场 2021-11-09 20:27:21
我想找到一个物体的速度。首先,我测量球经过那里的两点以及它们的差异以找到长度。还有时间..最后我把长度除以时间我得到速度但是..我的问题是计算机非常快速地在视频中找到轮廓。当我使用 time.sleep() 时,视频中开始出现延迟。我不想这样。我只想要“寻找轮廓速度减慢”而没有任何 fps 或滞后(我不知道)改变for c in cnts :    M = cv2.moments(c)    cX = int(M["m10"] / M["m00"])    cY = int(M["m01"] / M["m00"])    x, y, w, h = cv2.boundingRect(c)    cv2.rectangle(video, (x, y), (x + w, y + h), (0, 255, 0), 2)    cv2.circle(video, (cX,cY),7,(255,255,255),-1)if cX != cX1:    start1 = time.time()    Lenght = math.sqrt(abs(cX-cX1)*abs(cX-cX1)+abs(cY-cY1)*abs(cY-cY1))    Time = start1-end1    Velocity = Lenght/Time    print(Velocity)    end1 = time.time()cX1 = cXcY1 = cY
查看完整描述

2 回答

?
繁华开满天机

TA贡献1816条经验 获得超4个赞

您是否可以获得帧时间并根据此值测量帧之间的速度:


_, frame1 = video.read()

t1 = video.get(cv2.CAP_PROP_POS_MSEC)

_, frame2 = video.read()

t2 = video.get(cv2.CAP_PROP_POS_MSEC)

diff_sec = (t2 - t1) / 1000.0


查看完整回答
反对 回复 2021-11-09
?
森栏

TA贡献1810条经验 获得超5个赞

好的,我用这个代码修复了


for i in range(0,1):

    start2 = time.time()

    if start2-end2>1.0 :

        cnts,_ = cv2.findContours(video, cv2.RETR_TREE , cv2.CHAIN_APPROX_SIMPLE)

    end2 = time.time()


查看完整回答
反对 回复 2021-11-09
  • 2 回答
  • 0 关注
  • 141 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信