我有一张黑白的jpg图片,我想在MATLAB
中将黑色部分转换为白色和白色到黑色(黑色像素到白色,反之亦然),并再次将其保存为jpg文件。
我试过这段代码,但它只是在白页中给我一条黑线。
im=imread('Export0000009111.jpg');
binstring = dec2bin(im, 8);
binImage = ~binstring;
binImage = 1-binImage;
binImage = (binImage == 0);
imwrite(binImage,'ss1.png');
有人有任何适当的解决方案吗?
提前致谢!
答案 0 :(得分:5)
代码 -
PATHNAME = 'Random.jpg'; %// Original image file
PATHNAME1 = 'RandomModified.jpg'; %// Modified image file
imwrite(uint8(255 - imread(PATHNAME)),PATHNAME1)
figure, imshow(imread(PATHNAME1))
当您阅读图像时,通常它们是2D或3D矩阵,其值介于0到255之间,0表示黑色,255表示白色。所以,我们只需要从255减去每个像素值。这将完成你的工作,将为灰色图像创建负像,如果我可以发明这样的术语,彩色图像会给人一种“彩色负面”的感觉。
答案 1 :(得分:3)
要添加到其他答案,如果要对黑白图像执行二进制操作,则需要先将其转换为二进制图像。所以如果你这样做:
im=imread('Export0000009111.jpg');
BW = im2bw(im,graythresh(im));
然后您可以使用您尝试过的方法:
binImage = ~BW;
binImage = 1-BW;
binImage = (BW == 0);
imwrite(binImage,'ss1.png');
答案 2 :(得分:2)
我试图通过描述和图片使其更清晰。
% read the input image
im = imread('rice.png');
% now convert the image to binary
bin_im = im2bw(im,graythresh(im));
% take complement of binary image
bin_im = imcomplement(bin_im);
% store the image in .jpg format
imwrite(bin_im,'ss1.png');
这是输出
input image output image