cv :: Mat_上的push_back是否会自动按顺序对数据进行排序?
我正在尝试将矢量值复制到opencv Mat。问题是运行时异常。
Error: (-215) DataType<_Tp>::type == type() && cols == 1 in function push_back
代码
#include <vector>
#include <cmath>
#include <opencv2/core/cvdef.h>
#include <opencv2/core/mat.hpp>
#include <opencv2/imgcodecs.hpp>
#include <iostream>
#include <opencv2/imgproc.hpp>
#include <opencv2/videoio.hpp>
#include <opencv/cv.hpp>
int main ( int argc, char **argv ) {
cv::Mat_<float> samples_xy(2, 100);
std::vector<float> xsamples(100,1),ysamples(100,2);
for ( auto t : xsamples ) {
samples_xy.push_back(t);
}
for ( auto t : ysamples ) {
samples_xy.push_back(t);
}
}
答案 0 :(得分:0)
感谢@BHawk的提示,我正在使用正确的代码完成答案。
#include <vector>
#include <cmath>
#include <opencv2/core/cvdef.h>
#include <opencv2/core/mat.hpp>
#include <opencv2/imgcodecs.hpp>
#include <iostream>
#include <opencv2/imgproc.hpp>
#include <opencv2/videoio.hpp>
#include <opencv/cv.hpp>
int main ( int argc, char **argv ) {
cv::Mat_<float> samples_xy;
// fill the row of both the mats with 1 and 2 respectively.
cv::Mat_<float> xsamples(1, 100, 1.f), ysamples(1, 100, 2.f);
samples_xy.push_back(xsamples);
samples_xy.push_back(ysamples);
std::cout << samples_xy;
}
这是错误的解释。
除了cv :: Mat系列(Mat,Mat_,Matx)以外的任何其他类型的cv :: Mat系列都不可能push_back。在这个问题中,我试图推动一个浮动而不允许它。
另一个问题是列数必须与推送项目的矩阵相同。因此必须推送具有相同列数的任何其他Mat。在上述情况下,只能推送100列的矩阵。
所以,整个代码看起来像这样 -
{{1}}