我是一个Python和OpenCV的新手。我正在处理OpenCV优化,我找到了Measuring Performance with OpenCV网站。我看到了cv2.getTickCount
和{
import cv2
cap = cv2.VideoCapture(0)
time1 = 0
while True:
e1 = cv2.getTickCount()
ret, frame = cap.read()
cv2.imshow("cam", frame)
e2 = cv2.getTickCount()
time1 = (e2 - e1) / cv2.getTickFrequency() + time1
print time1
k = cv2.waitKey(1) & 0xFF
if k == ord('q'):
break
同时,我尝试time.time()
来衡量性能:
elapsedTime
和{
[23.544186313842033, 29.413000106811523]
[23.588920849343307, 29.460999965667725]
[23.636793986833897, 29.51200008392334]
[23.669538024648435, 29.558000087738037]
[23.701628712445952, 29.605000019073486]
[23.737225731551163, 29.65499997138977]
[23.775527056696312, 29.703999996185303]
[23.82555789141547, 29.765000104904175]
[23.864218735017026, 29.813999891281128]
[23.901782255564854, 29.861000061035156]
我检查了两个输出,我手机的计时器在time.time()
的一侧。在
我的问题是:
cv2.getTickCount
和
cv2.getTickFrequency
与{
我不是很精通
cv2
,但我确实看到你的计时技巧有点不太靠谱。在查看您使用
cv2.getTickCount()
测量的代码部分:现在,看看您使用
^{pr2}$time.time()
测量的内容:你显然是在虐待可怜的ol'
time
在这里计算不同的东西。不幸的是,我无法验证实际的运行时,因为我没有OpenCV,但是,您可能希望将您的time
调用与getTickCount()
并驾齐驱。简而言之,使用类似的方法:重新评估你的结果,很可能
getTickCount()
会比time
得到更准确的结果,因为它的实现方式,我真的不知道。在至于你应该用哪一种呢?
cv2
的内部定时模块。在为什么?因为,在不做奇怪的声明的情况下,它是一个经过测试的模块,它可能是由比我们更精通
Python
的人开发的。你自己掌握时间可能是一件棘手的事情,给小错误留下了很大的空间,尤其是当你刚开始的时候。在所以,简而言之,使用
getTickCount()
,它是有原因的。在这将产生一致的结果:
实际上,我无法重现你的问题:
^{pr2}$品脱值相当一致:
你确定打印出来的数字与你在问题中显示的代码相符吗?在
相关问题 更多 >
编程相关推荐