我正在尝试使用此代码将我的图像的某些部分传输到另一个矩阵:
p1 = zeros(512,512,3);
p1(1:128, 1:128, 1:3) = image(1:128, 129:256, 1:3);
当这段代码不起作用时,我尝试使用3 for循环 之后我尝试分别转移 R G B 图层:
p1(1:128, 1:128, 1) = image(1:128, 129:256, 1);
但这些代码都不起作用。谁能告诉我该怎么做?
答案 0 :(得分: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
的名称。