在MATLAB中保存两个重叠的图片

时间:2013-09-09 08:02:59

标签: image matlab image-processing

我使用以下代码行来检测图片中的边缘,然后覆盖原始图片上检测到的边缘:

    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行代码中所看到的,我将检测到的边缘图像覆盖到原始图片上。

我想保存这张新照片(边缘覆盖在原始照片上的照片)。谁能告诉我怎么做?叠加的图片只显示给我。有人能告诉我保存这个的命令吗?谢谢和问候。

2 个答案:

答案 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' );