我想从图像中裁剪脸部,但脸部图像不是直线/垂直对齐的。我有四个像素点来裁剪它.. 问题是, 如果我将首先变换图像,则此后不能使用像素点来裁剪其中的面部部分。 或者在其他情况下,我没有精确的边界框来直接使用imcrop裁剪图像,因为面部区域有些向左或向右倾斜。 四个像素点位于要裁剪的面部的前额,下巴和耳朵处。
答案 0 :(得分:2)
你应该看看poly2mask。此函数根据给定的x和y坐标生成遮罩图像:
BW = poly2mask(x,y,m,n);
其中x
和y
是您的坐标,生成的BW
图片是m
n
。然后,您可以使用此BW
图像通过执行
I
I(~BW) = 0;
如果你真的想裁剪,那么你可以得到边界框(通过regionprops函数或下面的代码):
x1 = round(min(x));
y1 = round(min(y));
x2 = round(max(x));
y2 = round(max(y));
然后在使用BW
作为遮罩后裁剪图像。
I2 = I(x1:x2,y1:y2);
希望有所帮助。