【发布时间】:2018-10-05 06:48:50
【问题描述】:
不确定我是否在问题中输入了正确的标题。
在我的项目中,用户将一件衣服放到画布上。通常服装项目有一些白色背景,看起来像这样:
我应用 RemoveColor 过滤器并删除白色背景。但是该对象仍然具有与以前相同的大小。我想要的是这样的剪辑图像:
去除不必要的背景。
我该怎么做?有可能吗?
【问题讨论】:
标签: javascript image image-processing fabricjs
不确定我是否在问题中输入了正确的标题。
在我的项目中,用户将一件衣服放到画布上。通常服装项目有一些白色背景,看起来像这样:
我应用 RemoveColor 过滤器并删除白色背景。但是该对象仍然具有与以前相同的大小。我想要的是这样的剪辑图像:
去除不必要的背景。
我该怎么做?有可能吗?
【问题讨论】:
标签: javascript image image-processing fabricjs
一般管道如下:
编辑 这是 Python 中的一些示例代码(使用 opencv 和 skimage 库)。
img = cv2.imread('test2.png')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
t, bw_img = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
closing = cv2.morphologyEx(bw_img, cv2.MORPH_CLOSE, np.ones((3, 3)))
closing = cv2.bitwise_not(closing)
labels, num = measure.label(closing, background=0, connectivity=2, return_num=True)
max_size, max_blob = 0, None
for l in range(1, num+1):
blob = np.zeros_like(labels)
blob[labels == l] = 1
nz = np.count_nonzero(blob)
if nz > max_size:
max_size = nz
max_blob = blob
assert(max_blob is not None)
x, y = np.nonzero(max_blob)
xmin, xmax = min(x), max(x)
ymin, ymax = min(y), max(y)
max_blob = max_blob[xmin: xmax, ymin:ymax]
# Resized color image
img = img[xmin: xmax, ymin:ymax]
【讨论】: