使用OpenCv在IOS中裁剪圆形图像

我正在开发项目中的脸部特征检测。

到目前为止,我已经发展了检测脸部,然后find脸部的眼睛。 我想剪下圆形的眼睛。

circle( mask, center, radius, cv::Scalar(255,255,255), -1, 8, 0 ); image.copyTo( dst, mask ); 

在上面的代码中,我可以使用黑色遮蔽眼睛区域的图像。 现在我只想裁剪眼睛区域。

有人可以帮我解决这个问题。请检查下面的图像

在这里输入图像说明

根据定义,裁剪是指从较大的图像中切出一个轴alignment的矩形,留下较小的图像。

如果你想“裁剪”一个非轴alignment的矩形,你将不得不使用一个蒙版。 蒙版可以是完整图像的大小(这有时是方便的),也可以是包含所有想要显示的像素的最小边界(轴alignment)矩形。

这个掩码可以是二进制的 ,也就是说它表示一个像素是否可见,或者它可以是一个alpha-mask ,它表示任何一个像素的透明度,其中0表示一个不可见的像素,位掩码图像) 255表示完全不透明度。

在你的例子中,你可以像这样获得子图像ROI(Region-Of-Interest)

 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不是副本,而是指图像内的相同像素。 如果你想要一个副本,在末尾添加一个.clone()