<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>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # OpenCV-圖像處理和計算機視覺 OpenCV是Intel公司開發的開源計算機視覺庫。它用C語言高速地實現了許多圖像處理和計算機視覺方面的通用算法,并且通過SWIG提供了Python的調用接口。本章介紹用Python調用OpenCV庫,實現一些簡單的圖像處理和計算機視覺算法。 OpenCV提供的Python調用接口和C語言的API基本上是一致的,這個接口對于動態語言Python來說有些累贅。不過由于Python程序和C語言程序差別不大,用Python調用OpenCV,能夠幫助我們測試API函數和快速實現算法。 ## 讀寫圖像和視頻文件 讓我們從顯示一幅圖像開始進入OpenCV: ``` # -*- coding: utf-8 -*- from opencv.highgui import * import sys img = cvLoadImage( sys.argv[1] ) cvNamedWindow("Example1", CV_WINDOW_AUTOSIZE) cvShowImage("Example1", img) cvWaitKey(0) ``` OpenCV的庫可以分為5個主要組成部分,下圖顯示了其中的4個: ![](https://box.kancloud.cn/2016-03-19_56ed1badf1c79.png) OpenCV的5個主要組成部分 * **CV** : 包括了基本的圖像處理和高級的計算機視覺算法,在Python中,opencv.cv模塊與之對應 * **ML** : 機器學習庫,包括許多統計分類器,opencv.ml模塊與之對應 * **HighGUI** : 提供各種圖像、視頻、數據的輸入輸出和簡單的GUI開發,opencv.highgui模塊與之對應 * **CXCore** : 上述三個庫都是以CXCore提供的基本數據結構和函數為基礎,主模塊opencv與之對應 * **CvAux** : 包括一些實驗性的算法 顯示圖像的例子中,只用到數據輸入和界面顯示兩個功能,他們都在highgui庫中,因此需要從庫中載入這些函數,由于opencv的所有API函數都以cv開頭,因此不怕他們和別的庫命名沖突: ``` from opencv.highgui import * ``` 下面調用cvLoadImage從文件中讀入圖片信息,其返回的是一個opencv.cv.cvMat對象,cvMat是OpenCV中描述矩陣(或者說多維數組)的數據結構,許多圖像處理操作都是針對cvMat對象進行的: ``` img = cvLoadImage( sys.argv[1] ) ``` 下面調用cvNamedWindow函數創建一個窗口,其名字為"Example1",大小設置為CV_WINDOW_AUTOSIZE,表示它隨著其內容自動改變大小: ``` cvNamedWindow("Example1", CV_WINDOW_AUTOSIZE) ``` 然后調用cvShowImage函數,將img表示的圖像顯示在"Example1"窗口。由于OpenCV庫大部分代碼都是使用C語言編寫的,因此它采用“對象.方法()”的方式,而是使用函數的方式。而且highgui提供的僅是簡便的GUI功能,因此這里直接用字符串"Example1"表示要顯示圖片的窗口,而不是用某個表示窗口的對象。 最后調用cvWaitKey,等待用戶按鍵輸入,如果其參數為正值,那么等待指定的毫秒數后繼續運行;如果其值為0,表示永久等待: ``` cvWaitKey(0) ``` 如果在IPython中運行上面程序之后,IPython等待用戶按鍵輸入,按任意鍵之后,IPython進入可輸入命令的狀態,并且顯示圖片的窗口并沒有關閉,這樣就可以在IPython中直接輸入opencv的函數調用,查看其結果。下面的先從opencv.cv載入所有圖像處理相關的函數, ``` >>> from opencv.cv import * ``` 然后調用cvSmooth函數對img進行高斯模糊,cvSmooth函數的第一個參數指定原始圖像,第二個參數指定輸出圖像,這里都用img,因此高斯模糊的結果覆蓋原始圖像,第三個參數指定采用高斯模糊算法,第四個參數是高斯模糊的參數:以像素點為單位的模糊范圍: ``` >>> cvSmooth(img, img, CV_GAUSSIAN, 11) ``` 最后調用cvShowImage更新窗口中的圖片: ``` >>> cvShowImage("Example1", img) ``` 下面是圖像處理的結果,左圖為原始圖像,右圖為模糊后的圖像: ![](https://box.kancloud.cn/2016-03-19_56ed1bae3adef.png) 調用cvSmooth對圖像進行高斯模糊處理
                  <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>

                              哎呀哎呀视频在线观看