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>

        基于OpenCV實(shí)戰(zhàn):對(duì)象跟蹤

        共 2877字,需瀏覽 6分鐘

         ·

        2022-04-27 17:13

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

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


        介紹


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

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

        在繼續(xù)下面的操作之前,請(qǐng)?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、使用高斯濾波器對(duì)圖像進(jìn)行歸一化。歸一化圖像可能會(huì)丟失許多小信息,但是我們需要?dú)w一化/模糊圖像,以使我們的對(duì)象獲得均等的顏色分布。

        #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:找到對(duì)應(yīng)對(duì)象的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è)不同的對(duì)象,則需要?jiǎng)?chuàng)建2個(gè)不同的蒙版,并最終在兩個(gè)蒙版上使用“按位與”運(yùn)算符。


        #mask = cv2.bitwise_and(mask1,mask2)

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

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


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


        輪廓:突出顯示對(duì)象的圖像片段。例如,如果將二進(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è),但主要對(duì)象的面積將最大。所以選擇輪廓最大。然后..


        步驟6:在對(duì)象上繪制圓


        得到主要物體的輪廓后,在輪廓上畫一個(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)

        對(duì)象跟蹤程序代碼

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




        交流群


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


        個(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 最新論文


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

        手機(jī)掃一掃分享

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

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        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>
            色97超碰| 色婷婷无码亚五月 | 色婷婷色五月 | 国产成人三级在线观看视频 | 女人被两根一起进去3p图片 | 亚洲天堂综合网 | 男人天堂一区二区 | 黄色的网站免费观看 | 亚洲激情小说 | 久久性愛視頻 |