0

我正在尝试在 c# 中打开并读取同一表单上两个单独图像的像素值。阅读以下内容时出现错误:

错误 1 ​​类型 'imageAlign.Form1' 已经定义了一个名为 'GetPixels' 的成员,其参数类型相同 C:\Users\jason\Documents\Visual Studio 2010\Projects\imageAlign\imageAlign\Form1.cs 81 26 imageAlign

我认为这意味着我有两个同名的方法——GetPixels。

如果这只是一个名称,我可以重命名它们来解决问题 - 它不会影响 GetPixel 功能吗?

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

像那样?

4

2 回答 2

0

这意味着您已经拥有具有相同名称和相同参数的方法。您必须重命名方法以反映其目的或重载方法(通过更改参数)。

似乎这些方法在做几乎相同的事情(因此名称和参数相同),因此,我建议重构它们,但方式不同,而不仅仅是将它们重命名为GetPixel1and GetPixel2

于 2013-02-10T11:18:40.320 回答
0

我只会为这两个类使用两个不同的命名空间,而不是尝试重命名方法 - 因此命名空间最终......看起来像

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

[已编辑 - OP 问题]

继续 GetPixels - 我想获取 jpeg 图像的像素值并将它们加起来为一个整数值。但是 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 回答