PSD 文件保存图层,因为 PNG 会向图像添加噪点

PSD file save layer as PNG addes noise to the image

我正在研究角点检测。我有一个 3 层的 PSD 文件,我只想提取 1 层,我想提取它的角。

  1. 我使用 psd-tool 提取图层:

    if layer.name == 'Layer 3':
    img = layer.as_PIL().save("tmp.png")
    
  2. 接下来读取tmp.png文件并进行如下操作:

    img = cv2.imread(filename)
    gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
    (thresh, im_bw) = cv2.threshold(gray, 1, 255, cv2.THRESH_BINARY)
    cv2.imwrite('bw_image.png', im_bw)
    
    
    _ ,contours, hierarchy = cv2.findContours(im_bw, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
    
    contours = sorted(contours, key=cv2.contourArea,reverse=True)[:1]
    
    cv2.drawContours(img, contours, -1, (0,255,0), 5)
    
    cv2.imwrite("image_processed.png", img)
    

但是如果我手动提取图层并保存。算法运行良好,returns 4 个角点。

请指出这里可能存在的问题。

我了解到,如果我们显示带有透明信息的PIL图像,它会自动显示为BMP格式。因此,我们必须将透明层粘贴到实际图像上,然后以正确的格式保存。 PNG.