• ベストアンサー
  • すぐに回答を!

画像処理のチェーンコード

  • 質問No.5527000
  • 閲覧数1665
  • ありがとう数3
  • 気になる数0
  • 回答数1
  • コメント数0

お礼率 83% (20/24)

画像処理のチェーンコードが上手くいきません。
言語はC#です。下のようにやってますが、どこかで上手くいっていないみたいです。間違いの指摘をおねがいします。
あるいは、画像処理のチェーンコードのサンプルコードのあるサイトを教えてもらえると助かります。言語はメジャーなものならなんでもかまいません。
for (; ; )
{
if (x == xs && y == ys && l != 0)
{
break;
}

switch (vec)
{
case 3:
if (data[x, y + 1] == 0 && data[x - 1, y + 1] == 255)
{
x = x - 1; y = y + 1; list.Add(1); l++;
}
vec = 0;
break;
case 4:
if (data[x - 1, y + 1] == 0 && data[x - 1, y] == 255)
{
x = x - 1; y = y + 0; list.Add(2); l++;
}
vec = 1;
break;
case 5:
if (data[x - 1, y] == 0 && data[x - 1, y - 1] == 255)
{
x = x - 1; y = y - 1; list.Add(3); l++;
}
vec = 2;
break;
case 6:
if (data[x - 1, y - 1] == 0 && data[x, y - 1] == 255)
{
x = x + 0; y = y - 1; list.Add(4); l++;
}
vec = 3;
break;
case 7:
if (data[x, y - 1] == 0 && data[x + 1, y - 1] == 255)
{
x = x + 1; y = y - 1; list.Add(5); l++;
}
vec = 4;
break;
case 0:
if (data[x + 1, y - 1] == 0 && data[x + 1, y] == 255)
{
x = x + 1; y = y + 0; list.Add(6); l++;
}
vec = 5;
break;
case 1:
if (data[x + 1, y] == 0 && data[x + 1, y + 1] == 255)
{
x = x + 1; y = y + 1; list.Add(7); l++;
}
vec = 6;
break;
case 2:
if (data[x + 1, y + 1] == 0 && data[x, y + 1] == 255)
{
x = x + 0; y = y + 1; list.Add(0); l++;
}
vec = 7;
break;
}
}

質問者が選んだベストアンサー

  • 回答No.1
  • ベストアンサー

ベストアンサー率 55% (1857/3366)

http://homepage2.nifty.com/tsugu/sotuken/binedge/
やりたいことは、↑のようなことでしょうか?

サンプルプログラムの注意点として、switch~caseのFall Through(わざとbreakを置かずに、あるcaseを実行後そのまま次のcaseを実行するようにする)を利用しているので、そのままC#で使えません)コンパイルエラーになります)。
case A: の前の行に goto case A; を入れてください(Aは0,1,...です)
お礼コメント
blade3322

お礼率 83% (20/24)

無事解決しました
投稿日時:2010/07/08 08:27
結果を報告する
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
関連するQ&A

その他の関連するQ&Aをキーワードで探す

ピックアップ

ページ先頭へ