gpt4 book ai didi

c++ - Mat数据结构(数组)初始化错误

转载 作者:行者123 更新时间:2023-11-28 02:46:42 25 4
gpt4 key购买 nike

我正在为粒子过滤器编写一个 opencv 代码,但我遇到了一些错误,我认为这是因为下面的代码。我如何在声明本身时初始化 Mat 数组?

Mat particle[N];
for (int i = 0; i < N; i++)
{
particle[i].at<float>(0, 0) = rec.x + distribution(generator);//x
particle[i].at<float>(1, 0) = rec.y + distribution(generator);//y
particle[i].at<float>(2, 0) = 0;//vel(x)
particle[i].at<float>(3, 0) = 0;//vel(y)
particle[i].at<float>(4, 0) = min(0.66 + abs(rng.uniform(0, 1)), MAX_a);//a
particle[i].at<float>(5, 0) = rec.height + 10 + rng.uniform(0, 1);//vel(h)
weight[i] = 1.0 / N;
}

最佳答案

你为什么不使用 std::vector:

std::vector<cv::Mat> particle(N, cv::Mat(6, 1, CV_32F)); // constructor which takes
// number of elems and allocates memory of them using second argument as a prototype object
for (int i = 0; i < N; i++)
{
particle[i].at<float>(0, 0) = rec.x + distribution(generator);//x
particle[i].at<float>(1, 0) = rec.y + distribution(generator);//y
particle[i].at<float>(2, 0) = 0;//vel(x)
particle[i].at<float>(3, 0) = 0;//vel(y)
particle[i].at<float>(4, 0) = min(0.66 + abs(rng.uniform(0, 1)), MAX_a);//a
particle[i].at<float>(5, 0) = rec.height + 10 + rng.uniform(0, 1);//vel(h)
weight[i] = 1.0 / N;
}

我们使用了以下构造函数:

explicit vector (size_type n, const value_type& val = value_type(), const allocator_type& alloc = allocator_type());

which 构造一个包含 n 个元素的容器。每个元素都是 val 的拷贝。 ( reference)

是的,您之前的尝试遇到了麻烦,因为内置的 Mat 对象数组没有将它们初始化为适当的大小,而 vector 的构造函数所做的。

关于c++ - Mat数据结构(数组)初始化错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24202670/

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