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

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

我的问题是:我想改变从红色到黑色的眼睛颜色(使用Inrange())。我不太确定从这里去哪里。

任何帮助都得到了赞赏! 谢谢!


当前结果:

有帮助吗?

解决方案

如果要使眼睛是蓝色,则可以使用以下循环执行此操作,例如

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;
 }
}
.

其他提示

您已经有掩码,只做一个循环,并将像素设置为黑色(.at= vec3b(0,0,0),当然是掩码为255。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top