1

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

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

我想保存这张新图片(边缘覆盖在原始图片上的那张)。有人可以告诉我该怎么做吗?重叠的图片只显示给我。有人能告诉我保存这个的命令吗?谢谢并恭祝安康。

4

2 回答 2

1

试试命令saveas。要查找有关选项的更多信息(例如要保存到的文件格式),请键入doc saveas

于 2013-09-09T09:01:29.167 回答
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' );
于 2013-09-09T10:41:58.463 回答