答案 0 :(得分:3)
imrotate
功能可以围绕指定的角度旋转整个图像。你想要的只是旋转图像的一部分。为此,您必须指定要旋转的部分。从形式上讲,这是该符号所在的矩形。
通过选择所有行和列,可以找到此矩形的坐标,其中任何像素都是黑色。这可以通过获取所有行的总和,在那里找到第一个和最后一个非零条目,并在所有列上执行相同的操作来完成。
sx=find(sum(im==0,1),1,'first');
ex=find(sum(im==0,1),1,'last');
sy=find(sum(im==0,2),1,'first');
ey=find(sum(im==0,2),1,'last');
然后是图像的相关部分
im(sy:ey,sx:ex)
现在,您只能旋转图像的这一部分并将其保存到整个图像中的相同位置:
im(sy:ey,sx:ex) = imrotate(im(sy:ey,sx:ex),180);
带有所需的结果:
注意:这仅适用于180°角度,例如您提供的示例。如果您旋转任何其他角度,例如90°甚至任意角度,例如23°,imrotate
的输出与输入的大小不同,因此赋值im(sy:ey,sx:ex) = ...
将始终抛出错误。