<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實(shí)戰(zhàn):對象跟蹤

          共 3220字,需瀏覽 7分鐘

           ·

          2021-04-25 10:27

          點(diǎn)擊上方小白學(xué)視覺”,選擇加"星標(biāo)"或“置頂

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


          介紹


          跟蹤對象的基本思想是找到對象的輪廓,基于HSV顏色值。

          輪廓:突出顯示對象的圖像片段。例如,如果將二進(jìn)制閾值應(yīng)用于具有(180,255)的圖像,則大于180的像素將以白色突出顯示,而其他則為黑色。白色部分稱為輪廓。

          在繼續(xù)下面的操作之前,請?jiān)谙到y(tǒng)中安裝OpenCV。打開命令提示符并鍵入

          pip install opencv-python

          步驟1:從相機(jī)讀取數(shù)據(jù)
          import cv2cam = cv2.VideoCapture(0) img = cam.read()[1] #_, img = cam.read()

          參數(shù)0-用于主相機(jī),例如在筆記本電腦網(wǎng)絡(luò)攝像頭中被視為主相機(jī)。1-代表中學(xué),依此類推。


          步驟2:預(yù)處理框架


          1、使用高斯濾波器對圖像進(jìn)行歸一化。歸一化圖像可能會丟失許多小信息,但是我們需要?dú)w一化/模糊圖像,以使我們的對象獲得均等的顏色分布。

          #cv2.gaussianBlur(source_image,Kernal_size,Border_width)

          Blur_img = cv2.GaussianBlur(img,(11,11),0)


          2、將圖像轉(zhuǎn)換為HSV顏色模型。

          HSV = cv2.cvtColor(Blur_img, cv2.COLOR_BGR2HSV)


          步驟3:找到對應(yīng)對象的HSV顏色


          Obj_low = np.array([0,0,0]) # In my case (H,S,V)Obj_high = np.array([179,157,79])


          步驟4:閾值化


          在給定的HSV值范圍內(nèi)應(yīng)用二進(jìn)制閾值,黑白Obj_low和Obj_high。

          MASK = cv2.inRange(HSV, Obj_low, Obj_high)

          #MASK2 = cv2.inRange(HSV,Obj2_low,Obj2_high)

          如果嘗試跟蹤兩個(gè)不同的對象,則需要?jiǎng)?chuàng)建2個(gè)不同的蒙版,并最終在兩個(gè)蒙版上使用“按位與”運(yùn)算符。


          #mask = cv2.bitwise_and(mask1,mask2)

          侵蝕和膨脹:侵蝕和膨脹填充閾值圖像中的黑色和白色斑點(diǎn)。這樣可使圖像更清晰,平滑并突出主要對象。

          MASK = cv2.erode(MASK1, None, iterations=2)MASK = cv2.dilate(MASK1, None, iterations =2)


          步驟5:在圖像中查找輪廓


          輪廓:突出顯示對象的圖像片段。例如,如果將二進(jìn)制閾值應(yīng)用于具有(180,255)的圖像,則大于180的像素將以白色突出顯示,而其他則為黑色。白色部分稱為輪廓。

          cnts = cv2.findContours(MASK1.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)[-2]if len(cnts)>0 : c = max(cnts, key = cv2.contourArea)

          在上面給定的圖像中,整個(gè)白色邊界區(qū)域是輪廓。輪廓可能不止一個(gè),但主要對象的面積將最大。所以選擇輪廓最大。然后..


          步驟6:在對象上繪制圓


          得到主要物體的輪廓后,在輪廓上畫一個(gè)圓。

          ((x,y), radius) = cv2.minEnclosingCircle(c)M = cv2.moments(c)center = (int(M[‘m10’]/ M[‘m00’]), int(M[‘m01’]/ M[‘m00’]) )cv2.circle(img, center, 5, (0,0,255), -1)cv2.circle(img, center, int(radius), (0,0,255), 2)

          對象跟蹤程序代碼

          import cv2import numpy as npcam = cv2.VideoCapture(0)Obj_low = np.array([0,0,0])Obj_high = np.array([179,157,79])while True:    img = cam.read()[1]    img = cv2.resize(img, (800,600) )    blur_img = cv2.GaussianBlur(img,(21,21),0)    HSV = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)MASK1 = cv2.inRange(HSV, Obj_low, Obj_high)    MASK1 = cv2.erode(MASK1, None, iterations=2)    MASK1 = cv2.dilate(MASK1, None, iterations =2)    cnts = cv2.findContours(MASK1.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)[-2]    center = None    if len(cnts)>0 :        c = max(cnts, key = cv2.contourArea)        ((x,y), radius) = cv2.minEnclosingCircle(c)        M = cv2.moments(c)        center = (int(M['m10']/ M['m00']), int(M['m01']/ M['m00']) )        if radius>10:            cv2.circle(img, center, 5, (0,0,255), -1)            cv2.circle(img, center, int(radius), (0,0,255), 2)    cv2.imshow("my window",img)    k = cv2.waitKey(1)    if k==27:        breakcam.release()cv2.destroyAllWindows()


          下載1:OpenCV-Contrib擴(kuò)展模塊中文版教程
          在「小白學(xué)視覺」公眾號后臺回復(fù):擴(kuò)展模塊中文教程,即可下載全網(wǎng)第一份OpenCV擴(kuò)展模塊教程中文版,涵蓋擴(kuò)展模塊安裝、SFM算法、立體視覺、目標(biāo)跟蹤、生物視覺、超分辨率處理等二十多章內(nèi)容。

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

          下載3:OpenCV實(shí)戰(zhàn)項(xiàng)目20講
          小白學(xué)視覺公眾號后臺回復(fù):OpenCV實(shí)戰(zhàn)項(xiàng)目20講,即可下載含有20個(gè)基于OpenCV實(shí)現(xiàn)20個(gè)實(shí)戰(zhàn)項(xiàng)目,實(shí)現(xiàn)OpenCV學(xué)習(xí)進(jìn)階。

          交流群


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


          瀏覽 36
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

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

          手機(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>
                  色五月婷婷在线视频 | 伊人成人网大香蕉 | 国产免费无码一区二区三区四区 | 久久午夜视频 | 免费特级黄色片 |