有没有简单的方法可以使用cv2分析透明png图像?

时间:2020-01-19 13:44:51

标签: python python-3.x opencv cv2

我正在尝试使用CV2加载透明图像(只是没有背景),但是当我尝试显示图像时,我得到了黑色背景。是否有任何可能(且简便)的方式来加载透明PNG图像? 输入:

The result I get 结果: The result I get

这是我得到的结果: 即使我在努力 此代码:

import cv2
im = cv2.imread("image.png", cv2.IMREAD_UNCHANGED)
cv2.imshow('test',im)

我得到黑色背景的结果

2 个答案:

答案 0 :(得分:0)

您正在加载的图像具有四个通道。检查阵列大小。通道4是Alpha通道,您可以使用Alpha通道将图像相应地保存回去。您还可以从alpha通道生成遮罩(在OpenCV中,遮罩是二进制的,分别为0和255)。

大多数OpenCV操作可在4通道图像上使用,但是它们不会特殊处理alpha通道或从中获取任何信息。

答案 1 :(得分:0)

cv.loadImage()用于MultiCameraCalibration。对单个图像使用cv.imread()。要获得透明度,您必须使用cv.IMREAD_UNCHANGED的标志

这是在Python / OpenCV中执行此操作的方法。请注意,使用cv.imshow您将看不到透明性。它会是黑色的。要进行进一步的分析,您应该提取Alpha通道作为遮罩,并将其用于您想做的任何事情,以将处理限制在鞋子上而不是鞋子周围的背景上。

import cv2

# load image with alpha channel
img = cv2.imread('shoe.png', cv2.IMREAD_UNCHANGED)

# get mask from alpha channel
mask = img[:,:,3]

# view images
# NOTE: imshow does not show transparency. It will be black there.
cv2.imshow('img', img)
cv2.imshow('mask', mask)
cv2.waitKey(0)
cv2.destroyAllWindows()

# Saving the image does contain transparency as can be seen when viewed with some external viewer.
cv2.imwrite('shoe_copy.png', img)