エラー「位置 2 のインデックスが配列範囲を超えています。」

79 views (last 30 days)
海理 大室
海理 大室 on 1 May 2022
Answered: Hernia Baby on 3 May 2022
自分は写真から円の一部を検出して円の全体の線、半径、中心座標を予想して書き込むプログラムを作ろうとしています。しかし以下のようなトラブルに当たっています。
以下のコードに対して、
コード:
RGB = imread("image/moon.jpg");
imshow(RGB);
Rmin = 7;
Rmax= 10000;
[center, radius] = imfindcircles(RGB,[Rmin Rmax]);
viscircles(center,radius);
message = sprintf('The estimated radius is %2.1f pixels',radius);
text(15,15,message,'Color','y','FontWeight','bold');
hold on;
plot(center(:,1),center(:,2),'yx','LineWidth',2);
hold off;
以下のようなエラーメッセージが発生します
エラーメッセージ:
位置 2 のインデックスが配列範囲を超えていま
す。
エラー: circleRadius (行 13)
plot(center(:,1),center(:,2),'yx','LineWidth',2);
エラーメッセージの「位置2」「インデックス」「配列範囲」いずれも何を指しているのかが分からないので解説をお願いしたいです。宜しくお願い致します。

Answers (1)

Hernia Baby
Hernia Baby on 3 May 2022
同様の回答が以下にありますので参考で書きます
---------------------
■エラーの推測
plot(center(:,1),center(:,2),'yx','LineWidth',2);
の部分で center( : , 2) がないのか、center( : , 1) の配列数より少ない可能性があります。
■ざっくりした説明
 位置 2 :ここでは2列目のこと
 インデックス :配列に割り振られた番号(~行目などのこと)
 配列範囲 :center( : , 2)の取りうる範囲 = 行の長さ
■今回の懸念点
 一応いただいたコードでやったのですが、エラーは見られませんでした
 もしエラーが解決しない場合は画像をいただけると幸いです

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!