gpt4 book ai didi

c++ - 在 C 中包装 vector 时出现段错误

转载 作者:太空宇宙 更新时间:2023-11-04 08:43:10 25 4
gpt4 key购买 nike

页面底部是我正在运行的完整代码以供引用。我正在尝试包装 vector<Mat>在 C 中,我已经包装了 vector<Point2f>在 C 中,我正在包装 vector<Mat>相同。 Point2f 版本运行良好,但 Mat 版本出现段错误(核心已转储)。

这是我的 vector 包装器:

    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;
}

这是我的 vector 包装器:

  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;
}

最佳答案

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

关于c++ - 在 C 中包装 vector<Mat> 时出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22739622/

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