我正在编写一个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也许还有另外一种方法来解决这个问题。
输入:

输出:

发布于 2014-12-15 02:36:24
我认为您要么为par_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让我们用您的图像和100值来测试它(原始图像的值介于0到255之间,将像素设置为1将使它们看起来黑色)。我们试试看:
Testim=imread('http://i.stack.imgur.com/uJsPY.png');
function_1(Testim, 100);结果:

发布于 2014-12-15 09:20:26
试试这段代码,
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;https://stackoverflow.com/questions/27476231
复制相似问题