如何使用OpenCV获取白色背景上的前景轮廓?

时间:2019-03-28 20:23:57

标签: python-3.x opencv tensorflow image-segmentation opencv-contour

目标:

我正在训练一个张量流模型,以便能够概述夹克/衬衫是什么。为了创建此模型,我必须从衬衫图片创建蒙版数据集。不幸的是,我无法找到为我完成此任务的任何数据集,也找不到任何可以处理此任务的现有模型。

因此,我试图使用OpenCV创建自己的数据集。问题是,我无法用不同的图像获得一致的结果。

这是我从OpenCV网站获取的用于绘制轮廓的代码:

import numpy as np
from matplotlib import pyplot as plt
import cv2

im = cv2.imread('./jackets/jacket.jpg')
imgray = cv2.cvtColor(im,cv2.COLOR_BGR2GRAY)
ret,thresh = cv2.threshold(imgray,127,255,0)
im2, contours, hierarchy = cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)

# Create an output of all zeroes that has the same shape as the input
# image
out = np.zeros_like(im)

# On this output, draw all of the contours that we have detected
# in white, and set the thickness to be 3 pixels
cv2.drawContours(out, contours, 1, 255, cv2.FILLED)

# Spawn new windows that shows us the donut
# (in grayscale) and the detected contour
cv2.imshow('Original', im) 
cv2.imshow('Generated Mask', out)

# Wait indefinitely until you push a key.  Once you do, close the windows
cv2.waitKey(0)
cv2.destroyAllWindows()

此代码对于某些图片非常有用,可以准确地给我我想要的东西。这是OpenCV做我想做的一个例子:

OpenCV when is contours successfully

不幸的是,它不适用于我的所有图像。这里有一些失败的例子。

示例1:

Fail #1

示例2:

enter image description here

有人对此有任何建议吗?

0 个答案:

没有答案