Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在MATLAB中用透明区域覆盖png图像_Matlab - Fatal编程技术网

在MATLAB中用透明区域覆盖png图像

在MATLAB中用透明区域覆盖png图像,matlab,Matlab,我有一组450幅jpg图像,每幅大约1200x1500像素。我想对每个图像应用黑色边框,使它们都具有1500x1500像素 下面是一个示例图像: 我想把它变成这样的图像: 我一直在尝试的方法是在原始图像的上面叠加一张a的png图像。然而,这并没有很好地发挥作用:(这是我迄今为止的代码: A = imread('test01.jpg'); %open image A2 = imresize(A,[1500 1200]); %resize image to 1500 x 1200 just to m

我有一组450幅jpg图像,每幅大约1200x1500像素。我想对每个图像应用黑色边框,使它们都具有1500x1500像素

下面是一个示例图像: 我想把它变成这样的图像:

我一直在尝试的方法是在原始图像的上面叠加一张a的png图像。然而,这并没有很好地发挥作用:(这是我迄今为止的代码:

A = imread('test01.jpg'); %open image
A2 = imresize(A,[1500 1200]); %resize image to 1500 x 1200 just to make sure it is correct height
RA = imref2d(size(A2));
B = imread('cropper_and_outline_1500x1500.png'); %open cropper
RB = imref2d(size(B));
C = imfuse(A2,B,'blend','Scaling','joint'); %fuse images
imshow(C)
这是我的。 有一些错误…a)黑色边框不不透明,b)透明颜色设置为绿色不透明,c)两个图像在左上角对齐,但我需要它们居中对齐

我一直在玩alpha level来尝试修复果岭,但我真的不明白这意味着什么,所以没有走远!我也知道这可能不是最简单的方法,所以如果有人有其他想法,我真的很想听听。我试图在MATLAB中实现这一点,因为我已经有了一个用于重命名文件的脚本,理想情况下,我希望将两者结合到一个脚本中


非常感谢

为什么不在原始图像中添加黑线

I = imread(yourfile);
expectedSize = [1500, 1500];

% Add horizontal lines of pixels (if needed)
line1 = zeros(1, size(I, 2));
Im = [repmat(line1, [(expectedSize(1) - size(I, 1))/2, 1, 3]); ... % add lines on top
    I; ...
    repmat(line1, [(expectedSize(1) - size(I, 1))/2, 1, 3])]; % add lines on the bottom

% Add vertical lines of pixels (if needed)
line2 = zeros(size(Im, 1), 1);
Im = [repmat(line2, [1, (expectedSize(2) - size(Im, 2))/2, 3]), ... % add lines to the left
    Im, ....
    repmat(line2, [1, (expectedSize(2) - size(I, 2))/2]), 3]; % add lines to the right

好的,这是在假设
expectedSize(i)-size(i,i)
的结果可以被2整除的情况下完成的,但是你得到了这样的想法…

图像是RGB,所以将你的透明图像设为3个通道,使其变为白色。非常感谢,这太棒了!我在添加像素的垂直线时遇到了一些问题,在尝试修复它时,我最终遇到了这个问题:
code%将图像裁剪为1470x1176像素(高度x宽度)大小调整了\u img=img(16:1485163:1338,:);%添加15个像素的水平线顶部和底部线条1=零(15,大小(已调整大小,2),3);%创建行im=[line1;已调整大小的\u img;line1];%concatonate在图像的上方和下方%添加162个像素的垂直线左侧和右侧线条2=零(大小(im,1),162,3);%创建行im2=[line2,im,line2];%合上im的左右两侧
出于好奇,垂直线有什么问题?此外,如果此解决方案适用于您,请记住接受答案。line2的大小与I不同。我对此感到有点困惑,因为该错误也应该发生在line1上,但出于某种原因,它似乎只发生在垂直线上。我认为这可能是一个问题,我也需要z轴,即line2=零(大小(Im,1),1,3),但这并没有完全解决它。奇怪的是,它在我这边工作得很好。也许您使用初始图像的大小初始化了第2行,而不是使用已修改的图像?无论如何,很高兴你找到了解决办法。