如何为图像中的所有轮廓固定零区域?

时间:2019-02-05 07:48:21

标签: python-3.x opencv3.0

我正在尝试检测给定图像中存在的鞋子的类型。为此,我正在读取图像并获取图像的轮廓。但是图像中所有轮廓的面积为零。

当我看这些轮廓时,我发现所有这些都是分离的,并且没有封闭的结构。我检查了是否有相交的轮廓(文档说如果是这种情况,该函数将无法给出正确的答案。)但是没有。

我查看了以下链接: Why Contour area only return 0? opencv countour area returns zero

解决方案仅建议将该区域视为浮动区域。

我也尝试增加图像的亮度。但是,即使那样也不能解决问题。

image = cv2.imread(imagePath)

increase = 50
v = image[:, :, 2]
v = np.where(v <= 255 - increase, v + increase, 255)
image[:, :, 2] = v
brightened = cv2.cvtColor(image, cv2.COLOR_HSV2BGR)

gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
edged = imutils.auto_canny(gray)

contours, _ = cv2.findContours(image=edged.copy(),        mode=cv2.RETR_EXTERNAL, method=cv2.CHAIN_APPROX_NONE)

contours = contours[0]

for x in contours:
    print('Area of contour is', cv2.contourArea(x))

c = max(contours, key=cv2.contour][1]Area)
print('Max area is', cv2.contourArea(c))

(x, y, w, h) = cv2.boundingRect(c)
footwear = gray[y: y+h, x: x+w]

原始图像和轮廓图像为: Contoured Image

Original Image

0 个答案:

没有答案