Matlab 如何使用vision.geometricshear命令执行上下剪切?
上面的MATLAB命令定义了用于图像水平剪切的对象。是否有一种方法可以定义同一个对象,但用于上下剪切?顺便说一句,您的语法中有一个小的输入错误<代码>值应该大写,因此它是Matlab 如何使用vision.geometricshear命令执行上下剪切?,matlab,image-processing,computer-vision,matlab-cvst,Matlab,Image Processing,Computer Vision,Matlab Cvst,上面的MATLAB命令定义了用于图像水平剪切的对象。是否有一种方法可以定义同一个对象,但用于上下剪切?顺便说一句,您的语法中有一个小的输入错误值应该大写,因此它是值。这显然是区分大小写的。。。。这有点可笑,但事实就是这样 回到您的帖子,您需要指定一个附加的标志来确定要应用剪切的方向。具体来说,您需要设置方向标志,并将其设置为水平或垂直。如果忽略此项,则默认值为水平。因此,如果要剪切图像的最后一列并将其向下移动20像素,可以执行以下操作: h = vision.GeometricShearer(
值
。这显然是区分大小写的。。。。这有点可笑,但事实就是这样
回到您的帖子,您需要指定一个附加的标志来确定要应用剪切的方向。具体来说,您需要设置
方向
标志,并将其设置为水平
或垂直
。如果忽略此项,则默认值为水平
。因此,如果要剪切图像的最后一列并将其向下移动20像素,可以执行以下操作:
h = vision.GeometricShearer('values' , [0 20]);
如果要可视化结果,可以使用步骤
并将其应用于图像。例如,让我们加载作为MATLAB系统路径一部分的棋盘格
图像,应用剪切,然后在同一个图中显示两个结果:
h = vision.GeometricShearer('Values', [0 20], 'Direction', 'Vertical');
这就是我得到的:
如果我正在从相机拍摄图像,使用此命令可以使图像的最远像素越来越接近最远吗?@AmitWaghmare-感谢您接受我的回答!至于你的问题,你需要一个深度图,或者从成像到相机的每个点的距离测量。即使如此,使用此命令,剪切仅限于水平和垂直剪切,而不限于垂直于摄影机轴的任何剪切。因此,不,这是不可能的。。。至少据我所知不是这样。
%// 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');