C++ cv::Mat在与';at<;无符号字符>;(0,0)和#x27;
我有以下几段简单的代码正在崩溃,我现在还不清楚为什么这样做不起作用C++ cv::Mat在与';at<;无符号字符>;(0,0)和#x27;,c++,opencv,C++,Opencv,我有以下几段简单的代码正在崩溃,我现在还不清楚为什么这样做不起作用 cv::Mat *test_bug = new cv::Mat(img->rows, img->cols, CV_32F); test_bug->at<unsigned char>(0,0) = 4; cv::Mat*test\u bug=new cv::Mat(img->rows,img->cols,cv\u 32F); 测试错误->在(0,0)=4; test\u bug最后是一个207乘2
cv::Mat *test_bug = new cv::Mat(img->rows, img->cols, CV_32F);
test_bug->at<unsigned char>(0,0) = 4;
cv::Mat*test\u bug=new cv::Mat(img->rows,img->cols,cv\u 32F);
测试错误->在(0,0)=4;
test\u bug
最后是一个207乘207的矩阵..所以我知道数组索引是有效的。这是复制/粘贴错误
OpenCV错误:断言失败(dims原因:
注意CV_32F
;这是一个浮点矩阵
test_bug->at<unsigned char>(0,0) = 4;
或者,如果要声明uchar
矩阵:
cv::Mat *test_bug = new cv::Mat(img->rows, img->cols, CV_8U);
原因:
注意CV_32F
;这是一个浮点矩阵
test_bug->at<unsigned char>(0,0) = 4;
或者,如果要声明uchar
矩阵:
cv::Mat *test_bug = new cv::Mat(img->rows, img->cols, CV_8U);
我准确地运行了您的代码,没有遇到任何问题,但我正在Linux上使用OpenCV主干 有几件事可以尝试: 如果使用浮点数而不是无符号字符,会发生什么情况:
test_bug->at< float >(0, 0) = 4.0;
另外,确保img->size()!=size(0,0)
这也可能是个问题
希望这会有帮助!我准确地运行了您的代码,没有遇到任何问题,但我正在Linux上使用OpenCV主干 有几件事可以尝试: 如果使用浮点数而不是无符号字符,会发生什么情况:
test_bug->at< float >(0, 0) = 4.0;
另外,确保img->size()!=size(0,0)
这也可能是个问题
希望这会有帮助!您是否尝试在编译代码时启用了所有警告并提供了调试信息(使用的GCC将是
GCC-Wall-g
)?是否尝试使用调试器(例如gdb
)?我拥有的opencv库仅限于visual studio。我正在使用调试器进行调试,但我不清楚为什么会失败。这似乎是opencv本身引发的错误。您是否尝试在启用所有警告和调试信息的情况下编译代码(使用的GCC将是GCC-Wall-g
)?您是否尝试使用调试器(例如,gdb
)?我拥有的opencv库仅限于visual studio。我正在使用调试器,但我不清楚为什么会失败。这似乎是opencv本身引发的错误
test_bug->at< unsigned int >(0, 0) = 0x41CA0000; // same as 25.25 in IEEE 754...