我正在编写一个获得2个参数的matlab方法:uint8图像和灰度级,灰度级大于par_1的所有像素都设置为白色。
如何在完成所有操作后显示图像?
这是我的代码:
function im = function_1(img, par_1)
checkUint8Image = isa(img, 'uint8');
if checkUint8Image
im = uint8(img);
[row, column] = size(im);
im2 = ones(row, column); % white image
for i=1:row
for j=1:column
if(im(i,j) <= par_1)
im2(i,j) = im(i,j);
end
end
end
imshow(im2);
else
disp('im paramter is not a uint8 type');
end
也许有另一种方法可以解决这个问题。
输入:
输出:
答案 0 :(得分:1)
我认为您使用par_1
的值,其中整个图像设置为1,这就是您获得白色图像的原因,或者您遇到了缩放问题,可以使用{{ 1}} []
的参数。
您的功能更短的版本:
imshow
让我们用您的图片和值function im = function_1(img, par_1)
validateattributes(img, {'uint8'}, {'2d'});
im=img;
im(im > par_1)=1;
imshow(im, [], 'InitialMagnification', 'fit');
end
测试它(原始图像的值介于0到255之间,将像素设置为1会使它们看起来是黑色)。我们来试试吧:
100
结果:
答案 1 :(得分:0)
试试这段代码,
function im = function_1(img, par_1)
checkUint8Image = isa(img, 'uint8');
if checkUint8Image
im = uint8(img);
[row, column, dim] = size(im);
im2 = ones(row, column).*255; % white image
for i=1:row
for j=1:column
if(im(i,j) <= par_1)
im2(i,j) = im(i,j);
end
end
end
imshow(uint8(im2));
else
disp('im paramter is not a uint8 type');
end
这里im2被投入到uint8中。 还要注意这一行,
im2 = ones(row, column).*255;