最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

OpenCV實(shí)現(xiàn)從灰度圖像切出Mask前景區(qū)域

 更新時(shí)間:2022年06月16日 08:59:22   作者:SpikeKing  
本文主要介紹了如何利用OpenCV實(shí)現(xiàn)從灰度圖像,根據(jù)閾值,切出多個(gè)前景區(qū)域,過濾面積太小的圖像。文中的示例代碼講解詳細(xì),需要的可以參考一下

從灰度圖像,根據(jù)閾值,切出多個(gè)前景區(qū)域,過濾面積太小的圖像。

OpenCV的Python邏輯,clip_gray_patches

def clip_gray_patches(img_gray, ths=32, filter_percent=0.0005):
    """
    從灰度圖像切出多個(gè)前景區(qū)域,閾值大于ths,過濾面積占比小于filter_percent的圖像
    @param img_gray: 灰度圖像
    @param ths: 前景閾值
    @param filter_percent: 過濾面積
    @return: patches list, 輪廓圖像
    """

    # 根據(jù)thresh_val過濾mask
    ret, gray_mask = cv2.threshold(img_gray, ths, 1, 0)
    contours, hierarchy = cv2.findContours(gray_mask, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)

    img_area = get_image_size(img_gray)  # 圖像面積

    img_copy = copy.copy(img_gray)
    img_patches = []

    # 遍歷全部輪廓
    for cnt in contours:
        area = cv2.contourArea(cnt)
        if area / img_area < filter_percent:  # 過濾小圖像
            continue

        # 將小patch的前景設(shè)置為255,背景設(shè)置為0
        mask = np.zeros(img_gray.shape)
        cv2.drawContours(mask, [cnt], -1, 255, -1)
        mask = mask.astype(np.uint8)

        # 將原圖,根據(jù)mask,貼入新圖像中,再提取mask
        masked = cv2.add(img_gray, np.zeros(np.shape(img_gray), dtype=np.uint8), mask=mask)
        box = get_mask_box(mask)
        img_patch = get_cropped_patch(masked, box)

        img_patches.append(img_patch)
        img_copy = cv2.drawContours(img_copy, [cnt], -1, 255, 1)  # 繪制邊界

    return img_patches, img_copy

def get_image_size(img):
    """
    獲取圖像尺寸
    """
    h, w = img.shape[:2]
    return float(h * w)
    
def get_mask_box(mask):
    """
    mask的邊框
    """
    import numpy as np
    y, x = np.where(mask)
    x_min = np.min(x)
    x_max = np.max(x)
    y_min = np.min(y)
    y_max = np.max(y)
    box = [x_min, y_min, x_max, y_max]
    return box

def get_cropped_patch(img, box):
    """
    獲取Img的Patch
    :param img: 圖像
    :param box: [x_min, y_min, x_max, y_max]
    :return 圖像塊
    """
    h, w = img.shape[:2]
    x_min = int(max(0, box[0]))
    y_min = int(max(0, box[1]))
    x_max = int(min(box[2], w))
    y_max = int(min(box[3], h))

    if len(img.shape) == 3:
        img_patch = img[y_min:y_max, x_min:x_max, :]
    else:
        img_patch = img[y_min:y_max, x_min:x_max]
    return img_patch

輸入的灰度圖像:

輸出圖像:

到此這篇關(guān)于OpenCV實(shí)現(xiàn)從灰度圖像切出Mask前景區(qū)域的文章就介紹到這了,更多相關(guān)OpenCV Mask前景區(qū)域內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python實(shí)現(xiàn)手機(jī)號(hào)自動(dòng)判斷男女性別(實(shí)例解析)

    Python實(shí)現(xiàn)手機(jī)號(hào)自動(dòng)判斷男女性別(實(shí)例解析)

    這篇文章主要介紹了Python實(shí)現(xiàn)手機(jī)號(hào)自動(dòng)判斷男女性別,本文性別判斷主要依靠airtest中的自動(dòng)化測(cè)試實(shí)現(xiàn),通過實(shí)例代碼給大家講解的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-12-12
  • 深入理解Django的中間件middleware

    深入理解Django的中間件middleware

    這篇文章主要給大家介紹了關(guān)于Django中的中間件middleware的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-03-03
  • Python3中的真除和Floor除法用法分析

    Python3中的真除和Floor除法用法分析

    這篇文章主要介紹了Python3中的真除和Floor除法用法,結(jié)合實(shí)例形式分析了真除與Floor除法的區(qū)別與使用技巧,需要的朋友可以參考下
    2016-03-03
  • 幾個(gè)提升Python運(yùn)行效率的方法之間的對(duì)比

    幾個(gè)提升Python運(yùn)行效率的方法之間的對(duì)比

    這篇文章主要介紹了幾個(gè)提升Python運(yùn)行效率的方法之間的對(duì)比,包括使用Cython和PyPy等這些熱門方法,需要的朋友可以參考下
    2015-04-04
  • Python繪制熱力圖示例

    Python繪制熱力圖示例

    這篇文章主要介紹了Python繪制熱力圖,結(jié)合實(shí)例形式分析了Python使用pyheatmap及matplotlib模塊進(jìn)行數(shù)值計(jì)算與圖形繪制相關(guān)操作技巧,需要的朋友可以參考下
    2019-09-09
  • python 實(shí)現(xiàn)語音聊天機(jī)器人的示例代碼

    python 實(shí)現(xiàn)語音聊天機(jī)器人的示例代碼

    這篇文章主要介紹了python 實(shí)現(xiàn)語音聊天機(jī)器人的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-12-12
  • 老生常談python中的重載

    老生常談python中的重載

    所謂重載,就是多個(gè)相同函數(shù)名的函數(shù),根據(jù)傳入的參數(shù)個(gè)數(shù),參數(shù)類型而執(zhí)行不同的功能。所以函數(shù)重載實(shí)質(zhì)上是為了解決編程中參數(shù)可變不統(tǒng)一的問題。這篇文章主要介紹了老生常談python中的重載,需要的朋友可以參考下
    2018-11-11
  • python 通過pip freeze、dowload打離線包及自動(dòng)安裝的過程詳解(適用于保密的離線環(huán)境

    python 通過pip freeze、dowload打離線包及自動(dòng)安裝的過程詳解(適用于保密的離線環(huán)境

    這篇文章主要介紹了python 通過pip freeze、dowload打離線包及自動(dòng)安裝【適用于保密的離線環(huán)境】,本文通圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-12-12
  • django orm模糊查詢、正則匹配多個(gè)值方式

    django orm模糊查詢、正則匹配多個(gè)值方式

    這篇文章主要介紹了django orm模糊查詢、正則匹配多個(gè)值方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • Python實(shí)現(xiàn)檢測(cè)SSL證書是否過期

    Python實(shí)現(xiàn)檢測(cè)SSL證書是否過期

    我們知道 SSL 證書是會(huì)過期的,一旦過期之后需要重新申請(qǐng),如果沒有及時(shí)更換證書的話,就有可能導(dǎo)致網(wǎng)站出問題,所以本文介紹了如何利用Python實(shí)現(xiàn)檢測(cè)SSL證書是否過期,需要的可以參考下
    2023-08-08

最新評(píng)論

政和县| 奉节县| 胶南市| 石城县| 漯河市| 科尔| 安顺市| 兴化市| 隆德县| 濮阳市| 成武县| 盖州市| 遂溪县| 安吉县| 平武县| 板桥市| 蕲春县| 东港市| 万宁市| 武城县| 丰都县| 博乐市| 武川县| 闵行区| 宝丰县| 仁怀市| 普兰县| 鸡西市| 射阳县| 泰和县| 抚州市| 谷城县| 祁阳县| 垦利县| 祁东县| 陆河县| 电白县| 蒙山县| 中江县| 揭西县| 宝丰县|