簡體   English   中英

如何使用 python 分離圖像中的觸摸形狀

[英]how to separate touching shapes in a image using python

我目前正在從事圖像分割項目,在成功預測掩碼后我想做的是量化圖像中的對象,如數量、區域直徑等。

問題是我未能分離對象,我嘗試了形態過濾器並使用不同的輪廓檢索方法。

這是韌性斷裂 SEM 圖像的掩模結果之一:

在此處輸入圖像描述

內外輪廓:

在此處輸入圖像描述

在此處輸入圖像描述

原圖:

在此處輸入圖像描述

我錯過了什么? 是否有使用 python 解決此問題的算法或方法?

您可以嘗試擴張和侵蝕您的圖像,如下所示:

import cv2
import numpy as np

img = cv2.imread("image.jpg")

def process(img):
    img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    img_blur = cv2.GaussianBlur(img_gray, (11, 11), 1)
    img_canny = cv2.Canny(img_blur, 200, 0)
    kernel = np.ones((7, 7))
    img_dilate = cv2.dilate(img_canny, kernel, iterations=1)
    return cv2.erode(img_dilate, kernel, iterations=1)

def get_contours(img):
    contours, _ = cv2.findContours(process(img), cv2.RETR_TREE, cv2.CHAIN_APPROX_NONE)
    for cnt in contours:
        area = cv2.contourArea(cnt)
        if  500 < area < 10000:
            cv2.drawContours(img, [cnt], -1, (0, 0, 255), -1) 

get_contours(img)
cv2.imshow("Image", img)
cv2.waitKey(0)

Output:

在此處輸入圖像描述

您可以在for循環中單獨訪問每個輪廓。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM