在OpenCV中更改Mat对象中的数据,但也会影响另一个Mat对象中的数据 我在C++版本2.4.13中编写了OpenCV程序。我初始化了一个包含带零的Mat指针的向量vec。我更改了vec[0]的内容,发现vec[1]中的数据也受到影响,这意味着现在并非所有像素都是零。如果我更改vec[1]的数据,vec[0]中的数据也会受到影响。更改vec[0]将影响vec[1]中的前3行,而changin vec[1]将影响vec[0]中的最后3行。我想他们的记忆可能重叠了
这是我的代码:在OpenCV中更改Mat对象中的数据,但也会影响另一个Mat对象中的数据 我在C++版本2.4.13中编写了OpenCV程序。我初始化了一个包含带零的Mat指针的向量vec。我更改了vec[0]的内容,发现vec[1]中的数据也受到影响,这意味着现在并非所有像素都是零。如果我更改vec[1]的数据,vec[0]中的数据也会受到影响。更改vec[0]将影响vec[1]中的前3行,而changin vec[1]将影响vec[0]中的最后3行。我想他们的记忆可能重叠了,c++,opencv,mat,C++,Opencv,Mat,这是我的代码: 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)); res
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";
}
}
}
矢量结果;
int row=响应映射[0]->行;
int col=响应映射[0]->cols;
对于(int i=0;i深度(),标量(0));
结果:推回(分类);
}
对于(int i=0;iat(i,j);
++计数;
}
}
bool done=false;
对于(int i=0;i
原来的垫子可能是双重的吗?responseMap是CV_16UThen,你为什么用at
而不是at
?我明白了问题所在,谢谢。如果我想将CV_8U图像的像素值分配给CV_16U图像,我能做什么?第二个for
循环似乎可以用替换。count
将只是行*col
。