Исключение OpenCV в ячейке памяти - PullRequest
0 голосов
/ 13 октября 2019

Я хочу создать целостное изображение, и для этого я создал код:

Mat integralImage(Mat image) {
    //since we will use it more, there is no need to evaluate them each time
    int width = image.size().width;
    int height = image.size().height;
    //empty matrices for calculations
    Mat ii = Mat(height, width, DataType<int>::type, 0.0);
    Mat s = Mat(height, width, DataType<int>::type, 0.0);

for (int y = 0; y < height; y++) {
    for (int x = 0; x < width; x++) {
        s.at<Vec3i>(y, x)[0] = ((y - 1 < 0) ? 0 : s.at<Vec3i>(y - 1, x)[0]) + (int)image.at<Vec3b>(y, x)[0];
        s.at<Vec3i>(y, x)[1] = ((y - 1 < 0) ? 0 : s.at<Vec3i>(y - 1, x)[1]) + (int)image.at<Vec3b>(y, x)[1];
        s.at<Vec3i>(y, x)[2] = ((y - 1 < 0) ? 0 : s.at<Vec3i>(y - 1, x)[2]) + (int)image.at<Vec3b>(y, x)[2];

        ii.at<Vec3i>(y, x)[0] = ((x - 1 < 0) ? 0 : ii.at<Vec3i>(y, x - 1)[0]) + s.at<Vec3i>(y, x)[0];
        ii.at<Vec3i>(y, x)[1] = ((x - 1 < 0) ? 0 : ii.at<Vec3i>(y, x - 1)[1]) + s.at<Vec3i>(y, x)[1];
        ii.at<Vec3i>(y, x)[2] = ((x - 1 < 0) ? 0 : ii.at<Vec3i>(y, x - 1)[2]) + s.at<Vec3i>(y, x)[2];
        cout << "(" << ii.at<Vec3i>(y, x)[0] << ", " << ii.at<Vec3i>(y, x)[1] << ", " << ii.at<Vec3i>(y, x)[2] << ") ";
        //cout << (int)image.at<Vec3b>(y, x)[0] << " " << (int)image.at<Vec3b>(y, x)[1] << " " << (int)image.at<Vec3b>(y, x)[2] << "; ";
    }
    cout << endl;
}
return ii;

}

Когда я пытаюсь отобразить пиксели на изображении, тогда все хорошо, но когда я пытаюсьчтобы отобразить пиксели структуры, он выдает ошибку времени выполнения, вот как это выглядит: Результат после сбоя Структура памяти

...