尽量避免for
在 Python 中处理图像时会出现循环 - 它们非常慢、效率低且难以阅读。 Numpy 和 OpenCV 是矢量化的 - 它们以优化的方式处理整个图像C
并且速度很快。
因此,您可以转换为 HSV 并提取 V 通道,然后简单地对其进行阈值并将其合并为 alpha 层:
import cv2
import numpy as np
# Load Image
im = cv2.imread('temple.jpg')
# Convert to HSV and take V channel
V = cv2.cvtColor(im,cv2.COLOR_BGR2HSV)[...,2]
# Threshold V channel at 100 to make alpha channel (A)
_, A = cv2.threshold(V,100,255,cv2.THRESH_BINARY)
# Stack A channel onto RGB channels
result = np.dstack((im,A))
# Save result
cv2.imwrite('result.png',result)
Photo https://en.wikipedia.org/wiki/Ta_Prohm#/media/File:Angkor_SiemReap_Cambodia_Tha-Prom-Temple-01.jpg作者:CEphoto,Uwe Aranas 或 © CEphoto,Uwe Aranas
抄送-SA 3.0
Result
如果您希望明亮的像素透明,请更改为:
_, A = cv2.threshold(V,100,255,cv2.THRESH_BINARY_INV)
那么结果将是:
Keywords:Python、图像处理、HSV、色相饱和度和值、添加 alpha 通道、合并 alpha 通道、创建 alpha 通道、OpenCV