OpenCV:改变像素的颜色

时间:2014-07-31 06:15:50

标签: c++ opencv mat hsv eye-detection

使用OpenCV,我正在检测面部,检测该面部的左眼和右眼,并将眼睛提取到新的Mat图像中。然后我将眼睛图像颜色从BGR转换为HSV。

我正在使用inRange()检查眼睛颜色是否在某个范围内。这会显示红色的眼睛区域(见下图)。

我的问题是:我想将眼睛的颜色(使用inRange()检测)从红色变为黑色。我不太确定从哪里开始。

任何帮助表示赞赏! 谢谢!


目前的结果:

2 个答案:

答案 0 :(得分:1)

你已经有了掩码,只需做一个for循环并将像素设置为黑色(.at = Vec3b(0,0,0),当然在BGR空间中),其中掩码为255.

答案 1 :(得分:1)

如果您想让眼睛变蓝(例如

),可以使用以下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;
 }
}