在页面底部是我正在运行的整个代码供参考。我试图将vector<Mat>
包裹在C中,我已将vector<Point2f>
包裹在C中,并且我将vector<Mat>
包裹起来 vector_Point2f* std_carrayTovectorp2f(Point2f* a, size_t len) {
vector<Point2f>* v = new vector<Point2f>;
for(size_t i = 0; i < len; i++)
v->push_back(a[i]);
return v;
}
。 Point2f版本运行正常,但Mat版本出现Segmentation Fault错误(核心转储)。
这是我的矢量包装器:
vector_Mat* std_carrayTovectorm(Mat* a, size_t len) {
vector<Mat>* v = new vector<Mat>;
for(size_t i = 0; i < len; i++)
v->push_back(a[i]);
return v;
}
这是我的矢量包装器:
Mat* a
看到它们都被包裹了。我需要保留vector_Mat*
输入参数,#include <opencv2/highgui/highgui.hpp>
#include <opencv2/highgui/highgui_c.h>
#include <stdio.h>
#include <iostream>
using namespace std;
using namespace cv;
typedef vector<Point2f> vector_Point2f;
typedef vector<Mat> vector_Mat;
vector_Mat* std_carrayTovectorm(Mat* a, size_t len) {
vector<Mat>* v = new vector<Mat>;
for(size_t i = 0; i < len; i++)
v->push_back(a[i]);
return v;
}
vector_Point2f* std_carrayTovectorp2f(Point2f* a, size_t len) {
vector<Point2f>* v = new vector<Point2f>;
for(size_t i = 0; i < len; i++)
v->push_back(a[i]);
return v;
}
int main()
{
Mat* m, n, o;
vector_Mat* v = std_carrayTovectorm(m, 1);
cout << v;
}
返回相同的值。另外,保持相同的功能,其他一切都可以改变。任何帮助表示赞赏。
整个代码:
{{1}}
答案 0 :(得分:2)
m
在传递给std_carrayTovectorp2f()
时未初始化。