如何使jpg图像半透明?

问题描述 投票:0回答:1

我想将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 python-idle python-3.7.4
1个回答
0
投票

有几种方法可以做到……我将从这张图片开始:

enter image description here


使用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)

enter image description here


[创建一个填充有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)

© www.soinside.com 2019 - 2024. All rights reserved.