我想将Alpha通道设置为.jpg图像,并将其值设置为0.5或50%或128(总范围为0到1或0-255范围),并仅使用opencv和numpy将其保存为.png。我知道如何使用其他库来执行此操作,但是我们被要求仅使用两个库即导入cv2和导入numpy来执行上述问题。我已经添加了Alpha通道,但是我不知道如何将其值设置为50%的透明度,因为我是opencv-python的新手,请提供帮助。
我已经尝试过此代码,但是即使用油漆打开它也会得到黑色图像。
Reduce opacity of image using Opencv in Python
这是我添加我的Alpha的方式
import cv2
import numpy as np
img = cv2.imread('food.jpg')
bgra = cv2.cvtColor(img, cv2.COLOR_BGR2BGRA)
print(bgra.shape)
有几种方法可以做到……我将从这张图片开始:
使用OpenCV添加空白的Alpha通道并使用Numpy设置内容:
import cv2
import numpy as np
img = cv2.imread('paddington.jpg')
# Add alpha layer with OpenCV
bgra = cv2.cvtColor(img, cv2.COLOR_BGR2BGRA)
# Set semi-transparent with Numpy
bgra[...,3] = 127
# Save result
cv2.imwrite('result.png',bgra)
[创建一个填充有128的实心Alpha层,并使用Numpy在深度方向堆叠:
import cv2
import numpy as np
img = cv2.imread('paddington.jpg')
# Create solid alpha layer filled with 128s
alpha = np.zeros([bgra.shape[0],bgra.shape[1],1], dtype=np.uint8) + 128
# Depth-wise stack that layer onto existing 3 RGB layers
bgra = np.dstack((img,alpha))
# Save result
cv2.imwrite('result.png',bgra)