2013-09-09 7 views
1

Я использую следующие строки кода для обнаружения края в картинке, а затем накладывать края обнаружены на оригинальной картинке:Сохранить два накладывая изображения в MATLAB

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

Вы можете попробовать сделать это с самого рисунка, с помощью значка диска или Edit-> Copy фигуры – Adiel

ответ

1

Попробуйте ввести команду saveas. Чтобы найти дополнительную информацию о параметрах (например, формат файла для сохранения), введите doc saveas.

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'); 
Смежные вопросы