gpt4 book ai didi

opencv - OpenCV程序中的堆损坏

转载 作者:行者123 更新时间:2023-12-02 17:45:18 24 4
gpt4 key购买 nike

我创建了一个变量hisTotF

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

我正在尝试将元素初始化为零。当我编译该程序时,它运行良好,但是当我运行它时,则在初始化数组中的第6个元素时会给出“堆异常”。我正在尝试通过 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
}

关于opencv - OpenCV程序中的堆损坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37129574/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com