我正在我的项目中开发面部特征检测。
到目前为止,我已经开发出检测脸部,然后找到脸部内的眼睛。
我想把眼睛剪成圆形。
circle( mask, center, radius, cv::Scalar(255,255,255), -1, 8, 0 );
image.copyTo( dst, mask );
在上面的代码中,我能够用黑色屏蔽图像,留下眼睛区域。现在我只想裁剪眼睛区域。
有人可以帮我解决这个问题吗?请检查下图
Cropping根据定义,意味着从较大的图像中剪切出轴对齐的矩形,留下较小的图像。
如果您想“裁剪”非轴对齐的矩形,则必须使用遮罩。蒙版可以是完整图像的大小(有时这很方便),也可以是包含要保持可见的所有像素的小且最小的边界(轴对齐)矩形。
这个面膜可以binary,这意味着它指示像素是否可见,或者它可以是阿尔法掩模它表示其中任何像素的透明度,其中0
指示不可见像素和(对于 8 位掩模图像)255
表示完全不透明。
在上面的示例中,您可以获得子图像 ROI(感兴趣区域),如下所示:
cv::Mat eyeImg = image(cv::Rect(center.x - radius, // ROI x-offset, left coordinate
center.y - radius, // ROI y-offset, top coordinate
2*radius, // ROI width
2*radius)); // ROI height
注意eyeImg
不是副本,而是指其中的相同像素image
。如果您想要副本,请添加.clone()
在最后。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)