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

问题描述

当前,我正在处理一些图像,并且想要计算例如灰度值,像素面积等。 为此,我需要首先从图像中检测物体。

我尝试过:

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

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

enter image description here

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

解决方法

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

我的图像处理如下:
原始图片:
Original_Cat

  1. 执行中值滤镜模糊处理(平滑猫毛的边缘) Blurred_Cat

  2. 在图像上执行HSV阈值(以创建遮罩来去除猫周围的白色) HSV_Thresh_Cat

  3. 应用步骤2中的遮罩以从原始猫图像获取像素值 Masked_Cat

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

这是link,用于下载GRIP软件

这是我所有文件(包括自动生成的Python图像处理管道)的link