Используя OpenCV, я определяю лицо, определяю левый и правый глаза этого лица и извлекаю глаз в новое изображение циновки. Затем я преобразую цвет изображения глаза из BGR в HSV.
Я проверяю, находится ли цвет глаз в определенном диапазоне, используя inRange (). Это отображает область глаза, которая красная (см. Изображение ниже).
Мой вопрос: я хотел бы изменить цвет глаз (определяется с помощью inRange ()) с красного на черный. Я не слишком уверен, куда идти отсюда.
Любая помощь приветствуется!
Спасибо!
Текущий результат:
Вы можете сделать это с помощью следующего цикла for, если вы хотите сделать глаза голубыми, например
cv::Vec3b pixelColor(255,0,0);
for(int y=0;y<img.rows;y++){
for(int x=0;x<img.cols;x++){
cv::Point2f point(x, y);
if (mask.at<uchar>(point)) image.at<Vec3b>(cv::Point(x,y)) = pixelColor;
}
}
У вас уже есть маска, просто выполните цикл for и установите пиксели в черный цвет (.at = Vec3b (0,0,0), в пространстве BGR, конечно), где маска равна 255.