如何在Matlab中附加图片?

时间:2016-03-10 11:59:49

标签: image matlab

我想在没有imagemagick的系统中做这个伪代码,但我在系统中有Matlab 2016a和Java

convert 1.png 2.png +append result.png

假设您想要在如下所示的循环中连接,以便维度可能不匹配。 但是,所有对象1,2,...,N具有完全相同的尺寸。 然而,下面的循环同时连接两张图片,使尺寸与后续图像不同:bigImage vs new image。

iterationCounter=1;

result=0;
while(iterationCounter < 3)
    imgRGB=imread(filenamePng); % Images 1,2, ..., N have same dimensions.

    if (result==0)
        result=imgRGB;
    end

    % http://stackoverflow.com/a/35915990/54964
    if (ismatrix(result(:,:,1)))
        heightRatio=size(result,1)/size(imgRGB,1);
        wantedSize=int16([size(result,1), size(imgRGB,2)*heightRatio]);
        imgResized=imresize(imgRGB, wantedSize);
        result=[result, imgResized];
    end

    iterationCounter=iterationCounter+1;

end

其中输出是空白图片。

如何在Matlab / Java中水平追加图像?

2 个答案:

答案 0 :(得分:1)

一般来说,当您水平连接两个图像并且它们都具有相同的行数时,以下代码可以解决这个问题:

%input - two images with different dimensions
I1 = imread('coins.png'); 
I2 = imread('cameraman.tif');

heightRatio = size(I1,1)/size(I2,1); %the ratio which well need to make the two images to have the same height
wantedSize = int16([size(I1,1), size(I2,2)*heightRatio]);
I2Resized = imresize(I2,wantedSize );
outIm = [I1,I2Resized];

但是,如果您需要更改I2尺寸以适合I1高度,您可以按如下方式执行imresize:

appendedIm = [I1;I2];

如果您需要垂直连接,可以使用:

     function printContent(el,tble,img) {         
                var printcontent = document.getElementById(el).innerHTML
                   +" <div class='row'><span class='glyphicon glyphicon-tasks'></span><b></b></div>"
                   + document.getElementById(tble).innerHTML
                   + document.getElementById(img).innerHTML;

                var w = window.open();   
               $(w.document.body).html(printcontent);
                w.print();
}

答案 1 :(得分:1)

这应该有效:

imwrite([imread('1.png') imread('2.png')], '12.png');

注意:它们应具有相同的宽度/高度,具体取决于您的附加方式。