Magick++ кадрирует ошибку на втором изображении

В настоящее время я пытаюсь обрезать большую матрицу изображений с помощью Magick++. Я перебираю все изображения и режу каждое из них в сетку плиток 3х3, чтобы получить их средние значения RGB. В настоящее время приведенный ниже код работает нормально для первого изображения, но на 10-й итерации (второе изображение в матрице) программа выдает ошибку ("libC++abi.dylib: terminate selected, выбрасывая исключение \n Прерывание прерывания: 6") на этапе обрезки. Я смотрел на это снова и снова и не могу найти никаких проблем с геометрией математики. Любая помощь будет высоко ценится, спасибо!

slices является матрицей изображений, каждое из которых является изображением 12x12 пикселей. averages это массив RGB значения, которые являются самоопределяемой структурой, содержащей 3 дюйма (красный, зеленый и синий).

void ImageSlicer::calculateRGBValues() {
  int subwidth = 612 / numSlices;
  int subheight = 612 / numSlices;

  int average_subwidth = subwidth / cutSize;
  int average_subheight = subheight / cutSize;

  for (int x = 0; x < numSlices; x++) {
    for (int y = 0; y < numSlices; y++) {
      Image currentSlice = slices[x][y];
      for (int i = 0; i < cutSize; i++) {
        for (int j = 0; j < cutSize; j++) {
          Image cropped = currentSlice;

          cropped.crop(Geometry(average_subwidth,
                                average_subheight,
                                i * average_subwidth,
                                j * average_subheight,
                                false,
                                false));
          cropped.scale(Geometry(1,1));
          ColorRGB pixel = cropped.pixelColor(1,1);
          RGB avg;
          avg.red = pixel.red() * 255;
          avg.green = pixel.green() * 255;
          avg.blue = pixel.blue() * 255;
          averages.push_back(avg);
        }
      }
    }
  }
} 

0 ответов

Другие вопросы по тегам