0

C# で同じフォームにある 2 つの別々の画像のピクセル値を開いて読み取ろうとしています。次の読み取りエラーが発生します。

エラー 1 タイプ 'imageAlign.Form1' は、同じパラメーター タイプで 'GetPixels' というメンバーを既に定義しています C:\Users\jason\Documents\Visual Studio 2010\Projects\imageAlign\imageAlign\Form1.cs 81 26 imageAlign

これは、同じ名前の GetPixels という 2 つのメソッドがあることを意味すると思います。

これが単なる名前である場合、名前を変更して問題を解決できますか? GetPixel の機能には影響しませんか?

private Color[,] GetPixels1(string filename)
private Color[,] GetPixels2(string filename)

そのように?

4

2 に答える 2

0

これは、同じ名前と同じパラメーターを持つメソッドがすでにあることを意味します。目的を反映するようにメソッドの名前を変更するか、(パラメーターを変更して)メソッドをオーバーロードする必要があります。

GetPixel1これらのメソッドはほぼ同じことをしているようです(したがって、同じ名前とパラメーター)。したがって、リファクタリングすることをお勧めしますが、名前をとに変更するのとは異なる方法ですGetPixel2

于 2013-02-10T11:18:40.320 に答える
0

この2つのクラスに2つの異なる名前空間を使用するだけで、メソッドの名前を変更しようとはしません-したがって、名前空間は最終的に...次のようになります

myFirstNamecpace.GetPixels(..)
mySecondNamespace.GetPixels(...)

[編集 - OP の質問]

GetPixels の続き - jpeg 画像のピクセル値を取得し、それらを合計して 1 つの整数値にしたいと考えています。しかし、JPEG 画像には赤、緑、青のチャンネルがありますよね?画像ボックスでビットマップとして開きました。では、各ピクセルの 3 つのチャネルすべてをループする必要がありますか、それとも各ピクセルの単一の値を取得するだけですか?

private Color[,] GetPixels_1(string filename) 
{ 
  Bitmap myImage1 = (Bitmap)pictureBox1.Image; 
  //Bitmap bmp = (Bitmap)Bitmap.FromFile(filename); 
  Color[,] results = new Color[myImage1.Width, myImage1.Height]; 
  for (int y = 0; y < myImage1.Height; y++) 
  { 
    for (int x = 0; x < myImage1.Width; x++) 
    { 
      results[x, y] = myImage1.GetPixel(x, y); 
    } 
  } 
  return results; 
}

[編集済み - 回答] コードを貼り付けるには、上記のエディターの {} を使用します。だから、私はこれを見つけました、HTH: https://stackoverflow.com/a/10128284/1758762

using System.Drawing;

Bitmap img = new Bitmap("*imagePath*");
for (int i = 0; i < img.GetWidth; i++)
{
    for (int i = 0; i < img.GetWidth; i++)
    {
        Color pixel = img.GetPixel(i,j);

        if (pixel == *somecondition*)
        {
            **Store pixel here in a array or list or whatever** 
        }
    }
} 
于 2013-02-10T11:20:32.720 に答える