Ask Your Question

Revision history [back]

How do I apply skintone on a particular selfie using opencv

I'm looking for an approach to apply skintone on a particular selfie without noise.(opencv-python) Currently I have tried:

  • Converting image to gray scale,
  • Applying binary threshold followed by adaptive thresholding
  • Finally changing all the white pixels to the desired color

    The problem with this approach is there's

a lot of noise especially when the selfie does not have proper brightness

(when taken in slightly darker place) or the selfie simply has some beard. The noise occurs mainly around the eye region and around the cheeks(because of beard and skintone change around the eyes). I have tried kmeans clustering though I'm getting a slightly better output but not the desired one.

I also tried applying converting the image to pencil sketch with gaussian blur and edge detection followed by binary threshold and converting white pixels to required color but the noise remains the same. I would like to hear some better way of approaching the problem or ways to remove noise without any user input.