Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 移除对象';香港的背景及;根据fabric js中的内容调整对象大小_Javascript_Image_Image Processing_Fabricjs - Fatal编程技术网

Javascript 移除对象';香港的背景及;根据fabric js中的内容调整对象大小

Javascript 移除对象';香港的背景及;根据fabric js中的内容调整对象大小,javascript,image,image-processing,fabricjs,Javascript,Image,Image Processing,Fabricjs,我不确定我在问题中的标题是否正确 在“我的项目”中,用户将一件衣服放到画布上。通常,服装项目有一些白色背景,如下所示: 我应用RemoveColor过滤器并移除白色背景。但这个物体的大小仍然和以前一样。我想要的是这样的剪辑图像: 删除不必要的背景 我如何才能做到这一点?这有可能吗?一般流程如下: 加载图像并转换为灰度 阈值图像,并得到一个二值图像 应用形态学运算,在你的情况下,应该这样做。反转图像以获得黑色背景和白色前景 查找连接的区域并选择最大的感兴趣区域 把它剪下来 编辑 下面是Pyth

我不确定我在问题中的标题是否正确

在“我的项目”中,用户将一件衣服放到画布上。通常,服装项目有一些白色背景,如下所示:

我应用RemoveColor过滤器并移除白色背景。但这个物体的大小仍然和以前一样。我想要的是这样的剪辑图像:

删除不必要的背景


我如何才能做到这一点?这有可能吗?

一般流程如下:

  • 加载图像并转换为灰度
  • 阈值图像,并得到一个二值图像
  • 应用形态学运算,在你的情况下,应该这样做。反转图像以获得黑色背景和白色前景
  • 查找连接的区域并选择最大的感兴趣区域
  • 把它剪下来
  • 编辑 下面是Python中的一些示例代码(使用opencv和skimage库)

    EDIT2与代码步骤对应的图像

    非常感谢您如此详细的解释!
    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]