C # позиция массива - PullRequest
       1

C # позиция массива

0 голосов
/ 27 апреля 2011

Я знаю, что это глупый вопрос, но чтобы найти значения x и y в массиве с использованием позиции индекса, можем ли мы это сделать?

int [,] Values = new int [Width,Height];
for (int Xcount = 0; Xcount < Width; Xcount++)
{
     for (int Ycount = 0; Ycount < Height; Ycount++)
     {
         Color col = img.GetPixel(Xcount, Ycount);
         if (col.R > 140 && col.G > 140 && col.B > 140)
         {              
              Values[Xcount , Ycount]++;
              file.WriteLine("X :" + Xcount + "  Y :" + Ycount);
              count++;
         }
    }
}

Как я могу получить значения X и Y в позиции индекса 0 и последней позиции индекса, т.е. count; Мне нужно, чтобы первый и последний значения использовались при дальнейшей обработке Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 27 апреля 2011

Чтобы найти первый и последний пиксели, с которыми столкнулись ваши циклы, которые были выше порога (140 140 140):

Поскольку значение "count" увеличивается только для пикселей, которые находятся выше порога, он не содержит достаточно информациив конце цикла, чтобы найти положение (x, y), которое первым / последним вызвало его увеличение.Вам нужно сохранять / запоминать положение пикселей X, Y по мере их обнаружения.

Поэтому вам потребуется сохранить пару дополнительных переменных X, Y.Когда вы встретите первый пиксель выше своего порога, сохраните X, Y в firstX, firstY.Каждый раз, когда вы сталкиваетесь с пикселем выше порога, сохраняйте X, Y в lastX, lastY.После выхода из цикла у вас будут значения, которые вы запрашиваете.

Я все еще не уверен, для чего вам понадобятся эти значения.Мне интересно, если вы на самом деле пытаетесь найти прямоугольник, который охватывает все пиксели выше порога, в этом случае вам нужно сделать что-то похожее на вышеприведенное, но обрабатывать X и Y независимо.начать с (например) minX = 9999, maxY = 9999, maxX = 0, maxY = 0.Когда пиксель превышает пороговое значение, обновите значения min / max, чтобы накапливать границы прямоугольника, например:

if (X < minX) minX = X;
if (Y < minY) minY = Y;
if (X > maxX) maxX = X;
if (Y > maxY) maxY = Y;

Затем в конце сканирования вы получите два угла (minX,minY) и (maxX, maxY), которые описывают прямоугольник, который охватывает все пиксели выше порогового значения.

0 голосов
/ 27 апреля 2011

Вы спрашиваете, как получить индексы x и y из одного значения позиции?

Если так, я только что ответил на такой вопрос здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...