使用 OpenCV,我正在检测一张脸,检测这张脸的左眼和右眼,并将眼睛提取到一个新的 Mat 图像中。然后我将眼睛图像颜色从 BGR 转换为 HSV。
我正在使用 inRange() 检查眼睛颜色是否在某个范围内。这将显示眼睛的红色区域(见下图)。
我的问题是:我想将眼睛颜色(使用 inRange() 检测)从红色更改为黑色。我不太确定从这里去哪里。
任何帮助表示赞赏!谢谢!
当前结果:
使用 OpenCV,我正在检测一张脸,检测这张脸的左眼和右眼,并将眼睛提取到一个新的 Mat 图像中。然后我将眼睛图像颜色从 BGR 转换为 HSV。
我正在使用 inRange() 检查眼睛颜色是否在某个范围内。这将显示眼睛的红色区域(见下图)。
我的问题是:我想将眼睛颜色(使用 inRange() 检测)从红色更改为黑色。我不太确定从这里去哪里。
任何帮助表示赞赏!谢谢!
当前结果:
您已经有了掩码,只需执行 for 循环并将像素设置为黑色(.at = Vec3b(0,0,0),当然在 BGR 空间中)掩码为 255。
例如,如果你想让眼睛变蓝,你可以用下面的 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;
}
}