1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        Python中OpenCV的基礎知識

        共 5671字,需瀏覽 12分鐘

         ·

        2023-07-28 07:09

           
        點擊上方小白學視覺”,選擇加"星標"或“置頂
            
        重磅干貨,第一時間送達
        從安裝到基本圖像處理
        OpenCV 是一個流行的開源計算機視覺庫,可用于不同的編程語言,例如 Python、C++ 和 JavaScript。它提供了一套豐富的工具來處理和分析圖像和視頻,讓你可以從調整單張圖片的大小到構建復雜的對象識別應用程序。
        Python 編程語言除了被廣泛用作大多數(shù)圖像處理和計算機視覺應用程序的標準外,還允許以非常直接的方式將 OpenCV 安裝在你的計算機中。
        在本教程中,我將向你展示使用 OpenCV 安裝、設置和對圖像執(zhí)行一些基本操作所需的步驟,重點介紹有關該庫背后概念的重要基礎知識。
        值得一提的是,這些步驟是在基于 Linux 的操作系統(tǒng)中使用Python3執(zhí)行的。因此,如果你使用不同的配置,則可能需要進行細微的更改。

        設置虛擬環(huán)境

        使用 Python 時,通常建議在虛擬環(huán)境中運行你的應用程序。這樣做,你可以只安裝運行應用程序所需的包,使其獨立于系統(tǒng)的其余部分。如果你的計算機上仍然沒有安裝虛擬環(huán)境工具,我建議你安裝以下工具。
           
        python3 -m pip install virtualenv
        安裝后,你可以使用此工具創(chuàng)建新的虛擬環(huán)境。為此,導航到你想要的目錄并運行以下命令。請注意,我為我的環(huán)境選擇了名稱 my_venv,但你可以選擇任何你想要的名稱。
           
        python3 -m venv my_venv
        最后,你只需要激活你的虛擬環(huán)境,以便你在此終端中運行的任何內容都將在其中完成。
           
        source my_venv/bin/activate

        安裝 OpenCV

        首先更新你的包管理器并為 Python3 安裝 OpenCV。
           
        sudo apt update
        sudo apt install python3-opencv
        然后,使用 pip 在你的虛擬環(huán)境中安裝 OpenCV。
           
        pip install opencv-python

        打開圖像

        使用你最喜歡的 IDE,創(chuàng)建一個擴展名為 .py 的新文件,然后從導入 OpenCV 類開始。
           
        import cv2
        我們在這里做的第一件事是使用 imread() 方法加載圖像并使用 imshow() 方法打開它。請將下面的路徑替換為你的圖片所在的路徑。
           
        image = cv2.imread("images/messi.jpg")
        cv2.imshow("Original image", image)
        原始圖像
        關于 OpenCV 如何解釋圖像的第一個有趣的點是,imread()返回一個n 維數(shù)組對象。對于 RGB 圖像,例如本例中使用的圖像,此數(shù)組具有以下形狀:
        [寬×高×通道數(shù)]
        你可以通過打印圖像形狀來確認這一點。
           
        print("Original image shape:", image.shape)

        更改圖像色彩空間

        顏色空間是用于描述圖像的光譜上的一系列顏色。盡管有多種顏色空間可用,但最常見的是 RGB 和灰度。OpenCV 包含一種特殊的顏色空間轉換方法。為了將圖像從 RGB 轉換為灰度,你需要應用 cvtColor()方法。
           
        image_grayscale = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
        cv2.imshow(“Grayscale image”, image_grayscale)
        灰度圖像
        重要的是要注意,現(xiàn)在你的圖像不再包含三個維度。那是因為對應于通道的第三維在灰度色彩空間中沒有使用。
           
        print("Grayscale image shape:", image_grayscale.shape)

        編輯圖像通道

        返回到包含三個顏色通道的原始圖像,你現(xiàn)在可以操縱每個通道的強度值,以抑制或突出顯示特定通道。與通常假設的相反,RGB 通道的訪問順序與首字母縮寫詞中的順序不同。在 OpenCV 中,通道實際上以 BGR 格式提供:
        0 = B(藍色)
        1 = G(綠色)
        2 = R(紅色)
        在下面的示例中,我檢索前兩個通道中的所有像素并將它們設為零,這樣綠色和藍色通道將不會對生成的圖像產(chǎn)生任何影響,因此圖像將呈現(xiàn)完全紅色調。
           
        image_red = image.copy()
        image_red[:, :, :2] = 0 
        cv2.imshow("Red image", image_red)
        具有空藍色和綠色通道的圖像
        打印紅色圖像形狀時,請注意仍然存在第三維,否則生成的圖像將被描述為灰度。
           
        print("Red image shape:", image_red.shape)

        旋轉圖像

        除了顏色之外,還可以對圖像形狀進行操作,例如大小和方向。你可以從獲取圖像尺寸開始,就像 NumPy 對象一樣。
           
        width, height, _ = image.shape
        然后可以通過取其寬度和高度的一半來計算圖像的中心點。
           
        center = (width//2, height//2)
        為了旋轉圖像,你首先必須創(chuàng)建一個旋轉矩陣,分別將中心點、所需的旋轉度數(shù)和圖像比例作為參數(shù)傳遞。使用不同于 1 的比例會改變圖像大小。
           
        rotation_matrix = cv2.getRotationMatrix2D(center, 451.0
        旋轉矩陣對象本身不足以做我們想要的。它作為參數(shù)傳遞給 warpAffine() 方法,這是實際執(zhí)行旋轉的方法。
           
        image_rotated = cv2.warpAffine(image, rotation_matrix, (width, height))
        cv2.imshow(“Rotated image”, image_rotated)
        旋轉圖像

        調整圖像大小

        你可以使用之前獲得的高度和寬度值來定義圖像的新尺寸。在下面的示例中,我將它們設置為將圖像縮小到其原始大小的三分之一。
           
        new_size = (width//3, height//3)
        負責調整圖像大小的方法是resize(),它分別需要原始圖像對象、所需的新大小和插值方法作為參數(shù)。
           
        image_resized = cv2.resize(image, new_size, interpolation=cv2.INTER_LINEAR)
        cv2.imshow(“Resized image”, image_resized)
        調整大小的圖像
        然后,你可以檢查調整大小的圖像的尺寸。
           
        print(“Resized image shape:”, image_resized.shape)

        將繪圖插入圖像

        在某些應用程序中,可能需要向圖像添加標記。OpenCV 類提供了多種在其上繪制線條和形狀的方法。如下添加一行。這里的參數(shù)是原始圖像、初始位置、最終位置、線條顏色 RGB 代碼和線條寬度。
        請注意,實際上使用的是原始圖像的副本,因為繪圖方法會影響原始圖像。
           
        image_line = cv2.line(image.copy(), (00), (height//2, width//2), (0255255), 10)
        cv2.imshow(“Image with line”, image_line)
        帶線條的圖像
        同樣,在圖像中繪制矩形也有特定的方法。在這種情況下,第二個和第三個參數(shù)是矩形相對頂點的位置(左上角和右下角)。
           
        image_rectangle = cv2.rectangle(image.copy(), (500150), (900550), (0255255), 5)
        cv2.imshow(“Image with rectangle”, image_rectangle)
        帶有矩形的圖像
        你還可以通過將圓的中心位置和半徑分別指定為第二個和第三個參數(shù)來繪制一個圓。
           
        image_circle = cv2.circle(image.copy(), (300300), 200, (0255255), 5)
        cv2.imshow(“Image with circle”, image_circle)
        帶圓的圖像

        完整的腳本

        本教程生成的腳本可在以下地址獲取。
        https://github.com/lfgodoi/tutorials/tree/main/fundamentals-of-opencv-in-python
           
        下載1:OpenCV-Contrib擴展模塊中文版教程
        在「小白學視覺」公眾號后臺回復:擴展模塊中文教程,即可下載全網(wǎng)第一份OpenCV擴展模塊教程中文版,涵蓋擴展模塊安裝、SFM算法、立體視覺、目標跟蹤、生物視覺、超分辨率處理等二十多章內容。

        下載2:Python視覺實戰(zhàn)項目52講
        小白學視覺公眾號后臺回復:Python視覺實戰(zhàn)項目即可下載包括圖像分割、口罩檢測、車道線檢測、車輛計數(shù)、添加眼線、車牌識別、字符識別、情緒檢測、文本內容提取、面部識別等31個視覺實戰(zhàn)項目,助力快速學校計算機視覺。

        下載3:OpenCV實戰(zhàn)項目20講
        小白學視覺公眾號后臺回復:OpenCV實戰(zhàn)項目20講,即可下載含有20個基于OpenCV實現(xiàn)20個實戰(zhàn)項目,實現(xiàn)OpenCV學習進階。

        交流群


        歡迎加入公眾號讀者群一起和同行交流,目前有SLAM、三維視覺、傳感器、自動駕駛、計算攝影、檢測、分割、識別、醫(yī)學影像、GAN、算法競賽等微信群(以后會逐漸細分),請掃描下面微信號加群,備注:”昵稱+學校/公司+研究方向“,例如:”張三 + 上海交大 + 視覺SLAM“。請按照格式備注,否則不予通過。添加成功后會根據(jù)研究方向邀請進入相關微信群。請勿在群內發(fā)送廣告,否則會請出群,謝謝理解~


        瀏覽 1403
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            国产欧美日韩国产 | 久热在线资源福利站 | 亚洲精品国产精品国自产观看浪潮 | 我与寂寞少妇做爰的经历 | 黑人成人| 久久伊人五月天 | 看A片在线 | 啊啊啊啊啊在线观看 | 夜夜嗨av一区二区三区免费区 | A片无遮挡性高爱潮视频播放 |