我正在尝试使用以下代码将图像的某些部分转移到另一个矩阵:
p1 = zeros(512,512,3);
p1(1:128, 1:128, 1:3) = image(1:128, 129:256, 1:3);
当这段代码不起作用时,我尝试使用 3 for 循环,之后我尝试分别传输RGB图层:
p1(1:128, 1:128, 1) = image(1:128, 129:256, 1);
但是这些代码都不起作用。谁能告诉我该怎么做?
在Matlab中,您始终可以将一个矩阵分配给另一个具有相同大小的矩阵。例如:
A = ones (4,2,3,4,5);
B = zeros(4,2,3,4,5);
A = B
将运行没有错误。
您使用的图像类型可能是uint8(8 位无符号整数),同时zeros
创建一个双精度矩阵。如果您不正确地转换(更改类型)矩阵,这将导致操作或内置函数的不当行为。用于whos
检查图像的类型:
whos image
尝试将其zeros
转换为uint8:
p1 = uint8(zeros(512,512,3));
...
这是一个例子:
image = imread('peppers.png');
partail_im = uint8(zeros(size(image)));
partail_im(1:128,1:128,:) = image(1:128,129:256,:);
imshow(partail_im);
注意:最好不要使用 image 作为任何变量的名称,因为它是内置函数的名称image
。