我有一张图像,中间有一个图案,周围有一个白色区域。我希望只剪出矩形中的图案,同时保留多余的不必要的白色区域,即自动选择 ROI。现在我尝试通过将图像转换为灰度并使用 find 查找像素值不等于 255 的所有点来实现此目的。
之后,我只是使用非白色像素的 x 和 y 的最大值和最小值来定义 imcrop 使用的矩形,但由于某种原因,结果并不像我预期的那样。谁能告诉我出了什么问题吗?
这是代码
function [] = Roi()
imgData=rgb2gray(imread('1.jpg'));
[A,B]=find(imgData~=255);
xmin=min(A);
xmax=max(A);
ymin=min(B);
ymax=max(B);
width = xmax - xmin;
height = ymax - ymin;
imgSelect = imcrop(imgData,[xmin,ymin,width,height]);
imshow(imgSelect);
end
最佳答案
find
返回格式为 行\列 的结果,而不是 X/Y。为了让您的代码正常工作,您只需要更改
[B, A] = find( imgData ~= 255 );
关于matlab - 在matlab中自动选择ROI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17542695/