Magick ++ crop会在第二张图像上抛出错误

时间:2013-05-04 23:21:56

标签: c++ image-processing imagemagick rmagick magick++

我目前正在尝试使用Magick ++裁剪大型图像矩阵。我循环遍历所有图像并将每个图像切割成3x3网格图块以获得它们的平均RGB值。目前下面的代码适用于第一个图像,但在第10次迭代(矩阵中的第二个图像),程序抛出一个错误(“libc ++ abi.dylib:terminate称为抛出异常\ 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 个答案:

没有答案