OpenCV错误:在矢量之间移动数据时断言失败
OpenCV Error: Assertion failed when moving data between vectors
我正在使用卡尔曼滤波器进行一些图像跟踪,有时我需要对数据进行重新排序,以确保不同向量的索引相同。我通过快速逻辑检查来确保当前帧的位置在上一帧的公差范围内。如果是这种情况,我将数据移动到第二个向量以匹配新索引,然后稍后将完全重新排序的向量移回原始向量。如下:
void vector_order(vector<Rect> found_filtered)
{
int j, i;
vector<KalmanFilter> organise_KF(10);
vector<kal_ret> organise_kal(10);
vector<FilterHistory> organise_MAV(10);
for (i=0; i<found_filtered.size(); i++)
{
for (j=0; j<track_ret.size(); j++) //compare tracks for kalman filter
{
if (found_filtered[i].x >= track_ret[j].measPt.x-12 || found_filtered[i].x <= track_ret[j].measPt.x+12 )
{
if (found_filtered[i].y >= track_ret[j].measPt.y-30 || found_filtered[i].y <= track_ret[j].measPt.y+30 )
{
organise_kal[i] = track_ret[j];
organise_KF[i] = KF[j];
break;
}
}
}//if there is no match that index will stay empty to be filled by the filter return
for (j=0; j<filter_ret.size(); j++) //compare tracks for moving average filter
{
if (found_filtered[i].x >= filter_ret[j].current.x-12 || found_filtered[i].x <= filter_ret[j].current.x+12 )
{
if (found_filtered[i].y >= filter_ret[j].current.y-30 || found_filtered[i].y <= filter_ret[j].current.y+30 )
{
organise_MAV[i] = filter_ret[j];
}
}//if there is no match that index will stay empty to be filled by the filter return
}
}
for (i=0; i<10; i++)
{
track_ret[i] = organise_kal[i];
filter_ret[i] = organise_MAV[i];
KF[i] = organise_KF[i];
}
}
问题是,一旦系统第二次使用数据,就会抛出以下错误:
OpenCV Error: Assertion failed (dims <= 2 && (unsigned)i0 < (unsigned)(size.p[0])*size.p[1]) && elemSize() == (((((DataType<_Tp>::type) & ((512 - 1) << 3)) >> 3) + 1) << ((((sizeof(size_t)/4+1)*16384|0x3a50) >> ((DataType<_Tp>::type) & ((1 << 3) - 1))*2) & 3 ))) in unknown function, file C:opencvbuildincludeopencv2/core/mat.hpp, line 569
我是编码新手。有没有更好的方法来重新排序数据,或者我只是错过了一个简单的步骤?
我意识到了这个问题。我没有在新矢量中初始化卡尔曼滤波器,所以当系统使用新滤波器时,没有矩阵数据或缩放集。现在一切都好多了。感谢您查看
相关文章:
- 为什么复制而不是移动数据元素?
- 设计将引用元素移动到开头的数据结构.C++
- 在 c++ 中将数据从未对齐结构数组移动到对齐结构数组
- 函数超过堆栈大小,请考虑将一些数据移动到堆 (C6262)
- 在预分配的内存中移动数据
- 如何将图像数据从搜索窗口中移动到本地存储器OpenCL
- 为什么将 operator() 的定义从 .h 移动到.cpp文件会导致数据竞争?
- 编译器生成的移动成员在静态数据成员上功能
- 如何有效地将底层数据从 std::string 移动到其他类型的变量?
- C 可以使用MOVE SEMATICS将数据从一个向量移动到另一个向量
- 覆盖复制/移动分配超载时,我是否需要删除当前的成员数据
- 使用无锁指针队列在线程之间移动数据是否安全
- 当我们将数据从 ax 移动到端口地址时会发生什么
- 排序链表-移动节点还是交换数据成员
- 移动具有常量数据成员或引用成员的类的ctor
- 在OpenGL中移动一个简单的形状(形状在数据结构中)
- 位移动操作员无视数据大小
- 如何使用常见的C 业务逻辑和数据访问层构建跨平台移动应用程序
- 如何使用默认移动构造函数将数据移出范围
- 将视频帧数据移动到GPU的最有效方法是什么?