我使用以下代码行来检测图片中的边缘,然后覆盖原始图片上检测到的边缘:
A = 'brad.jpg';
B = im2double(imread(A, 'jpg'));
r = 0*B;
r(:,:,1) = B(:,:,1);
g = 0*B;
g(:,:,2) = B(:,:,2);
b = 0*B;
b(:,:,3) = B(:,:,3);
L = medfilt2(r(:,:,1), [3,3]);
L2 = canny_edge(L);
M = medfilt2(g(:,:,2), [3,3]);
M2 = canny_edge(M);
N = medfilt2(b(:,:,3), [3,3]);
N2 = canny_edge(N);
recover = cat(3,L,M,N);
figure, imshow(recover);
black = cat(3, zeros(size(L)),zeros(size(L)), zeros(size(L)));
hold on;
h = imshow(black);
hold off;
set(h, 'AlphaData', L2);
正如您在最后4行代码中所看到的,我将检测到的边缘图像覆盖到原始图片上。
我想保存这张新照片(边缘覆盖在原始照片上的照片)。谁能告诉我怎么做?叠加的图片只显示给我。有人能告诉我保存这个的命令吗?谢谢和问候。
答案 0 :(得分:1)
尝试命令saveas
。要查找有关选项的更多信息(例如要保存的文件格式),请键入doc saveas
。
答案 1 :(得分:1)
您可以对imshow( ..., 'Border', 'tight');
命令使用imshow
选项来消除数字边框。然后,您可以使用getframe
>> fh = figure;
>> imshow( ..., 'Border', 'tight' ); hold on;
>> h = imshow( black, 'Border', 'tight' ); set( h, 'AlphaData', L2 );
>> f = getframe( fh );
>> imwrite( f.cdata, 'output_image_name.png' );