<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          OpenCV-Python速查表:從導(dǎo)入圖像到人臉檢測

          共 3115字,需瀏覽 7分鐘

           ·

          2021-05-10 08:29

          ——本文對圖像裁剪、調(diào)整大小、旋轉(zhuǎn)、閾值、模糊、在圖像上繪圖和書寫、人臉檢測和使用輪廓圖像檢測對象都進行了解釋。

          什么是OpenCV-Python?

          OpenCV是一個開源的計算機視覺(computer vision)和機器學(xué)習(xí)庫。它擁有超過2500個優(yōu)化算法,包括經(jīng)典和最先進的計算機視覺和機器學(xué)習(xí)算法。它有很多語言接口,包括Python、Java、c++和Matlab。

          這里,我們將處理Python接口。

          安裝

          • 在Windows上, 請在這里查看指南。地址:https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_setup/py_setup_in_windows/py_setup_in_windows.html 

          • 在 Linux上, 請在這里查看指南。地址:https://docs.opencv.org/trunk/d7/d9f/tutorial_linux_install.html 

          圖像導(dǎo)入&顯示

          警告1: 通過openCV讀取圖像時,它不是以RGB 顏色空間來讀取,而是以BGR 顏色空間。有時候這對你來說不是問題,只有當你想在圖片中添加一些顏色時,你才會遇到問題。

          有兩種解決方案:

          1. 將R?—?第一個顏色值(紅色)和B ?—?第三個顏色值(藍色) 交換, 這樣紅色就是 (0,0,255) 而不是(255,0,0)。

          2. 將顏色空間變成RGB:

          使用rgb_image代替image繼續(xù)處理代碼。

          警告2: 要關(guān)閉顯示圖像的窗口,請按任意按鈕。如果你使用關(guān)閉按鈕,它可能會導(dǎo)致窗口凍結(jié)(我在Jupyter筆記本上運行代碼時發(fā)生了這種情況)。

          為了簡單起見,在整個教程中,我將使用這種方法來查看圖像:

          來源:Pixabay

          裁剪

          來源:Pixabay

          裁剪后的狗狗

          其中:image[10:500,500:200] 是 image[y:y+h,x:x+w]。

          調(diào)整大小

          來源:Pexels

          調(diào)整大小到20%后

          這個調(diào)整大小函數(shù)會保持原始圖像的尺寸比例。

          更多圖像縮放函數(shù),請查看這里。(https://www.tutorialkart.com/opencv/python/opencv-python-resize-image/  )

          旋轉(zhuǎn)

          左圖: 圖片來自Pexels的Jonathan Meyer。右圖: 進行180度旋轉(zhuǎn)之后的狗狗。

          image.shape輸出高度、寬度和通道。M是旋轉(zhuǎn)矩陣——它將圖像圍繞其中心旋轉(zhuǎn)180度。

          -ve表示順時針旋轉(zhuǎn)圖像的角度  & +ve逆表示逆時針旋轉(zhuǎn)圖像的角度。

          灰度和閾值(黑白效果)

          來源:Pexels

          gray_image 是灰度圖像的單通道版本。

          這個threshold函數(shù)將把所有比127深(小)的像素點陰影值設(shè)定為0,所有比127亮(大)的像素點陰影值設(shè)定為255。

          另一個例子:

          這將把所有陰影值小于150的像素點設(shè)定為10和所有大于150的像素點設(shè)定為200。

          更多有關(guān)thresholding函數(shù)的內(nèi)容,請查看這里。(https://docs.opencv.org/3.4/d7/d4d/tutorial_py_thresholding.html  )

          左圖:灰階狗狗。右圖:黑白狗狗。

          模糊/平滑

          左圖:圖像來自Pixabay。右圖:模糊后的狗狗。

          高斯模糊函數(shù)接受3個參數(shù):

          1. 第一個參數(shù)是要模糊的圖像。

          2. 第二個參數(shù)必須是一個由兩個正奇數(shù)組成的元組。當它們增加,模糊效果也會增加。

          3. 第三個參數(shù)是sigmaX和sigmaY。當左邊位于0時,它們會自動從內(nèi)部大小計算出來。

          更多關(guān)于模糊函數(shù)的內(nèi)容,請查看這里。(https://docs.opencv.org/3.1.0/d4/d13/tutorial_py_filtering.html  )

          在圖像上繪制矩形框或邊框

           左圖:圖像來自Pixabay。右圖:臉上有一個矩形框的狗狗。

          rectangle函數(shù)接受5個參數(shù):

          1. 第一個參數(shù)是圖像。

          2. 第二個參數(shù)是x1, y1 -左上角坐標。

          3. 第三個參數(shù)是x2, y2 -右下角坐標。

          4. 第四個參數(shù)是矩形顏色(GBR/RGB,取決于你如何導(dǎo)入圖像)。

          5. 第五個參數(shù)是矩形線寬。

          繪制一條線

          左圖:圖像來自Pixabay。右圖:兩只狗狗用一條線分開。

          line函數(shù)接受5個參數(shù):

          • 第一個參數(shù)是要畫的線所在的圖像。

          • 第二個參數(shù)是x1, y1。

          • 第三個參數(shù)是x2, y2。

          • 第四個參數(shù)是線條顏色(GBR/RGB,取決于你如何導(dǎo)入圖像)。

          • 第五個參數(shù)是線寬。

          在圖片上寫入文字

          左圖:圖像來自Pixabay。右圖:兩只狗狗用一條線分開。

          putText函數(shù)接受 七個參數(shù):

          • 第一個參數(shù)是要寫入文本的圖像。

          • 第二個參數(shù)是待寫入文本。

          • 第三個參數(shù)是x, y——文本開始的左下角坐標。

          • 第四個參數(shù)是字體類型。

          • 第五個參數(shù)是字體大小。

          • 第六個參數(shù)是顏色(GBR/RGB,取決于你如何導(dǎo)入圖像)。

          • 第七個參數(shù)是文本線條的粗細。

          人臉檢測

          這里沒有找到狗狗照片,很遺憾:(

          圖片來自Pixabay,作者:Free-Photos。

          detectMultiScale函數(shù)是一種檢測對象的通用函數(shù)。因為我們調(diào)用的是人臉級聯(lián),所以它會檢測到人臉。

          detectMultiScale函數(shù)接受4個參數(shù):

          • 第一個參數(shù)是灰階圖像。

          • 第二個參數(shù)是scaleFactor。因為有些人臉可能離鏡頭更近,所以看起來會比后臺的人臉更大。比例系數(shù)彌補了這一點。

          • 檢測算法使用一個移動窗口來檢測對象。minNeighbors定義在當前對象附近檢測到多少對象,然后再聲明檢測到人臉。

          • 與此同時,minsize給出了每個窗口的大小。

          檢測到兩張人臉。

          輪廓——一種對象檢測方法

          使用基于顏色的圖像分割,你可以來檢測對象。

          cv2.findContours & cv2.drawContours 這兩個函數(shù)可以幫助你做到這一點。

          最近,我寫了一篇非常詳細的文章,叫做《使用Python通過基于顏色的圖像分割來進行對象檢測》。你需要知道的關(guān)于輪廓的一切都在那里。(https://towardsdatascience.com/object-detection-via-color-based-image-segmentation-using-python-e9b7c72f0e11  )

          最終,保存圖片

          總結(jié)

          OpenCV是一個非常容易使用的算法庫,可以用于3D建模、高級圖像和視頻編輯、跟蹤視頻中的標識對象、對視頻中正在做某個動作的人進行分類、從圖像數(shù)據(jù)集中找到相似的圖像,等等。

          最重要的是,學(xué)習(xí)OpenCV對于那些想要參與與圖像相關(guān)的機器學(xué)習(xí)項目的人來說是至關(guān)重要的。

          英文原文:https://qiniumedia.freelycode.com/vcdn/1/%E4%BC%98%E8%B4%A8%E6%96%87%E7%AB%A0%E9%95%BF%E5%9B%BE3/opencv-python-cheetsheet.pdf  

          譯者:好酒不上頭

          來源:Python程序員

           End 


          聲明:部分內(nèi)容來源于網(wǎng)絡(luò),僅供讀者學(xué)術(shù)交流之目的。文章版權(quán)歸原作者所有。如有不妥,請聯(lián)系刪除。


          瀏覽 42
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

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

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产性爱在线视频 | 天干夜天干夜天天免费视频 | 国产精品久久久久久久久吹潮 | 伊人丁香网 | 亚洲电影欧美片日韩 |