使用opencv制作头像 | 李博的博客
0%

使用opencv制作头像

原始图像

avatar

首先使用 cv2.inRange() 选取叶子

然后对原图的 bgr 三个数组进行修改

RGB对照表

颜色名称 红色值Red 绿色值Green 蓝色值Blue
黑色 0 0 0
蓝色 0 0 255
绿色 0 255 0
青色 0 255 255
红色 255 0 0
洋红色 255 0 255
黄色 255 255 0
白色 255 255 255

HSV 对照表

img

在PS上操作

类似于 Photoshop 的替换颜色功能。上面做的没 ps 的好看,因为只是简单处理了一下。

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import numpy as np
import cv2

img_bgr = cv2.imread('avatar.png')

# Convert BGR to HSV
img_hsv = cv2.cvtColor(img_bgr, cv2.COLOR_BGR2HSV)

# Define range of blue color in HSV
# lower_green = np.array([35, 43, 46])
# upper_green = np.array([77, 255, 255])
lower_green = np.array([35, 80, 150])
upper_green = np.array([77, 255, 255])
leaf = cv2.inRange(img_hsv, lower_green, upper_green)

img_y_range = leaf.shape[0]
img_x_range = leaf.shape[1]

for i in range(0, img_y_range - 20):
for j in range(0, img_x_range):
if leaf[i][j] == 255:
b_temp = img_bgr[i][j][0]
g_temp = 255 - img_bgr[i][j][1]
r_temp = img_bgr[i][j][2]
img_bgr[i][j][0] = (50 + (b_temp % 10) * 3)
img_bgr[i][j][1] = (0 + (g_temp % 10) * 3)
img_bgr[i][j][2] = (210 + (r_temp % 10) * 3)

cv2.imshow('leaf', leaf)
cv2.imshow('new_avatar', img_bgr)

cv2.waitKey(0)
cv2.destroyAllWindows()
如果对您有帮助,请我喝杯奶茶?