通常在Mathematica中,裁切图片使用ImageTake即可,但有时候对裁切的要求较高,需要精细调整,这时候就需要

写个控制Manipulate微调一下了,根据微调数据,再使用ImageTake就能得到理想的结果了。

pic = Import["C:/Users/1/Desktop/s2.png"];
{w, h} = ImageDimensions[pic];
Manipulate[
 ImagePad[ImageTake[
   pic, {1 + T, h - B}, {L, w + 1 - R}], {{L, R}, {B, T}}, Green],
 {{x, 0.4, "GrayLevel"}, 0, 1, 0.01}, Delimiter,
 {{T, 0, "TopWidth"}, 0, h - 1, 1}, Delimiter,
 {{B, 0, "BottomWidth"}, 0, h - 1, 1}, Delimiter,
 {{L, 0, "LeftWidth"}, 0, w - 1, 1}, Delimiter,
 {{R, 0, "RightWidth"}, 0, w - 1, 1}, ControlPlacement -> Left, 
 ContentSize -> 400] 

结果如下图所示,具体数字表示裁切像素单位,可以逐一调整。

根据上面结果,输入下面代码就能得到裁切后的图片。

ImageTake[pic, {1 + 58, w - 53}, {1 + 47, h - 69}]

上述代码中,如果是二值裁切,把pic替换为pic//Binarize[#,x]&即可,因为我常做的就是二值裁切。