matlab中由size函数引发的问题

一开始代码如下

p=imread('lv.jpg');
q=imread('new.png');
[m,n]=size(p);   %这里
q=imresize(q,[m,n]);
p=imadd(1/2*p,1/2*q);
imshow(p,[]);

出现如下错误说是矩阵大小不一样


一查m,n,n的大小扩大了3倍

matlab中由size函数引发的问题_第1张图片

一直不明白为什么会这样后来查了查

matlab中由size函数引发的问题_第2张图片

matlab中由size函数引发的问题_第3张图片

结论:

由此可以看到size函数默认是输出三通道每一道的大小同[m,n,r]=size(p),但是[m,n]=size(p)中n会返回三通道的和,所以代码修改如下

p=imread('lv.jpg');
q=imread('new.png');
[m,n,r]=size(p);
q=imresize(q,[m,n]);
p=imadd(1/2*p,1/2*q);
imshow(p,[]);

效果出现了

matlab中由size函数引发的问题_第4张图片

你可能感兴趣的:(matlab中由size函数引发的问题)