h = vision.GeometricShearer('values' , [0 20]);
上述MATLAB命令定义了一个用于水平剪切图像的对象。有没有办法定义相同的对象,但上下剪切?
答案 0 :(得分:2)
values
应该大写,因此它是Values
。这显然是区分大小写的....这有点荒谬,但这就是它的方式。
返回到您的帖子,您需要为vision.GeometricShearer
指定一个额外的标志,以确定您想要应用剪切的方向。具体来说,您需要设置Direction
标记,并将其设置为Horizontal
或Vertical
。如果省略此项,则默认值为Horizontal
。因此,如果您想剪切图像的最后一列并将其向下移动20像素,则可以执行此操作:
h = vision.GeometricShearer('Values', [0 20], 'Direction', 'Vertical');
如果要显示结果,可以使用step
并将其应用于图像。例如,让我们在checkerboard
图像中加载MATLAB系统路径的一部分,应用剪切,然后在同一图中显示两个结果:
%// Define vertical shear
h = vision.GeometricShearer('Values', [0 20], 'Direction', 'Vertical');
img = im2single(checkerboard); %// Read in image
outimg = step(h,img); %// Apply shear
%// Show both results
subplot(2,1,1), imshow(img);
title('Original image');
subplot(2,1,2), imshow(outimg);
title('Output image');
这就是我得到的: