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

问题描述

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

我尝试过:

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...