在C </mat>中包装vector <mat>时,我遇到了分段错误错误

时间:2014-03-30 02:37:49

标签: c++ c opencv

在页面底部是我正在运行的整个代码供参考。我试图将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}}

1 个答案:

答案 0 :(得分:2)

m在传递给std_carrayTovectorp2f()时未初始化。