c # getPixel не выбирает все пиксели - PullRequest
0 голосов
/ 14 октября 2010

У меня проблема с получением пикселей из изображения. Я загружаю изображение, выбираю пиксель из изображения и извлекаю его цвет, а затем генерирую матрицу indexMatrix [bitmap_height] [bitmap_width], которая содержит 1 или 0 в зависимости от того, совпадает ли цвет [x, y] растрового изображения с цвет выбран. Проблема в том, что программа не выделяет все пиксели, хотя должна. Он извлекает только часть из них (я уверен, что «забытые» пиксели имеют тот же цвет, что и выбранный цвет)

Самое странное, что если я запускаю свою программу для нового изображения (созданного из матрицы), оно возвращает то же самое изображение (как и должно быть), но я не могу понять, как решить проблему.

Пожалуйста, помогите !!!

С уважением, Алекс Бадеску и немного кода из моего проекта:

объявление растрового изображения:

m_Bitmap = (Bitmap)Bitmap.FromFile(openFileDialog.FileName, false);

Здесь я вычисляю матрицу:

int bitmapWidth = m_Bitmap.Width;
        int bitmapHeight = m_Bitmap.Height;


        indexMatrix = new int[bitmapHeight][];

        if (imageIsLoaded && colorIsSelected)
        {
            for (int i = 0; i < bitmapHeight; i++)
            {
                indexMatrix[i] = new int[bitmapWidth];

                for (int j = 0; j < bitmapWidth; j++)
                {
                    Color temp = m_Bitmap.GetPixel(j, i);
                    if (temp == selectedColor)
                        indexMatrix[i][j] = 1;
                    else indexMatrix[i][j] = 0;


                }
            }
            MessageBox.Show("matrix generated succesfully");
        }
        matrixIsCalculated = true;
    }

1 Ответ

1 голос
/ 14 октября 2010

Здесь нет очевидного режима отказа. Кроме этого пиксель на самом деле не совпадает с цветом. Например, быть выключенным только одним в значении Color.B. Вы не можете видеть это невооруженным глазом.

Подобные очень тонкие изменения цвета довольно распространены при изменении размера изображения. Фильтр интерполяции изменяет цвет тонко, даже если он не является строго необходимым. В другом режиме отказа используется сжатый формат изображения, такой как JPEG, алгоритм сжатия меняет цвета.

...