C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: RGBの平均値の取得方法について教えて下さい。


(過去ログ 103 を表示中)

[トピック内 10 記事 (1 - 10 表示)]  << 0 >>

■61375 / inTopicNo.1)  RGBの平均値の取得方法について教えて下さい。
  
□投稿者/ コウ (3回)-(2011/08/10(Wed) 22:27:36)

分類:[C#] 

はじめまして、C#勉強中のコウと申します。

画像の解析を行うために、以下の参考URLを拝見し、
以下のソースを作成しましたが、以下のエラーが発生致しました。

エラーの原因、及び、対処方法をご存知の方、アドバイス頂けますと幸いです。

お手数をおかけ致しますが、宜しくお願い致します。

■参考URL
http://msdn.microsoft.com/ja-jp/academic/cc998604

■ソース
private void RGB_CHECK_Click(object sender, EventArgs e)
{
int i, j, iAverage; // 変数の宣言 iAverage : RGB 値の平均値
Bitmap bBitmap = new Bitmap(pictureBox1.Image); // 変数の宣言
Color cColor;

// 変数の宣言
// 画像の 2 値化の実行
for (i = 0; i < pictureBox1.Image.Width; i++)
for (j = 0; j < pictureBox1.Image.Height; j++)
{
cColor = bBitmap.GetPixel(i, j); // ピクセルの色の取得
iAverage = GetColorAverage(cColor); // RGBの平均値の取得
//iAverage = 1; // RGBの平均値の取得

//ログ出力
DateTime dt = DateTime.Now;
Encoding sjisEnc = Encoding.GetEncoding("Shift_JIS");
File.AppendAllText(@"C:\Test2.txt", dt.ToString("yyyy/MM/dd HH:MM:ss fff"), sjisEnc);
File.AppendAllText(@"C:\Test2.txt", "\n", sjisEnc);
File.AppendAllText(@"C:\Test2.txt", " RGB" + iAverage, sjisEnc);

// RGB 平均値が閾値以下の場合
//if (iAverage <= iThresh)
if (iAverage <= 0)
bBitmap.SetPixel(i, j, Color.White); // 白色に設定
// RGB 平均値が閾値より大きい場合
else
bBitmap.SetPixel(i, j, Color.Black); // 黒色に設定
}
pictureBox1.Image = bBitmap; // 結果の表示

//画像を表示する
pictureBox1.Image = System.Drawing.Image.FromFile(@"c:\screen.gif");
}

■エラー
名前 'GetColorAverage' は現在のコンテキスト内に存在しません。

■開発環境
・WindowsXP
・Microsoft Visual C# 2005 Express Edition


引用返信 編集キー/
■61376 / inTopicNo.2)  Re[1]: RGBの平均値の取得方法について教えて下さい。
□投稿者/ 逆運の覇者 (51回)-(2011/08/10(Wed) 22:57:29)
GetColorAverageメソッドが存在しないから
引用返信 編集キー/
■61377 / inTopicNo.3)  Re[2]: RGBの平均値の取得方法について教えて下さい。
□投稿者/ shu (933回)-(2011/08/10(Wed) 23:02:09)
明るさだからGetBrightness でも使えばいいんじゃないかな?
引用返信 編集キー/
■61378 / inTopicNo.4)  Re[1]: RGBの平均値の取得方法について教えて下さい。
□投稿者/ 魔界の仮面弁士 (2303回)-(2011/08/10(Wed) 23:09:26)
No61375 (コウ さん) に返信
> ■参考URL
> http://msdn.microsoft.com/ja-jp/academic/cc998604

サンプルがダウンロードできるようになっているようですね。
…あれ、ダウンロードできない?

恐らく、サンプル中に GetColorAverage の定義が書かれているのでしょうけれども…。


> iAverage = GetColorAverage(cColor); // RGBの平均値の取得
> ■エラー
> 名前 'GetColorAverage' は現在のコンテキスト内に存在しません。

文字通りの「平均」なら、
 (赤 + 緑 + 青) ÷ 3
で求めれば良いと思います。

輝度の意味だとしたら、
 赤×0.29891 + 緑×0.58661 + 青×0.11448
でしょうか。

なお「GetColorAverage」で検索したところ、ここの過去ログがヒットしました。
http://bbs.wankuma.com/index.cgi?mode=al2&namber=7867&KLOG=8
引用返信 編集キー/
■61379 / inTopicNo.5)  Re[3]: RGBの平均値の取得方法について教えて下さい。
□投稿者/ 逆運の覇者 (52回)-(2011/08/10(Wed) 23:26:58)
今回問題にしてるところではないけど、
>File.AppendAllText(@"C:\Test2.txt", dt.ToString("yyyy/MM/dd HH:MM:ss fff"), sjisEnc);
ここで月のところと分のところに同じMMが2回来てるのはどう考えてもおかしいよね。


あと、ファイル操作。
1ピクセル調べるたんびにAppendAllText( )を3回読んでるけど
これじゃ1ピクセル毎にファイルを3回開いて、3回閉じる動作をすることになる。
動作するのに問題はないだろうけど、
(あるいは、PCによっては頻繁なHDDアクセスが積もり積もってプログラムが遅くなるかもしれないが)
こういう書き方は避けたほうがいい。
引用返信 編集キー/
■61380 / inTopicNo.6)  Re[2]: RGBの平均値の取得方法について教えて下さい。
□投稿者/ コウ (4回)-(2011/08/10(Wed) 23:40:32)
No61376 (逆運の覇者 さん) に返信
> GetColorAverageメソッドが存在しないから

無いのは理解しているのですが、どうすれば良いのかがわかりません(; ̄ー ̄川 アセアセ
引用返信 編集キー/
■61381 / inTopicNo.7)  Re[3]: RGBの平均値の取得方法について教えて下さい。
□投稿者/ コウ (5回)-(2011/08/10(Wed) 23:40:57)
No61377 (shu さん) に返信
> 明るさだからGetBrightness でも使えばいいんじゃないかな?

そういう方法もあるんですね^^
引用返信 編集キー/
■61382 / inTopicNo.8)  Re[2]: RGBの平均値の取得方法について教えて下さい。
□投稿者/ コウ (6回)-(2011/08/10(Wed) 23:42:51)
No61378 (魔界の仮面弁士 さん) に返信

アドバイスを参考にして出来ました^^
ありがとうございますm(__)m

以下のように書き換える事で、対応しました^^

iAverage = (cColor.R + cColor.R +cColor.R)/3 ; // RGBの平均値の取得

こういうささいな事でも初心者の私は、2日も悩みに悩み続けました(笑)

ありがとうございます<(__)>
解決済み
引用返信 編集キー/
■61383 / inTopicNo.9)  Re[4]: RGBの平均値の取得方法について教えて下さい。
□投稿者/ コウ (7回)-(2011/08/10(Wed) 23:45:44)
No61379 (逆運の覇者 さん) に返信
File.AppendAllText を記述するたびにファイルを開いて、閉じていたんですね。
知りませんでした。

以下のように、書き換えました。
File.AppendAllText(@"C:\Test2.txt", dt.ToString("yyyy/MM/dd HH:MM:ss fff") + "\n" + " R : " + cColor.R + " G : " + cColor.G + " B : " + cColor.B + " RGB : " + (cColor.R + cColor.R + cColor.R) / 3 + " ", sjisEnc);

非常に参考になりました。

ありがとう御座います<(__)>
引用返信 編集キー/
■61386 / inTopicNo.10)  Re[5]: RGBの平均値の取得方法について教えて下さい。
□投稿者/ みきぬ (983回)-(2011/08/11(Thu) 09:45:48)
No61383 (コウ さん) に返信
> 以下のように、書き換えました。
> File.AppendAllText(@"C:\Test2.txt", dt.ToString("yyyy/MM/dd HH:MM:ss fff") + "\n" + " R : " + cColor.R + " G : " + cColor.G + " B : " + cColor.B + " RGB : " + (cColor.R + cColor.R + cColor.R) / 3 + " ", sjisEnc);
>

× "yyyy/MM/dd HH:MM:ss fff"
○ "yyyy/MM/dd HH:mm:ss fff"

× (cColor.R + cColor.R + cColor.R) / 3
○ (cColor.R + cColor.G + cColor.B) / 3

でわ。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -