gpt4 book ai didi

c++ - OpenCV Mat 在 push_back 时崩溃

转载 作者:太空狗 更新时间:2023-10-29 21:43:34 25 4
gpt4 key购买 nike

我正在尝试使用 push_back 函数在 OpenCV 中创建以下矩阵。

[0, 0, 0;
0, 0, 0;
1, 1, 1;
1, 1, 1]

以下代码有效。

代码 I

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 documentation about push_back ,

template<typename T> void Mat::push_back(const T& elem)

唯一的要求是“元素的类型和列数必须与容器矩阵中的相同”。而且我认为 Code II 符合要求。谁能解释为什么 Code II 会导致崩溃?

最佳答案

这很有趣,甚至可能是一个错误。

  • Code1 调用 void Mat::push_back(const Mat& elems),

  • Code2 调用 void Mat::push_back(const _Tp& elem) ,这显然有问题。似乎从 Mat::zeros() 返回的 MatExpr 错误(因为它是非常量?)

好吧,这个也行(但显然不是你想要的)

    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;

也许make an issue here

关于c++ - OpenCV Mat 在 push_back 时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22544822/

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