我正在用Python研究OpenCV。我试着用PNG格式改变图片的颜色,但是我遇到了一些PNG背景的问题(图像有透明的背景)。在
当我把它变成灰度时,背景变成了黑色——我的照片不再透明了。我想要的是保持图片的透明背景。在
原始图像:
![](https://i.stack.imgur.com/51IgH.png)
我的代码:
img = cv2.imread('line.png',cv2.IMREAD_UNCHANGED)
cv2.imshow('line',img)
cv2.waitKey()
输出图像:
![](https://i.stack.imgur.com/a4v79.png)
期望输出:
![](https://i.stack.imgur.com/hCj0R.png)
边界图像周围的白色应该是透明的。我该怎么做?在
Tags:
您必须在数组中添加第四个通道,以便透明度信息可以在alpha通道中编码。在
下面是一个python代码示例:
灰色图像的结果:
BGR图像的结果:
首先,让我提一下,如果使用
cv2.imshow
显示具有alpha透明度的图像,那么透明区域将是黑色的。在因为输入图像已经包含了alpha通道,所以解决方案很简单,只需重用alpha通道。在
尽管PNG格式允许alpha通道具有灰度,但有一个小问题,AFAIK没有办法用OpenCV编写这样的图像。在
因此,解决方案很简单:获取处理后的灰度图像,将其转换回BGR,添加原始alpha通道,并保存结果。在
因为我们使用Python,因此图像被表示为numpy数组,所以我们可以使用array indexing来提取我们需要的通道。^{} 允许我们轻松添加alpha通道。在
示例代码:
结果:
在不同的背景下,您可以看到它是真正透明的:
相关问题 更多 >
编程相关推荐