在matlab中为图像添加黑色边框

时间:2014-09-02 13:21:53

标签: matlab image-processing

我有一些图片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

2 个答案:

答案 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;