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

时间:2014-01-13 07:00:48

标签: ios image opencv image-processing

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

到目前为止,我已经开发出检测面部,然后找到面部内的眼睛。 我想裁剪圆形的眼睛。

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

在上面的代码中,我能够用黑色掩盖图像,留下眼睛区域。现在我想只裁剪眼睛区域。

有人可以帮我解决这个问题。请查看以下图片

enter image description here

1 个答案:

答案 0 :(得分:0)

根据定义,

裁剪意味着从较大的图像中剪切轴对齐的矩形,留下较小的图像。

如果要“裁剪”非轴对齐的矩形,则必须使用遮罩。蒙版可以是完整图像的大小(这有时很方便),也可以是包含要保留的所有像素的小和最小边界(轴对齐)矩形。

此掩码可以是二进制,这意味着它表示像素是否可见,或者它可以是 alpha-mask ,表示透明度其中的任何像素,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()