gpt4 book ai didi

c++ - cv::Mat 在分配给 'at(0,0)' 时导致崩溃

转载 作者:太空宇宙 更新时间:2023-11-03 21:57:12 25 4
gpt4 key购买 nike

我有以下简单的代码崩溃了,我不是很清楚为什么这不起作用。

cv::Mat *test_bug = new cv::Mat(img->rows, img->cols, CV_32F);
test_bug->at<unsigned char>(0,0) = 4;

test_bug 最终成为 207 x 207 矩阵..所以我知道数组索引是有效的。这是复制/粘贴错误。

OpenCV Error: Assertion failed (dims <= 2 && data && (unsigned)i0 < (unsigned)size.p[0] && (unsigned)(i1*DataType<_Tp>::channels) < (unsigned)(size.p[1]*channels()) && ((((sizeof(size_t)<<28)|0x8442211)

((DataType<_Tp>::depth) & ((1 << 3) - 1))*4) & 15) == elemSize1()) in unknown function, file C:\opencv231\build\include\opencv2/core/mat.hpp, line 552

最佳答案

原因:

cv::Mat *test_bug = new cv::Mat(img->rows, img->cols, CV_32F);

注意 CV_32F;这是一个浮点矩阵。

test_bug->at<unsigned char>(0,0) = 4;

注意unsigned char(或uchar);现在您将其视为无符号字符矩阵 (CV_8U)。

修复:

所以如果你的矩阵应该是 float ,你需要访问元素:

test_bug->at<float>(0,0) = 4;

或者,如果您想声明一个 uchar 矩阵:

cv::Mat *test_bug = new cv::Mat(img->rows, img->cols, CV_8U);

关于c++ - cv::Mat 在分配给 'at<unsigned char>(0,0)' 时导致崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8112996/

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