chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀(guān)看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

我們?nèi)绾味xROI?

新機(jī)器視覺(jué) ? 來(lái)源:小白學(xué)視覺(jué) ? 作者:努比 ? 2022-06-09 11:12 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

OpenCV是一個(gè)巨大的開(kāi)源庫(kù),廣泛用于計(jì)算機(jī)視覺(jué),人工智能和圖像處理領(lǐng)域。它在現(xiàn)實(shí)世界中的典型應(yīng)用是人臉識(shí)別,物體檢測(cè),人類(lèi)活動(dòng)識(shí)別,物體跟蹤等。

現(xiàn)在,假設(shè)我們只需要從整個(gè)輸入幀中檢測(cè)到一個(gè)對(duì)象。因此,代替處理整個(gè)框架,如果可以在框架中定義一個(gè)子區(qū)域并將其視為要應(yīng)用處理的新框架,該怎么辦。我們要完成一下三個(gè)步驟:

?定義興趣區(qū)

?在ROI中檢測(cè)輪廓

?閾值檢測(cè)輪廓輪廓線(xiàn)

什么是ROI?

簡(jiǎn)而言之,我們感興趣的對(duì)象所在的幀內(nèi)的子區(qū)域稱(chēng)為感興趣區(qū)域(ROI)。

我們?nèi)绾味xROI?

在輸入幀中定義ROI的過(guò)程稱(chēng)為ROI分割。

在“ ROI細(xì)分”中,(此處)我們選擇框架中的特定區(qū)域,并以矩形方法提供其尺寸,以便它將在框架上繪制矩形的ROI。

1934a0e2-e731-11ec-ba43-dac502259ad0.png

(輸出)藍(lán)色矩形覆蓋的區(qū)域是我們的投資回報(bào)率

現(xiàn)在,如果您也想綁定感興趣的對(duì)象,那么我們可以通過(guò)在ROI中找到輪廓來(lái)實(shí)現(xiàn)。

什么是輪廓?

輪廓線(xiàn)是表示或說(shuō)是限制對(duì)象形狀的輪廓。

如何在框架中找到輪廓?

對(duì)我而言,在將ROI框架設(shè)為閾值后,找到輪廓效果最佳。因此,要找到輪廓,手上的問(wèn)題是-

什么是閾值?

閾值不過(guò)是圖像分割的一種簡(jiǎn)單形式。這是將灰度或rgb圖像轉(zhuǎn)換為二進(jìn)制圖像的過(guò)程。例如

198779c0-e731-11ec-ba43-dac502259ad0.png

(這是RGB幀)

19acae20-e731-11ec-ba43-dac502259ad0.png

(這是二進(jìn)制閾值幀)

因此,在對(duì)rgb幀進(jìn)行閾值處理后,程序很容易找到輪廓,因?yàn)橛捎赗OI中感興趣對(duì)象的顏色將是黑色(在簡(jiǎn)單的二進(jìn)制脫粒中)或白色(在如上所述的反向二進(jìn)制脫粒中),因此分割(將背景與前景即我們的對(duì)象分開(kāi))將很容易完成。

在對(duì)框架進(jìn)行閾值處理并檢測(cè)到輪廓之后,我們應(yīng)用凸包技術(shù)對(duì)圍繞對(duì)象點(diǎn)的緊密擬合凸邊界進(jìn)行設(shè)置。實(shí)施此步驟后,框架應(yīng)如下所示-

19ce95f8-e731-11ec-ba43-dac502259ad0.png

我們可以做的另一件事是,我們可以遮蓋ROI以?xún)H顯示被檢測(cè)到的輪廓本身覆蓋的對(duì)象。再次-

什么是圖像MASK?

圖像MASK是隱藏圖像的某些部分并顯示某些部分的過(guò)程。這是圖像編輯的非破壞性過(guò)程。在大多數(shù)情況下,它使您可以在以后根據(jù)需要調(diào)整和調(diào)整遮罩。通常,它是一種有效且更具創(chuàng)意的圖像處理方式。

因此,基本上在這里我們將掩蓋ROI的背景。為此,首先我們將修復(fù)ROI的背景。然后,在固定背景之后,我們將從框架中減去背景,并用wewant背景(這里是一個(gè)簡(jiǎn)單的黑色框架)替換它。

實(shí)施上述技術(shù),我們應(yīng)該得到如下輸出:

19f5abd4-e731-11ec-ba43-dac502259ad0.png

(背景被遮罩以?xún)H捕獲對(duì)象)

這是所說(shuō)明技術(shù)的理想實(shí)現(xiàn)的完整代碼。


import cv2import numpy as npimport copyimport math
x=0.5  # start point/total widthy=0.8  # start point/total widththreshold = 60  # BINARY thresholdblurValue = 7  # GaussianBlur parameterbgSubThreshold = 50learningRate = 0
# variablesisBgCaptured = 0   # whether the background captured
def removeBG(frame): #Subtracting the background    fgmask = bgModel.apply(frame,learningRate=learningRate)
    kernel = np.ones((3, 3), np.uint8)    fgmask = cv2.erode(fgmask, kernel, iterations=1)    res = cv2.bitwise_and(frame, frame, mask=fgmask)    return res
# Cameracamera = cv2.VideoCapture(0)camera.set(10,200)


while camera.isOpened():    ret, frame = camera.read()    frame = cv2.bilateralFilter(frame, 5, 50, 100)  # smoothening filter    frame = cv2.flip(frame, 1)  # flip the frame horizontally    cv2.rectangle(frame, (int(x * frame.shape[1]), 0),                 (frame.shape[1], int(y * frame.shape[0])), (255, 0, 0), 2) #drawing ROI    cv2.imshow('original', frame)
    #  Main operation    if isBgCaptured == 1:  # this part wont run until background captured        img = removeBG(frame)        img = img[0:int(y * frame.shape[0]),                    int(x * frame.shape[1]):frame.shape[1]]  # clip the ROI        cv2.imshow('mask', img)
        # convert the image into binary image        gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)        blur = cv2.GaussianBlur(gray, (blurValue, blurValue), 0)        cv2.imshow('blur', blur)        ret, thresh = cv2.threshold(blur, threshold, 255, cv2.THRESH_BINARY) #thresholding the frame        cv2.imshow('ori', thresh)

        # get the coutours        thresh1 = copy.deepcopy(thresh)        contours, hierarchy = cv2.findContours(thresh1, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) #detecting contours        length = len(contours)        maxArea = -1        if length > 0:            for i in range(length):  # find the biggest contour (according to area)                temp = contours[i]                area = cv2.contourArea(temp)                if area > maxArea:                    maxArea = area                    ci = i
            res = contours[ci]            hull = cv2.convexHull(res) #applying convex hull technique            drawing = np.zeros(img.shape, np.uint8)            cv2.drawContours(drawing, [res], 0, (0, 255, 0), 2) #drawing contours             cv2.drawContours(drawing, [hull], 0, (0, 0, 255), 3) #drawing convex hull            cv2.imshow('output', drawing)
    # Keyboard OP    k = cv2.waitKey(10)    if k == 27:          camera.release()        cv2.destroyAllWindows()        break    elif k == ord('b'):  # press 'b' to capture the background        bgModel = cv2.createBackgroundSubtractorMOG2(0, bgSubThreshold)        isBgCaptured = 1        print( 'Background Captured')    elif k == ord('r'):  # press 'r' to reset the background        bgModel = None        isBgCaptured = 0print('ResetBackGround')

審核編輯 :李倩


聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀(guān)點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 人臉識(shí)別
    +關(guān)注

    關(guān)注

    77

    文章

    4104

    瀏覽量

    86950
  • OpenCV
    +關(guān)注

    關(guān)注

    33

    文章

    650

    瀏覽量

    43968

原文標(biāo)題:基于OpenCV的區(qū)域分割、輪廓檢測(cè)和閾值處理

文章出處:【微信號(hào):vision263com,微信公眾號(hào):新機(jī)器視覺(jué)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    【嘉楠堪智K230開(kāi)發(fā)板試用體驗(yàn)】高校競(jìng)賽-2025電賽-E題

    (x, y, w, h, color=(255, 0, 0), thickness=2) ? # 縮小 ROI,避免貼邊 margin = 8 # 根據(jù)情況調(diào) roi_x = max(x
    發(fā)表于 08-21 15:32

    找正方形的代碼我把roi刪除過(guò)后能識(shí)別到正方形,加上roi后就識(shí)別不出來(lái),為什么?

    找正方形的代碼我把roi刪除過(guò)后能識(shí)別到正方形,加上roi后就識(shí)別不出來(lái),更改roi為更大更穩(wěn)定的范圍也識(shí)別不到,麻煩解答一下,謝謝
    發(fā)表于 08-14 06:23

    程序總是報(bào)錯(cuò)Out of fast frame buffer stack memory,怎么解決?

    KeyButtonWIDTH, HEIGHT = 800, 480# 保持原分辨率key = KeyButton()roi1 = (200, 120, 450, 250)# 保持原ROIthreshold
    發(fā)表于 08-13 06:40

    抖音電商API粉絲行為分析,精準(zhǔn)營(yíng)銷(xiāo)ROI翻番!

    回報(bào)率(ROI)。本文將一步步解析如何通過(guò)API驅(qū)動(dòng)的粉絲行為分析,讓您的ROI輕松翻倍。 第一步:理解抖音電商API的核心功能 抖音電商API允許商家以編程方式訪(fǎng)問(wèn)平臺(tái)數(shù)據(jù),包括粉絲的互動(dòng)、購(gòu)買(mǎi)和偏好信息。關(guān)鍵數(shù)據(jù)點(diǎn)包括: 粉絲活躍
    的頭像 發(fā)表于 08-01 14:39 ?601次閱讀
    抖音電商API粉絲行為分析,精準(zhǔn)營(yíng)銷(xiāo)<b class='flag-5'>ROI</b>翻番!

    定義IO初始化結(jié)構(gòu)體

    由上述IOPORT相關(guān)功能的枚舉類(lèi)型我們可以知道,在對(duì)IOPORT模塊進(jìn)行初始化時(shí)需要根據(jù)情況配置它們。因此我們定義一個(gè)IOPORT初始化的結(jié)構(gòu)體類(lèi)型IOPORT_Init_t,它的成員包括了由上述所有枚舉類(lèi)型所聲明的變量,因此
    的頭像 發(fā)表于 07-16 16:26 ?953次閱讀

    HarmonyOS應(yīng)用自定義鍵盤(pán)解決方案

    定義鍵盤(pán)是一種替換系統(tǒng)默認(rèn)鍵盤(pán)的解決方案,可實(shí)現(xiàn)鍵盤(pán)個(gè)性化交互。允許用戶(hù)結(jié)合業(yè)務(wù)需求與操作習(xí)慣,對(duì)按鍵布局進(jìn)行可視化重構(gòu)、設(shè)置多功能組合鍵位,使輸入更加便捷和舒適。在安全防護(hù)層面,自定義鍵盤(pán)可以
    的頭像 發(fā)表于 06-05 14:19 ?1232次閱讀

    低壓差穩(wěn)壓器的基本定義和特性

    歡迎來(lái)到芝識(shí)課堂!從本文開(kāi)始,我們要為您介紹在電源電路設(shè)計(jì)中非常重要,還經(jīng)常露面的“大明星”——低壓差穩(wěn)壓器。我們會(huì)介紹低壓差穩(wěn)壓器的基本定義、內(nèi)部原理、工作方式以及它們的電氣特性。首先,我們
    的頭像 發(fā)表于 06-05 11:46 ?1245次閱讀
    低壓差穩(wěn)壓器的基本<b class='flag-5'>定義</b>和特性

    基于LockAI視覺(jué)識(shí)別模塊:C++使用圖像的統(tǒng)計(jì)信息

    在圖像處理中,統(tǒng)計(jì)信息可以幫助我們了解圖像的特性,例如區(qū)域內(nèi)的像素分布、顏色轉(zhuǎn)換以及特定區(qū)域的分析。本文將介紹基于LockAI視覺(jué)識(shí)別模塊如何提取興趣區(qū)域(ROI)、轉(zhuǎn)換顏色通道、計(jì)算均值和標(biāo)準(zhǔn)差
    發(fā)表于 05-08 10:31

    運(yùn)算放大器的基本定義和工作原理

    從本文開(kāi)始,我們要為您介紹在電路設(shè)計(jì)中非常重要且會(huì)頻繁出現(xiàn)的角色——運(yùn)算放大器。我們會(huì)說(shuō)明運(yùn)算放大器的基本定義、內(nèi)部原理、運(yùn)作方式以及它們的電氣特性,先來(lái)看看運(yùn)算放大器是什么模樣。
    的頭像 發(fā)表于 02-27 17:40 ?2788次閱讀
    運(yùn)算放大器的基本<b class='flag-5'>定義</b>和工作原理

    馬達(dá)的基本定義

    馬達(dá),即電動(dòng)機(jī)、發(fā)動(dòng)機(jī)的俗稱(chēng),以下是幾個(gè)關(guān)于馬達(dá)的定義 ?: ? 基本定義 ?: 馬達(dá)是英語(yǔ)motor的音譯,是一種能夠?qū)㈦娔堋⒘黧w動(dòng)能、壓縮空氣的內(nèi)能轉(zhuǎn)化為機(jī)械能的裝置?12。 ? 電磁裝置定義
    的頭像 發(fā)表于 02-24 11:16 ?6801次閱讀

    VirtualLab Fusion應(yīng)用:靈活的區(qū)域定義

    ,還可以定義光波導(dǎo)表面的光柵區(qū)域,以執(zhí)行例如耦合器的功能。為了在不限制用戶(hù)的情況下涵蓋上述所有內(nèi)容,VirtualLab Fusion中的區(qū)域配置非常靈活,具有多個(gè)現(xiàn)成選項(xiàng)和導(dǎo)入功能。在這個(gè)用例中,我們
    發(fā)表于 02-24 09:47

    DLPR350能否使用ROI功能,投一部分光?

    請(qǐng)問(wèn)各位大哥,DLPR350能否使用ROI功能,投一部分光。
    發(fā)表于 02-24 07:49

    const定義的是不是常量

    C語(yǔ)言是如何定義常量的?const定義的算不算是常量? 常見(jiàn)的有這么幾種方式。 首先就是宏定義,使用 define 來(lái)定義。 宏的特點(diǎn)就是在預(yù)處理的時(shí)候被替換,比如這個(gè)地方的 SIZE
    的頭像 發(fā)表于 01-14 11:35 ?561次閱讀

    VirtualLab Fusion:區(qū)域定義

    非常靈活,具有幾個(gè)現(xiàn)成的選項(xiàng)以及導(dǎo)入功能。在這個(gè)用例中,我們將詳細(xì)介紹區(qū)域配置的過(guò)程。 **區(qū)域定義 ** 注意:在Light Guide組件中,可以直接在組件本身中生成和配置區(qū)域。 **簡(jiǎn)單的區(qū)域
    發(fā)表于 01-06 08:56

    《DNK210使用指南 -CanMV版 V1.0》第三十八章 image碼識(shí)別實(shí)驗(yàn)

    find_barcodes()方法,用于識(shí)別圖像中的條形碼,find_barcodes()方法如下所示:image.find_barcodes(roi)find_barcodes()方法用于識(shí)別圖像中的條形碼
    發(fā)表于 11-13 09:35