我有一个二进制图像,需要将所有黑色像素转换为白色像素,反之亦然。然后我需要将新图像保存到文件中。有没有办法做到这一点,而不是简单地循环每个像素并翻转它的值?
答案 0 :(得分:16)
如果您的二进制图像binImage
只有零和一,那么有很多简单的方法可以反转它:
binImage = ~binImage;
binImage = 1-binImage;
binImage = (binImage == 0);
然后使用函数IMWRITE保存倒置图像。
答案 1 :(得分:2)
您可以使用imcomplement
matlab函数。假设您有二进制图像b,
bc = imcomplement(b); % gives you the inverted version of b
b = imcomplement(bc); % returns it to the original b
imwrite(bc,'c:\...'); % to save the file in disk
答案 2 :(得分:1)
在Matlab中,通过使用not
,我们可以将 1转换为0,将0转换为1的。
inverted_binary_image = not(binary_image)
答案 3 :(得分:-2)
[filename, pathname] = uigetfile({'*.bmp'},'Text as image');
img=imread(filename);
img=im2double(img);
[r,c,ch]=size(img);
%imshow(img);
invert_img=img;
if(ch==1)
for i=1:r
for j=1:c
if(invert_img(i,j)==0)
invert_img(i,j)=1;
else
invert_img(i,j)=0;
end
end
end
end