如果我有两个不同尺寸的图像.... 我可以这样做,就像我有一个大小等于两个图像的大小总和的窗口,意思是 窗口(大小)=图像大小1 +图像大小2 然后将这些法师粘贴在此窗口上以共同显示它们 .....有可能吗?如果是,那么
答案 0 :(得分:2)
根据你的描述,你觉得你想要从两个图像构造一个块对角矩阵,因为那时结果的大小将是大小的总和(沿着每个维度)。这样做的方法是使用blkdiag
函数:
img1 = randn(70,100);
img2 = randn(50,110);
img = blkdiag(img1,img2);
imshow(img)
当然,非对角线块用零填充。
编辑:
回答您提出的问题时,您必须用零填充较短的图像,使其与较长的图像处于同一高度。然后你可以并排连接它们。假设img1
更长,它看起来像是:
h1 = size(img1, 1);
[h2, w2] = size(img2);
img2a = [img2; zeros(h1-h2, w2)];
img = [img1, img2a];
答案 1 :(得分:2)
我已编写此代码以水平连接两个图像。 img1和img2应该是灰度。
function [ output_args ] = sideBySideImage( img1, img2 )
%UNTITLED Summary of this function goes here
% Detailed explanation goes here, expects a black and white images
[r1, c1] = size(img1);
[r2, c2] = size(img2);
if r1<r2 %rows in first img are less, so we add some rows in it
temp_row = zeros(1,c1);
while r1~=r2
img1 = [img1; temp_row];
[r1, c1] = size(img1);
[r2, c2] = size(img2);
end
elseif r1>r2 %rows in second img are less, so we add some rows in it
temp_row = zeros(1,c2);
while r1~=r2
img2 = [img2; temp_row];
[r1, c1] = size(img1);
[r2, c2] = size(img2);
end
end
output_args = [img1, img2];
end