PSD 文件保存图层,因为 PNG 会向图像添加噪点
PSD file save layer as PNG addes noise to the image
我正在研究角点检测。我有一个 3 层的 PSD 文件,我只想提取 1 层,我想提取它的角。
我使用 psd-tool 提取图层:
if layer.name == 'Layer 3':
img = layer.as_PIL().save("tmp.png")
接下来读取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.
我正在研究角点检测。我有一个 3 层的 PSD 文件,我只想提取 1 层,我想提取它的角。
我使用 psd-tool 提取图层:
if layer.name == 'Layer 3': img = layer.as_PIL().save("tmp.png")
接下来读取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.