2016-04-28 4 views
1

Итак, у меня есть около 160 изображений размером 2048 пикселей x 512 пикселей. Изображения - серые изображения, которые я проверяю на белые области, прямоугольники вокруг областей защищены в списке. Теперь я хочу сшить изображения вместе и нарисовать прямоугольники впоследствии, я обновляю позицию y каждого прямоугольника, чтобы я мог рисовать их в нужном месте.C# не все прямоугольники рисуются в изображении с высотой около 70k пикселей

Сшивание и обновление положения y прекрасно работают. Сшитое изображение составляет около 2048 пикселей x 80 кпк. У меня есть 11 белых областей, которые обнаружены, но нарисованы только 3 прямоугольника, хотя при отладке все 11 нужно нарисовать.

Первые три прямоугольника находятся в первой 30-кратной оси y px, остальные начинаются с 45k px. Когда я меняю код, чтобы начать с изображения 60, первые 3 прямоугольника, конечно, не нарисованы, а остальные 8 рисуются.

У вас есть идеи, как исправить проблему?

public void GenerateImageMap() 
    { 

     StichtedImageTemp = new Image<Bgr, byte>(ImgWidth, ImgHeight * (GrayImageMap.Count)); 
     for (int i = 0; i < GrayImageMap.Count; i++) 
     { 
      StichtedImageTemp.ROI = new System.Drawing.Rectangle(0, i * ImgHeight, ImgWidth, ImgHeight); 
      GrayImageMap[i].Convert<Bgr,byte>().CopyTo(StichtedImageTemp); 
      CvInvoke.cvResetImageROI(StichtedImageTemp); 
     } 

     StichtedImageTemp.Save("GrayImageMap.png"); 
    } 

public void GenerateDefectMap(List<Rectangle> RectangleItems) { 
     GenerateImageMap(); 
     foreach (var item in RectangleItems) 
     { 
      StichtedImageTemp.Draw(item.GetRectangle, new Bgr(Color.Aquamarine), 3); 
     } 
     StichtedImageTemp.Save("GrayDefectMap.png"); 
    } 
+0

Вы не можете легко создавать растровые изображения произвольных размеров. – TaW

+0

Хм, у вас есть другое решение, которое сработает? 160 изображений - это только начало ... В конце концов, будет еще больше, и я хочу стабильный алгоритм для большого количества изображений, если это возможно. Я бы очень признателен за любую идею, спасибо! – atix

+0

К сожалению, вы просите об этом, используя стандартные процедуры обработки изображений для чего-то большого. –

ответ

0

Вы не даете достаточного количества источников. Например, как вызов GenerateImageMap в GenerateDefectMap влияет на что-либо, он не передает и не изменяет RectangleItems и, похоже, работает только на GrayImageMap, который предположительно глобальный или что-то, кто знает.

Лично я бы не использовал методы System.Drawing, или вам придется быть осторожными с интерполяциями по краям и т. Д. Я бы преобразовал вручную (пиксель за пикселем), что было бы логически намного проще, чем система тарелок ты выбрал. Это мое мнение.

+0

Я использую GenerateImageMap для создания изображения StichtedImageTemp, чтобы рисовать в нем свои прямоугольники. Модификация оси прямоугольника y происходит в другой функции, которая в значительной степени получает прямоугольник как входной сигнал и возвращает измененный прямоугольник с другой осью y, которая вычисляется путем добавления оси y с умножением числа изображений, которые были просмотрены до того, как была найдена текущая белая область. Я не понимаю, что вы имеете в виду при преобразовании вручную, не могли бы вы попытаться описать это немного больше? спасибо – atix

 Смежные вопросы

  • Нет связанных вопросов^_^