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

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 に答える
1

コマンドを試してくださいsaveas。オプション (保存するファイル形式など) の詳細を確認するには、「doc saveas.

于 2013-09-09T09:01:29.167 に答える