更改OpenCV中Mat对象中的数据,但也会影响另一个Mat对象

时间:2017-02-22 09:44:26

标签: c++ opencv mat

我正在用C ++ 2.4.13版编写OpenCV程序。我启动了一个包含带零指针的矢量vec。我改变了vec [0]的内容,发现vec [1]中的数据也受到影响,这意味着现在并非所有像素都是零。如果我更改vec [1]的数据,vec [0]中的数据也会受到影响。更改vec [0]将影响vec [1]中的前3行,而changin vec [1]将影响vec [0]中的最后3行。我认为他们的记忆可能相互重叠。

这是我的代码:

vector<Mat> result;
int row = responseMaps[0] -> rows;
int col = responseMaps[0] -> cols;
for (int i = 0; i < responseMaps.size(); ++i) {
    Mat classification = Mat(row, col, responseMaps[0] -> depth(), Scalar(0));
    result.push_back(classification);
}

for (int i = 0; i < row; ++i) {
    for (int j = 0; j < col; ++j) {
        result[1].at<double>(i, j) = responseMaps[0] -> at<double>(i, j);

        ++count;
    }
}
bool done = false;
for (int i = 0; i < row; ++i) {
    for (int j = 0; j < col; ++j) {
        if (!isZero(result[0].at<double>(i, j))) {
            cout << result[0].at<double>(i, j) << "\n";
            cout << i << " " << j << "\n";
        }
    }
}

0 个答案:

没有答案