使用 opencv 提取最大的斑点

Extract biggest blob with opencv

本文关键字:斑点 opencv 提取 使用      更新时间:2023-10-16

我有一个二进制图像,将人类描绘成白色斑点,背景描绘成黑色。我想使用 opencv 从大图像中"裁剪"最大(或 3 个最大(斑点。

怎么做呢?

我不确定您是否找到了答案,但根据我所理解的您的要求,这是代码的基本结构。您可以根据需要对其进行修改。

import numpy as np
import cv2
# load the image
image = cv2.imread("path_to_your_image.png") # if this not a binary image, you can threshold it
output = image.copy()
im2,contours,hierarchy = cv2.findContours(image, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)
if len(contours) != 0:
    # the contours are drawn here
    cv2.drawContours(output, contours, -1, 255, 3)
    #find the biggest area of the contour
    c = max(contours, key = cv2.contourArea)
    x,y,w,h = cv2.boundingRect(c)
    # draw the 'human' contour (in green)
    cv2.rectangle(output,(x,y),(x+w,y+h),(0,255,0),2)
# show the image
cv2.imshow("Result", output)
cv2.waitKey(0)

注意:x,y,x+w和y+h为您提供了框的范围,因此有了这些值,您可以获得最大斑点的感兴趣区域。

希望这有帮助!