사용자가 선택한 이미지의 픽셀에 대한 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)에 액세스하려고 시도; 크기가 (img) = [217,331,3]이므로 인덱스는 범위를 벗어납니다.
어떻게 가능합니까? 픽셀이 실제로 범위를 벗어나지 않은 경우? 이 코드의 문제점은 무엇입니까?
네, 효과가있었습니다! 그러나 당신이 물어 보았 듯이, 데이터 타입은 정수형 숫자를 보여주기 때문에 덮어 쓰지 않습니다 ... 조금 이상하지만, 여러분의 제안을 사용할 것입니다. – user2952272
'numstr'을 호출 할 때'precision' 인수를 사용해보십시오. 정수가 아닌 것을 알게 될 것입니다. 'whos'로 데이터 타입을 확인할 수도 있습니다. – am304