怀旧特效,是基于心理学公式对原图像三个色彩通道进行变换和低通滤波,产生怀旧的光影效果。
心理学公式(人眼对绿色更敏感):
B= 0.272 * r + 0.534 * g + 0.131 * b
G = 0.349 * r + 0.686 * g + 0.168 * b
R = 0.393 * r + 0.769 * g + 0.189 * b
# 怀旧特效
def old(self):
oldImg = np.zeros((self.h, self.w, 3), np.uint8)
for i in range(self.h):
for j in range(self.w):
b = 0.272 * self.src[i, j][2] + 0.534 * self.src[i, j][1] + 0.131 * self.src[i, j][0]
g = 0.349 * self.src[i, j][2] + 0.686 * self.src[i, j][1] + 0.168 * self.src[i, j][0]
r = 0.393 * self.src[i, j][2] + 0.769 * self.src[i, j][1] + 0.189 * self.src[i, j][0]
if b > 255:
b = 255
if g > 255:
g = 255
if r > 255:
r = 255
oldImg[i, j] = np.uint8((b, g, r))
return oldImg
7 流年特效
流年特效,是美图软件常用的特性处理手段。其数学原理是基于原图像蓝色通道进行变换,变换采取经验公式14 b 14\sqrt b14
b
# 流年特效
def fleet(self):
fleetImg = np.zeros((self.h, self.w, 3), np.uint8)
for i in range(self.h):
for j in range(0, self.w):
b = math.sqrt(self.src[i, j][0]) * 14
g = self.src[i, j][1]
r = self.src[i, j][2]
if b > 255:
b = 255
fleetImg[i, j] = np.uint8((b, g, r))
return fleetImg
8 卡通特效
卡通特效,顾名思义,是卡通特效。
# 卡通特效
def cartoon(self):
num = 7 # 双边滤波数目
for i in range(num):
cv2.bilateralFilter(self.src, d = 9, sigmaColor = 5, sigmaSpace = 3)
median = cv2.medianBlur(self.gray, 7)
edge = cv2.adaptiveThreshold(median, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, blockSize = 5, C = 2)
edge = cv2.cvtColor(edge, cv2.COLOR_GRAY2RGB)
return cv2.bitwise_and(self.src, edge)