OpenCV程序中存在堆损坏



我创建了一个类似的变量hisTotF

cv::Mat hisTotF=cv::Mat(1,60,CV_64FC1,Scalar(0));

我正在尝试将元素初始化为零。当我编译这个程序时,它运行得很好,但当我运行它时,在初始化数组中的第六个元素时,它会给出一个"堆异常"。我正试图通过命令histTotF.at<double>(1,6)=0将元素初始化为零。

我的记忆力快用完了吗。程序用代码0xC0000374激发。我正在Visual Studio 2012中运行OpenCV。

histTotF.at<double>(1,6) = 0;

这意味着第二行和第七列的像素。你只有一行,所以你应该使用:

histTotF.at<double>(0,6) = 0;

以便编辑第一行和第七列的像素。在cv::Mat中,不确定性为零。


无论如何,使用构建cv::Mat

cv::Mat hisTotF=cv::Mat(1,60,CV_64FC1,Scalar(0));

足以使其全部为零。

如果您想在一行中遍历所有像素并以快速方式更改它们的值,您可以使用cv::Mat::ptr:

auto row_ptr = hisToF.ptr<double>(0); //Pointer to the first row.
for(size_t col_idx=0; col_idx<hisToF.cols; ++hisToF.cols){
    row_ptr[col_idx]= 0; // Or whatever value you want
}

相关内容

  • 没有找到相关文章

最新更新