C++ 断言失败<;0<;=i&&;我<&书信电报;int>;vv.尺寸<&燃气轮机&燃气轮机;在未知函数中,文件src\matrix.cpp,第912行

C++ 断言失败<;0<;=i&&;我<&书信电报;int>;vv.尺寸<&燃气轮机&燃气轮机;在未知函数中,文件src\matrix.cpp,第912行,c++,C++,首先,我是这个网站的新手(但我已经阅读了很久了,并从中获得了一些信息:D)如果我在组织问题时犯了一些错误,那么很抱歉……最重要的是,我是个编程新手(好吧,不是新的,但我是6个月前开始的)。。 无论如何,这是代码(感兴趣的部分): extern-DWORD-miothread3(LPDWORD-lpdwParam) { Matε(dest); 大结局; Mat*super; 整数比=3; int低阈值; int-kernel_-size=3; int i=0; cv凸性;完全凸性; 矢量康托尼;

首先,我是这个网站的新手(但我已经阅读了很久了,并从中获得了一些信息:D)如果我在组织问题时犯了一些错误,那么很抱歉……最重要的是,我是个编程新手(好吧,不是新的,但我是6个月前开始的)。。 无论如何,这是代码(感兴趣的部分):

extern-DWORD-miothread3(LPDWORD-lpdwParam)
{
Matε(dest);
大结局;
Mat*super;
整数比=3;
int低阈值;
int-kernel_-size=3;
int i=0;
cv凸性;完全凸性;
矢量康托尼;
向量杰拉尔西亚;
垫壳;
而(1)
{
Canny(ε、尾声、低阈值、低阈值*比率、内核大小);
查找内容(最终、续、简历列表、简历链约无);
Convernhull(康托尼,船体);
}
返回0;
}

当我运行它时,我得到了标题中的断言(“assertion Failed
该断言是由于代码试图访问
contorni
对象的无效索引造成的(请参阅当前文档中的第937行。我怀疑这最终是由于将无效的
contorni
对象传递到
convxhull()中)
函数,可能是一个空向量。通常情况下,我希望该函数检查并拒绝无效输入,尽管我对openCV了解不够,无法知道该函数是否需要有效输入(该函数没有以任何方式提及)


为了避免这个错误,我会显式地检查convexHull()和/或findContours()的输入为了确保它是有效的,如果它不是,则中止或执行适当的操作。

非常感谢,我终于得出了结论……事实上,convexHull函数输入一个向量,同时findContours获取一个向量向量,所以现在的问题是变换“contorni”(向量向量向量的向量)变成一个向量…有人知道什么吗?:D无论如何,真的谢谢你!:)我遇到了对你可能有用的东西。
extern DWORD miothread3 (LPDWORD lpdwParam)
{

Mat epsilon(dest);
Mat finale;
Mat *super;
int ratio = 3;
int lowThreshold;
int kernel_size = 3;
int i = 0;
CvConvexityDefect convessione;
vector<vector<Point> > contorni;
vector<Vec4i> gerarchia;
Mat hull;

while(1)
{
    Canny(epsilon, finale, lowThreshold, lowThreshold*ratio, kernel_size );
    findContours(finale, contorni, CV_RETR_LIST, CV_CHAIN_APPROX_NONE);
    convexHull(contorni, hull);
}
return 0;
}