我有一些图片A.
和大小MaxH*MaxW
(例如800 * 600)
图片尺寸较小,
我想添加黑色边框,在代码后,图片大小将为800 * 600
function [ output_args ] = t( A)
im=imread(A);
global MaxH;
global MaxW;
global Max;
[rowsA colsA numberOfColorChannelsA] = size(im);
% Get size of existing image B.
% See if lateral sizes match.
if MaxH ~= rowsA || MaxW ~= colsB
% Size of B does not match A, so resize B to match A's size.
% imresize(A, [MaxH MaxW Max]);
d=padarray(A,[(MaxW-size(im,1))/2 (MaxH-size(im,2))/2]);
imwrite(d,A);
end
end
**edit**
function [ output_args ] = Resize( A )
%TT Summary of this function goes here
% Detailed explanation goes here
im=imread(A);
global MaxH;
global MaxW;
global Max;
[H W N] = size(im);
y=floor((MaxH-H)/2);
x=floor((MaxW-W)/2);
d=padarray(im,[y x]);
d= imresize(d,[MaxH MaxW]);
imwrite(d,A);
end
tnx to all
答案 0 :(得分:2)
假设您想在不实际调整图片大小的情况下添加黑色边框,可以使用图像处理工具箱中的 padarray
进行实施 -
padarray(im,[(800-size(im,1))/2 (600-size(im,2))/2])
,其中im
是您的输入图像数据。
编辑:所以这是对问题中代码的更正,并且在其中使用了一些不太优选的实践,我仍然保留这些实践,以便它至少在您的最终工作 -
function [ output_args ] = func100( A)
im=imread(A);
global MaxH;
global MaxW;
global Max;
[rowsA colsA numberOfColorChannelsA] = size(im);
% Get size of existing image B.
% See if lateral sizes match.
if MaxH > rowsA & MaxW > colsA
% Size of B does not match A, so resize B to match A's size.
% imresize(A, [MaxH MaxW Max]);
d=padarray(im,[(MaxW-size(im,1))/2 (MaxH-size(im,2))/2]);
else
d = imresize(im,[MaxW MaxH]);
end
imwrite(d,A);
output_args = true;
端
答案 1 :(得分:0)
如果您有图像A
,则可以在所需大小上创建一个零矩阵NewImage
,然后在其中插入(居中)图像。
它看起来像这样:
ImSize=size(A);
NewImage=zeros(MaxH,MaxW); %or was it zeros(MaxW,MaxH)?
NewImage(round((MaxH-ImSize(1))/2):round(MaxH-(MaxH-ImSize(1))/2)-1,...
(round(MaxW-ImSize(2))/2):round(MaxW-(MaxW-ImSize(2))/2)-1)=A;