我想获得用户选择的图像的像素的RGB值,但是然后我得到这个界限的错误。这是代码:索引越界MATLAB中的错误
x = int16(zeros(10,1));
y = int16(zeros(10,1));
imshow(img);
[x,y] = ginput;
disp(['x = ' num2str(x)]);
disp(['y= ' num2str(y)]);
r = img(x,y,1);
g = img(x,y,2);
b = img(x,y,3);
这是错误我得到(当用户选择的像素120131):
试图访问IMG(120,131,1); 索引必须是正整数或逻辑。
要停止发生此错误,我将x和y声明为int16,但错误仍然存在。然后我试图手动将像素值,所以我做了这样的事情:
r = img(229,104,1);
而现在的错误是这样的:
试图访问IMG(229,104,1);索引出 范围,因为size(img)= [217,331,3]。
这怎么可能如果像素不是真的越界?代码有什么问题?
是的它的工作!但正如你所问,数据类型不会被覆盖,因为我放的显示整数......有点奇怪,但我会用你的建议。 – user2952272
尝试在调用'numstr'时使用'precision'参数,我非常有信心你会发现它们不是整数。你也可以用'whos'来检查数据类型。 – am304