OpenCV Mat在push_back时崩溃
OpenCV Mat crashes while push_back
我试图通过使用push_back函数在OpenCV中创建以下矩阵。
[0, 0, 0;
0, 0, 0;
1, 1, 1;
1, 1, 1]
下面的代码可以工作。
我<<p> 代码/strong>Mat matrix( 0, 3, CV_32F );
Mat zero = Mat::zeros( 2, 3, CV_32F );
Mat one = Mat::ones( 2, 3, CV_32F );
matrix.push_back( zero );
matrix.push_back( one );
但是下列操作将导致崩溃。
代码二
Mat matrix( 0, 3, CV_32F );
matrix.push_back( Mat::zeros( 2, 3, CV_32F ) );
matrix.push_back( Mat::ones( 2, 3, CV_32F ) );
根据OpenCV关于push_back的文档,
template<typename T> void Mat::push_back(const T& elem)
唯一的要求是"元素的类型和列数必须与容器矩阵中的相同"。我认为代码II符合要求。有人能解释为什么代码II会导致崩溃吗?
这很有趣,甚至可能是一个bug。
-
Code1调用void Mat::push_back(const Mat&elem),
-
Code2调用void Mat::push_back(const _Tp&Elem),这显然是坏的。似乎从Mat::zero()返回的MatExpr是错误的(因为它是非const ?)
这个也可以(但显然不是你想要的)
Mat matrix( 0, 3, CV_32F );
matrix.push_back( Mat( Mat::zeros( 2, 3, CV_32F) ) );
matrix.push_back( Mat( Mat::ones( 2, 3, CV_32F ) ) );
cerr << matrix << endl;
这里可能会有问题
相关文章:
- 当回溯以零开始时,如何调试崩溃
- 内联映射初始化的动态atexit析构函数崩溃
- 执行函数时导致崩溃的变量
- 程序崩溃并显示"std::out_of_range"错误
- CoInitialize()在单独的线程上崩溃而不返回
- 使用调试/崩溃报告将应用程序部署到客户端
- 为什么所有C++编译器都会崩溃或挂起此代码
- 为什么lambda在clang上崩溃而不是在gcc上崩溃
- 为什么我的多线程作业队列崩溃
- ExtractIconEx:可以工作,但偶尔会崩溃
- 为什么引用传递会导致此崩溃(C++)
- 试图创建流或fopen时程序崩溃
- 类对象数组的问题会导致崩溃
- 排序时无法执行交换操作.我做的时候它会崩溃.为什么
- 为什么要增加导致崩溃的指针
- 在虚幻引擎中删除NXOpen对象时崩溃
- 为什么它只打印双链接列表的第一个值,而我的程序却崩溃了
- 应用程序崩溃并显示"symbol _ZdlPvm, version Qt_5 not defined in file libQt5Core.so.5 with link time reference"
- Visual Studio在尝试读取resource.txt文件时崩溃
- 为什么对std::vector::back()的调用会使我的程序崩溃