我正在尝试检测给定图像中存在的鞋子的类型。为此,我正在读取图像并获取图像的轮廓。但是图像中所有轮廓的面积为零。
当我看这些轮廓时,我发现所有这些都是分离的,并且没有封闭的结构。我检查了是否有相交的轮廓(文档说如果是这种情况,该函数将无法给出正确的答案。)但是没有。
我查看了以下链接: 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