【发布时间】:2021-10-09 07:15:00
【问题描述】:
我有 this 图像,它有 4 个通道。我想要做的是,减少这张图片的不透明度。我希望图像保持透明,但是,我只想降低大众徽标部分的不透明度。 (使用 opencv/numpy 和 python)
这是我尝试过的:
logo = cv2.imread(FILE_PATH, cv2.IMREAD_UNCHANGED)
logo[:, :, 3] = 50
但这会将值 50 分配给整个图像,给我this 结果。请注意图像的其余部分不再透明(我希望它保持与原始图像相同。)
我想到了类似的东西:
#This is my logic NOT ANY CODE, I want to do something like this:
if (any of) other 3 channels are non zero, make alpha channel of that pixel = 50.
else, keep that pixel as it is. (This pixel would be part of logo)
有没有办法通过在 python 中使用 opencv / numpy 来实现这个结果?我的最后一个选择是遍历所有像素并查找上述条件,但我觉得这样效率低下。
This answer 正是我不想要的。我只想将徽标部分(彩色像素)的 alpha 通道设置为 50。
【问题讨论】:
-
logo[(logo[..., :3]!=0).any(2), 3] = 50。有关更多信息,请参阅this post
-
我的回答解决了你的问题吗?如果是这样,请考虑接受它作为您的答案 - 通过单击计票旁边的空心对勾/复选标记。如果没有,请说出什么不起作用,以便我或其他人可以进一步帮助您。谢谢。 meta.stackexchange.com/questions/5234/…