<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                使用工具Python3.5 使用包cv2,numpy,time,profile 涉及函數 cv2.getTickCount,cv2.getTickFrequency 1.使用OpenCV檢測程序效率 cv2.getTickCount函數返回從參考點到這個函數被執行的時鐘數。在一個函數執行前后都調用它,可以得到這個函數的執行時間。 cv2.getTickFrequency返回時鐘頻率,或者說每秒鐘的時鐘數 例,窗口大小不同(5,7,9)的核函數來做中值濾波,查看一個函數運行了多少秒 ~~~ import cv2 import numpy as np img1 = cv2.imread('45.jpg') e1 = cv2.getTickCount() for i in range(5,49,2): img1 = cv2.medianBlur(img1,i) e2 = cv2.getTickCount() time = (e2-e1)/cv2.getTickFrequency() print(time) ~~~ python中time模塊也可以實現,調用的函數是time.time() 2.OpenCV中的默認優化 cv2.useOptimized()來查看優化是否被開啟,cv2.setUesOptimized()來開啟優化。 ~~~ import cv2 import numpy as np # check if optimization is enabled In [5]: cv2.useOptimized() Out[5]: True In [6]: %timeit res = cv2.medianBlur(img,49) 10 loops, best of 3: 34.9 ms per loop # Disable it In [7]: cv2.setUseOptimized(False) In [8]: cv2.useOptimized() Out[8]: False In [9]: %timeit res = cv2.medianBlur(img,49) 10 loops, best of 3: 64.1 ms per loop ~~~ 3.在IPython中檢測程序效率 有時你比兩個相似操作的效率時,你可以使用 IPython 為你提供的法命令%time。他會代碼好幾次從而得到一個準確的時間它也可以用來測單代碼的。 例如你知下同一個數學算用哪種式的代碼會執的更快嗎? x = 5; y = x??2 x = 5; y = x?x x = np.uint([5]); y = x?x y = np.squre(x) 我們可以在 IPython 的 Shell 中使用法命令找到答案。 ~~~ import cv2 import numpy as np In [10]: x =5 In [11]: %timeit y=x**2 10000000 loops, best of 3: 73 ns per loop In [12]: %timeit y=x*x 10000000 loops, best of 3: 58.3 ns per loop In [15]: z = np.uint8([5]) In [17]: %timeit y=z*z 1000000 loops, best of 3: 1.25 us per loop In [19]: %timeit y=np.square(z) 1000000 loops, best of 3: 1.16 us per loop ~~~ 竟然是第一種寫法它居然比 Nump 快了 20 倍。如果考到數組構建的 能到 100 倍的差。 注意:Python 的標算比 Nump 的標算快。對于僅包含一兩個 元素的操作 Python 標比 Numpy 的數組快。但是當數組稍微大一點時 Numpy 就會勝出了。 4.效率優化技術 有些技術和編程方法可以我們大的發揮 Python 和 Numpy 的威力。 我們僅僅提一下相關的你可以接查找更多細信息。我們 的的一點是先用簡單的方式實現你的算法結果正確當結 果正確后再使用上的提到的方法找到程序的瓶來優化它。 1. 盡免使用循環尤其雙層三層循環它們天生就是常慢的。 2. 算法中盡使用向操作因為 Numpy 和 OpenCV 對向操作 了優化。 3. 利用緩存一致性。 4. 沒有必的就不復制數組。使用圖來代替復制。數組復制是常浪源的。 就算了上優化如果你的程序是很慢或者大的不可免的 你你應嘗使用其他的包比如 Cython來加你的程序。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看