检测对象的轮廓并处理轮廓内的值

detect outline of a object and handle the values within the outline

目前,我正在处理一些图像,想计算灰度值、像素面积等。 为此,我需要先从图像中检测到对象。

我试过了:

img = cv2.imread(file_path, cv2.IMREAD_GRAYSCALE)
edged = cv2.Canny(img, lower, upper)

但是它检测到物体的所有边缘。我只喜欢检测物体的轮廓(如下图,红线)。

有什么方法可以检测物体的轮廓吗?

我建议使用 GRIP 软件实现图像处理管道来执行此操作(我已经为您完成了)。

我的图片处理如下:
原图:

  1. 执行中值滤波模糊(平滑猫毛的边缘)

  2. 对图像执行 HSV 阈值(以创建去除猫周围白色的蒙版)

  3. 应用步骤 2 中的蒙版,从原始猫图像中获取像素值

现在使用该蒙版的图像,您可以计算灰度值和像素面积

这里是link下载GRIP软件

这是我所有文件的 link(包括 auto-generated Python 图像处理管道)