然后使用OpenCV应用non-photorealistic rendering。这是最终的输出 我想生成颜色均匀的脸部(也消除光线反射),同时又不影响眼睛,嘴巴。如何通过调整当前代码或opencv(python)中的另一种可能的方法来实现这一目标
答案 0 :(得分:1)
基于:https://www.pyimagesearch.com/2014/07/07/color-quantization-opencv-using-k-means-clustering/
以下代码可满足您的需求:
import cv2
import numpy as np
from sklearn.cluster import MiniBatchKMeans
n = 32
# read image and convert to gray
img = cv2.imread('./obama.jpg',cv2.IMREAD_COLOR)
img = cv2.resize(img, (0,0), fx=.2, fy=.2)
img = cv2.cvtColor(img, cv2.COLOR_BGR2LAB)
(h, w) = img.shape[:2]
img =np.reshape(img, (img.shape[0]* img.shape[1], 3))
clt = MiniBatchKMeans(n_clusters=n)
labels = clt.fit_predict(img)
quant = clt.cluster_centers_.astype("uint8")[labels]
quant = np.reshape(quant, (h,w,3))
img = np.reshape(img, (h,w,3))
quant = cv2.cvtColor(quant, cv2.COLOR_LAB2BGR)
img = cv2.cvtColor(img, cv2.COLOR_LAB2BGR)
double = np.hstack([img, quant])
while True:
cv2.imshow('img', double)
k = cv2.waitKey(30) & 0xff
if k == 27:
break
您可以使用本教程将颜色量化仅应用于包含面部的盒子。