我目前正在尝试使用 Magick++ 裁剪大量图像矩阵。我正在遍历所有图像并将每个图像切割成一个 3x3 的瓷砖网格,以获得它们的平均 RGB 值。目前,下面的代码对第一张图像工作正常,但在第 10 次迭代(矩阵中的第二张图像),程序抛出错误(“libc++abi.dylib: terminate called throwing an exception\n Abort trap: 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);
}
}
}
}
}