Как правильно подобрать цвет и фактуру лица

1

Я пытаюсь украсить лицо, используя opencv.Here исходное изображение Изображение 174551

В настоящее время я делаю

  1. Уменьшение масштаба изображения, применение бифиллера и масштабирование до исходного
  2. Затем преобразование RGB оригинального изображения в оттенки серого и последующее медианное изображение для уменьшения
  3. Применить Adaptive Threshold для создания edgemask
  4. Объединение изображения, полученного с шага 1, с маской края с растровым изображением. Здесь вывод Изображение 174551

Затем применялся нефотореалистичный рендеринг с использованием OpenCV. Здесь конечный результат Изображение 174551 Я хочу создать лицо с однородным цветом (также удаляю отражение света), не затрагивая глаз, рта. Как я могу достичь этого либо путем настройки моего текущего кода, либо другого возможного подхода в opencv (python)

Теги:
opencv
image-processing

1 ответ

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

Вы можете использовать этот учебник, чтобы применить квантование цвета только к ящикам, содержащим лица.

https://realpython.com/face-recognition-with-python/

  • 0
    это поразительно. Было бы еще лучше, если бы вы могли применять его только для лица. +1 !!
  • 1
    Я надеюсь, что вы можете решить с моей подсказкой. Давайте пометим это как решенное ;-)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню