美文网首页Python
[OpenCV-Python Tutorials]-Core o

[OpenCV-Python Tutorials]-Core o

作者: 六千宛 | 来源:发表于2021-08-06 11:33 被阅读0次

    Measuring Performance with OpenCV

    cv.getTickCount和cv.getTickFrequency

    t1 = cv.getTickCount()
    picture_message(scr)
    t2 = cv.getTickCount()
    time = 1000*(t2-t1)/cv.getTickFrequency()
    print('Time is %s ms'% time)
    getTickCount():用于返回从操作系统启动到当前所经的计时周期数,看名字也很好理解,get Tick Count(s)。
    getTickFrequency():用于返回CPU的频率。get Tick Frequency。这里的单位是秒,也就是一秒内重复的次数。
    
    所以剩下的就很清晰了:
    总次数/一秒内重复的次数 = 时间(s)
    1000 *总次数/一秒内重复的次数= 时间(ms)
    
    这个逻辑很清晰,没什么问题,但是这里有一个小坑,那就是C版本的cvGetTickFrequency()函数和C++版本的getTickFrequency()的单位不一样,前者以ms计算频率,后者以s为单位计算频率,所以如果使用C版本的cvGetTickFrequency()计算时间的话,应该是:
    总次数/一秒内重复的次数*1000 = 时间(ms)
    总次数/一秒内重复的次数*1000000 = 时间(s)
    

    Default Optimization in OpenCV

    # 检查是否启用了优化
    In [5]: cv.useOptimized()
    Out[5]: True
    In [6]: %timeit res = cv.medianBlur(img,49)
    10 loops, best of 3: 34.9 ms per loop
    # 关闭它
    In [7]: cv.setUseOptimized(False)
    In [8]: cv.useOptimized()
    Out[8]: False
    In [9]: %timeit res = cv.medianBlur(img,49)
    10 loops, best of 3: 64.1 ms per loop
    

    Measuring Performance in IPython

    In [35]: %测时 z = cv.countNonZero(img) 
    100000 loops, best of 3: 15.8 us per loop
    In [36]: %测时 z = np.count_nonzero(img) 
    1000 loops, best of 3: 370 us per loop
    

    注意 通常,OpenCV函数比Numpy函数要快。因此,对于相同的操作,首选OpenCV功能。但是,可能会有例外,尤其是当Numpy处理视图而不是副本时。

    相关文章

      网友评论

        本文标题:[OpenCV-Python Tutorials]-Core o

        本文链接:https://www.haomeiwen.com/subject/jkbmvltx.html