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

          使用Python+OpenCV進行圖像處理之入門教程

          共 4284字,需瀏覽 9分鐘

           ·

          2020-12-27 19:01

          點擊上方小白學視覺”,選擇加"星標"或“置頂

          重磅干貨,第一時間送達

          簡介

          人臉識別和目標檢測這樣的術(shù)語聽起來覺得很酷,但是當涉及到從頭開始實現(xiàn)它們時,每個初學者都會覺得困難,這些技術(shù)實際上并沒有那么難實現(xiàn),一旦你掌握了其基本原理,那么實現(xiàn)它們就相當簡單了。
          圖像處理有很多種應用,包括用于解析文檔和生成相應文本的光學字符識別(OCR)、圖像增強與重建、物體識別、人體運動識別、手勢識別、人臉識別等。
          在學習的過程中,你會遇到過奇形怪狀的各種圖像濾波器,那有沒有去思考如何實現(xiàn)它嗎,在本文中,我們將通過實現(xiàn)一個簡單的濾波器來開始我們的圖像處理之旅!

          什么是OpenCV

          OpenCV是一個開源庫,包含了許多計算機視覺算法。它在計算機視覺和圖像處理中起著重要作用,用于實時操作,其效率足以滿足工業(yè)上的要求。OpenCV可以與其他庫一起使用,比如Numpy,這使得Python能夠處理OpenCV數(shù)組結(jié)構(gòu)。

          實現(xiàn)我們的第一個濾波器

          檢測邏輯

          計算機不能像人類一樣識別物體,為了能讓計算機達到這個目的,我們可以使用各種技術(shù)來讓計算機理解圖像,我們會將顏色作為檢測物體的主要依據(jù)。
          我們使用HSV顏色空間作為檢測特征。

          什么是HSV

          HSV是Hue, Saturation 和Value(色調(diào)、飽和度和值)。
          • 色調(diào):根據(jù)光譜,物體的顏色可分為紅、藍、綠、黃四種顏色。
          • 飽和度:它定義了顏色的強度。
          • 值:定義顏色的亮度。
          OpenCV中有150多種顏色空間轉(zhuǎn)換方法,其中一種是彩色圖像到HSV圖像的轉(zhuǎn)換。

          我們來看看代碼

          我們需要導入我們要使用的庫-OpenCV(cv2)和Numpy。
          import?cv2
          import?numpy?as?np
          Numpy是一個python庫,用于處理數(shù)組,它比傳統(tǒng)的python列表快50倍,這對我們來說非常重要,因為我們要處理很多圖像。Numpy給了我們在線性代數(shù)、傅立葉變換、矩陣等領(lǐng)域工作的函數(shù)。
          import?cv2
          import?numpy?as?np
          def?nothing():
          ??pass
          cap=cv2.VideoCapture(0)
          while(1):
          ??_,?img?=?cap.read()
          ??k=cv2.waitkey(1)&0xFF
          ??if?k==27:
          ????break
          cap.release()
          cv2.destroyAllWindows()
          我們創(chuàng)建了一個回調(diào)函數(shù),它什么也不做,讓我們看看為什么。
          我們使用一個窗口來控制HSV,因為我們不知道要檢測的對象的HSV,因此我們用它來調(diào)整HSV的上下限。
          因為當我們使用創(chuàng)建trackbar的方法時,我們需要傳遞一個必要的回調(diào)函數(shù),在我們的例子中,這個回調(diào)函數(shù)什么也不做(但是它的使用會根據(jù)父函數(shù)的需要而改變);然后我們使用了一個方法cv2.videocapture(0),它是一個內(nèi)置函數(shù),用來從默認攝像機捕捉視頻(0表示選擇默認攝像機);最后,我們刪除了所有的窗口,并在一個點擊事件(這里我們設(shè)置為ESC鍵)后釋放捕獲。
          我們可以用下面的函數(shù)命名一個窗口。
          cv2.namedWindow()
          讓我們繼續(xù)敲代碼…
          import?cv2
          import?numpy?as?np
          def?nothing(x):
          ????pass
          ??
          cap=cv2.VideoCapture(0)
          cv2.namedWindow('tracking')
          cv2.createTrackbar('LH','tracking',0,255,nothing)
          cv2.createTrackbar('LS','tracking',0,255,nothing)
          cv2.createTrackbar('LV','tracking',0,255,nothing)
          cv2.createTrackbar('UH','tracking',255,255,nothing)
          cv2.createTrackbar('US','tracking',255,255,nothing)
          cv2.createTrackbar('UV','tracking',255,255,nothing)
          因此,在設(shè)置檢測條件后,我們需要將原始數(shù)據(jù)(即彩色圖像)轉(zhuǎn)換為HSV圖像。為了將基本彩色圖像轉(zhuǎn)換為HSV圖像,我們使用
          ?=?cv2.cvtColor(,cv2.COLOR_BGR2HSV)
          然后利用Numpy數(shù)組方法設(shè)置trackbar中數(shù)據(jù)的上下界。
          ?=?np.array()
          使用這個,我們會得到上面設(shè)置的所有軌跡條值。接下來我們主要做兩件事:
          1.創(chuàng)建掩碼
          掩碼是一種二進制圖像,它指示要在其中執(zhí)行操作的像素。
          2.我們將使用位和邏輯來屏蔽原始圖像。我們使用名為“bitwise_and”的cv2方法,它執(zhí)行邏輯與運算。
          ?=?cv2.inRange(hav,?l_b,?u_b)

          res?=?cv2.bitwise_and(,?,?mask?=?)
          import?cv2
          import?numpy?as?np
          def?nothing(x):
          ????pass
          cap=cv2.VideoCapture(0)

          cv2.namedWindow('tracking')
          cv2.createTrackbar('LH','tracking',0,255,nothing)
          cv2.createTrackbar('LS','tracking',0,255,nothing)
          cv2.createTrackbar('LV','tracking',0,255,nothing)
          cv2.createTrackbar('UH','tracking',255,255,nothing)
          cv2.createTrackbar('US','tracking',255,255,nothing)
          cv2.createTrackbar('UV','tracking',255,255,nothing)

          while?(1):
          ????_,?img=cap.read()
          ????hav=cv2.cvtColor(img,cv2.COLOR_BGR2HSV)
          ????l_h=cv2.getTrackbarPos('LH','tracking')
          ????l_s=cv2.getTrackbarPos('LS',?'tracking')
          ????l_v=cv2.getTrackbarPos('LV',?'tracking')
          ????u_h=cv2.getTrackbarPos('UH',?'tracking')
          ????u_s=cv2.getTrackbarPos('US',?'tracking')
          ????u_v=cv2.getTrackbarPos('UV',?'tracking')
          ????l_b=np.array([l_h,l_s,l_v])
          ????u_b=np.array([u_h,u_s,u_v])
          ????mask=cv2.inRange(hav,?l_b,?u_b)
          ????res?=?cv2.bitwise_and(img,?img,?mask=mask)
          ????cv2.imshow('image',?img)
          ????cv2.imshow('mask',?mask)
          ????cv2.imshow('res',?res)
          ????k=cv2.waitKey(1)&0xFF
          ????if?k==27:
          ????????break
          cap.release()
          cv2.destroyAllWindows()
          這些幀使用名為“imshow”的方法顯示。
          cv2.imshow(,?)
          結(jié)果
          結(jié)果只檢測到粉紅色的物體,這是因為我們只想選擇粉紅色的物體!實際上,我們已經(jīng)使用軌跡條為特定的粉紅色設(shè)置了HSV值,這就是輸出只有特定粉紅色的原因。您可以選擇要檢測的任何特定顏色值。

          結(jié)論

          本文我們實現(xiàn)了一個濾波器,可以檢測我們指定特定顏色的物體。我們所做的只是圖像處理和目標檢測的一個非常基本的介紹性任務(wù)。近年來,計算機視覺領(lǐng)域有了很大的發(fā)展,其中大部分都包含了機器學習和深度學習技術(shù)。在許多項目中,對象檢測是首先執(zhí)行的基本任務(wù),因為它為我們提供了有關(guān)環(huán)境的信息,我們可以根據(jù)使用情況進行過濾。

          參考引用

          • Implementing colour and shape-based object detection and tracking with OpenCV(https://hub.packtpub.com/implementing-color-and-shape-based-object-detection-and-tracking-with-opencv-and-cuda-tutorial/).
          下載1:OpenCV-Contrib擴展模塊中文版教程
          在「小白學視覺」公眾號后臺回復:擴展模塊中文教程即可下載全網(wǎng)第一份OpenCV擴展模塊教程中文版,涵蓋擴展模塊安裝、SFM算法、立體視覺、目標跟蹤、生物視覺、超分辨率處理等二十多章內(nèi)容。

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

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

          下載4:leetcode算法開源書
          小白學視覺公眾號后臺回復:leetcode即可下載。每題都 runtime beats 100% 的開源好書,你值得擁有!




          交流群


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


          瀏覽 39
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

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

          手機掃一掃分享

          分享
          舉報
          <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>
                  欧美性爱播放 | 2025无码视频 | 精品国产乱码久久久久夜深人妻 | 成人欧美一区二区三区男男 | 久久大香蕉欧美 |