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

          邊緣和輪廓檢測(cè)——計(jì)算機(jī)視覺的應(yīng)用

          共 3372字,需瀏覽 7分鐘

           ·

          2021-10-09 15:13

          點(diǎn)擊下方AI算法與圖像處理”,一起進(jìn)步!

          重磅干貨,第一時(shí)間送達(dá)

          計(jì)算機(jī)視覺的重點(diǎn)是從計(jì)算機(jī)中的視頻和圖像中提取有意義的信息。在本文中,我們將從初學(xué)者開始探索一個(gè)使用 OpenCV 的出色計(jì)算機(jī)視覺項(xiàng)目。
          其標(biāo)題是“使用計(jì)算機(jī)視覺進(jìn)行邊緣和輪廓檢測(cè)”。對(duì)于此項(xiàng)目,你還將看到描述、源代碼和圖像分類。

          邊緣檢測(cè)

          邊緣檢測(cè)是一種用于定位圖像中對(duì)象邊界的圖像處理技術(shù)。最流行和廣泛使用的算法之一是 Canny 邊緣檢測(cè)器。
          Canny 邊緣檢測(cè)器是一種立足點(diǎn)檢測(cè)算子,它使用多階段算法來檢測(cè)圖像中的各種邊緣。
          主要階段是:
          1. 使用高斯模糊算法,過濾掉圖像。
          2. 在 Sobel 濾波器的幫助下,找出邊緣的強(qiáng)度和方向。
          3. 通過應(yīng)用非極大值抑制來隔離更強(qiáng)的邊緣并將它們細(xì)化為一條像素寬的線。
          4. 使用滯后來隔離最簡單的邊緣。
          下面我們安裝 OpenCV :
          pip3?install?opencv-python?matplotlib?numpy
          打開一個(gè) Python 文件并按照以下步驟操作:
          import?cv2
          import?numpy?as?np
          import?matplotlib.pyplot?as?plt
          現(xiàn)在為了檢測(cè)它的邊緣,我們必須讀取圖像:
          #?read?the?image
          image?=?cv2.imread("little_flower.jpg")
          首先,我們必須將圖像轉(zhuǎn)換為灰度,然后,我們可以繼續(xù)將圖像繞過 Canny 邊緣檢測(cè)器。
          我們來看一下:
          #?convert?it?to?grayscale
          gray?=?cv2.cvtColor(image,?cv2.COLOR_BGR2GRAY)
          讓我們來看看它:
          #?show?the?grayscale?image
          plt.imshow(gray,?cmap="gray")
          plt.show()
          在 Canny 算法的幫助下,我們必須標(biāo)記作為輸入的圖像中的邊緣。
          輸入圖像首先傳遞給 cv2.Canny() 函數(shù),然后用于邊緣檢測(cè)。
          #?perform?the?canny?edge?detector?to?detect?image?edges
          edges?=?cv2.Canny(gray,?threshold1=30,?threshold2=100)
          閾值 1 和閾值 2 之間的最小值用于邊緣鏈接。最重要的值用于尋找強(qiáng)邊緣的初始段。
          讓我們看看結(jié)果圖像:
          有趣的是,嘗試微調(diào)邊緣值,看看你是否會(huì)讓它變得更好。
          如果你想使用實(shí)時(shí)攝像頭,這里是完整的代碼:
          import?NumPy?as?np
          import?cv2
          cap?=?cv2.VideoCapture(0)
          while?True:
          ????_,?frame?=?cap.read()
          ????gray?=?cv2.cvtColor(frame,?cv2.COLOR_BGR2GRAY)
          ????edges?=?cv2.Canny(gray,?30,?100)
          ????cv2.imshow("edges",?edges)
          ????cv2.imshow("gray",?gray)
          ????if?cv2.waitKey(1)?==?ord("q"):
          ????????break
          cap.release()
          cv2.destroyAllWindows()
          檢測(cè)邊緣的最終目的是捕捉重要事件并在行星屬性內(nèi)執(zhí)行所需的更改。它是圖像處理、圖像模式識(shí)別和計(jì)算機(jī)視覺技術(shù)的基本步驟之一。

          輪廓檢測(cè)

          一個(gè)輪廓可以描述為一條曲線,將所有具有相同顏色或強(qiáng)度的連續(xù)點(diǎn)組合在一起。基本上,它們顯示圖片中包含的對(duì)象的形狀。輪廓檢測(cè)可能是一種用于形狀分析和對(duì)象檢測(cè)和識(shí)別的有用技術(shù)。
          輪廓檢測(cè)并不是圖像分割的唯一算法,還有很多其他算法,例如目前最先進(jìn)的語義分割、霍夫變換和 K-Means 分割。
          為了獲得更好的準(zhǔn)確性,我們將遵循以下整個(gè)流程來成功檢測(cè)圖像中的輪廓:
          • 輸入圖像的標(biāo)準(zhǔn)化是它應(yīng)該始終是二進(jìn)制形式。這就是為什么我們需要將其轉(zhuǎn)換為二進(jìn)制格式。
          • 用于查找輪廓的 OpenCV 函數(shù)是 findContours()。
          • 最后,我們必須繪制這些輪廓來顯示圖像。
          好吧,讓我們開始吧。
          首先,讓我們?yōu)檫@個(gè)項(xiàng)目安裝所有必需的依賴項(xiàng):
          pip3?install?matplotlib?opencv-python
          在這里,我們導(dǎo)入所需的模塊:
          import?cv2
          import?matplotlib.pyplot?as?plt
          讓我們加載本教程中使用的圖像:
          #?read?the?image
          image?=?cv2.imread("thumbs_up_down.jpg")
          將其轉(zhuǎn)換為 RGB,然后轉(zhuǎn)換為灰度:
          #?convert?to?RGB
          image?=?cv2.cvtColor(image,?cv2.COLOR_BGR2RGB)
          #?convert?to?grayscale
          gray?=?cv2.cvtColor(image,?cv2.COLOR_RGB2GRAY)
          正如本教程前面提到的,我們要?jiǎng)?chuàng)建一個(gè)二值圖像,這表明圖像的每個(gè)像素要么是黑色的,要么是白色的。
          你可以將其進(jìn)行比較,就像查找輪廓與檢測(cè)黑板上的白色物體更相似。我們要找的物體是白色的,所以黑板需要是純黑色的。
          #?create?a?binary?thresholded?image
          _,?binary?=?cv2.threshold(gray,?225,?255,?cv2.THRESH_BINARY_INV)
          #?show?it
          plt.imshow(binary,?cmap="gray")
          plt.show()
          通過禁用像素(即將其設(shè)置為0)和啟用像素(即將其設(shè)置為225),創(chuàng)建二進(jìn)制圖像。以下是輸出圖像:
          現(xiàn)在,對(duì)于 OpenCV 來說,這通常很容易檢測(cè)輪廓:
          #?find?the?contours?from?the?thresholded?image
          contours,?hierarchy?=?cv2.findContours(binary,?cv2.RETR_TREE,?cv2.CHAIN_APPROX_SIMPLE)
          #?draw?all?contours
          image?=?cv2.drawContours(image,?contours,?-1,?(0,?255,?0),?2)
          上述代碼很容易找到二值圖像中的輪廓,最后借助粗綠線將它們輸出到圖像中,讓我們展示一下:
          #?show?the?image?with?the?drawn?contours
          plt.imshow(image)
          plt.show()
          輸出圖像:
          為了在不同的世界圖像上獲得良好的結(jié)果,你需要調(diào)整閾值或執(zhí)行邊緣檢測(cè)。例如,對(duì)于煎餅圖像,我將邊緣減少到 127,結(jié)果如下:

          輪廓檢測(cè)和邊緣檢測(cè)的區(qū)別

          輪廓檢測(cè)的目標(biāo)是確定閉合物體的形狀,特別是因?yàn)閷?duì)于具有相同顏色強(qiáng)度的連續(xù)點(diǎn),尋找輪廓的方法是確定的,而邊緣檢測(cè)是通過檢測(cè)顏色強(qiáng)度內(nèi)的變化來進(jìn)行的。對(duì)整個(gè)圖像進(jìn)行邊緣檢測(cè),而僅對(duì)圖像內(nèi)的對(duì)象進(jìn)行輪廓檢測(cè)。

          結(jié)論

          這個(gè)項(xiàng)目是初學(xué)者級(jí)別的,面向數(shù)據(jù)科學(xué)愛好者。本文旨在讓你熟悉最簡單的計(jì)算機(jī)視覺項(xiàng)目,以增強(qiáng)你在計(jì)算機(jī)視覺方面的知識(shí)。

          努力分享優(yōu)質(zhì)的計(jì)算機(jī)視覺相關(guān)內(nèi)容,歡迎關(guān)注:

          交流群


          歡迎加入公眾號(hào)讀者群一起和同行交流,目前有美顏、三維視覺、計(jì)算攝影、檢測(cè)、分割、識(shí)別、醫(yī)學(xué)影像、GAN、算法競賽等微信群


          個(gè)人微信(如果沒有備注不拉群!
          請(qǐng)注明:地區(qū)+學(xué)校/企業(yè)+研究方向+昵稱



          下載1:何愷明頂會(huì)分享


          AI算法與圖像處理」公眾號(hào)后臺(tái)回復(fù):何愷明,即可下載。總共有6份PDF,涉及 ResNet、Mask RCNN等經(jīng)典工作的總結(jié)分析


          下載2:終身受益的編程指南:Google編程風(fēng)格指南


          AI算法與圖像處理」公眾號(hào)后臺(tái)回復(fù):c++,即可下載。歷經(jīng)十年考驗(yàn),最權(quán)威的編程規(guī)范!



          下載3 CVPR2021

          AI算法與圖像處公眾號(hào)后臺(tái)回復(fù):CVPR即可下載1467篇CVPR?2020論文 和 CVPR 2021 最新論文



          瀏覽 65
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <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>
                  操逼视频在线 | 国产一区二区黄色片 | 操逼网视频| 热久久久精品视频 | 天堂成人1区 |