从“CvSeq”类型到“CvPoint*”类型的无效转换(如何在 Opencv 中进行类型转换)

Posted

技术标签:

【中文标题】从“CvSeq”类型到“CvPoint*”类型的无效转换(如何在 Opencv 中进行类型转换)【英文标题】:invalid cast from type ‘CvSeq’ to type ‘CvPoint* (How to typecast in Opencv) 【发布时间】:2010-03-29 07:45:17 【问题描述】:

我在下面一行得到错误

Vertex2 = (CvPoint*)Vertices[I]; //其中vertices是轮廓的cvseqVertex2是cvpoint

我从“CvSeq”类型到“CvPoint*”类型的错误无效转换

我该如何解决这个问题

【问题讨论】:

请展示足够多的代码来帮助我们找出问题所在——在这种情况下,包括 Vertex2 和 Vertices 的声明。 【参考方案1】:

你只是想获取数组中元素的地址吗?在这种情况下你会去

cvseq* Vertex2 = &Vertices[i];

一个名为 Vertex2 的指针,类型为 cvseq 指针,其值是数组 Vertices 中元素 i 的地址。

更新:

只是为了帮助您准确了解您的代码有什么问题。

'CvSeq' to type 'CvPoint*'

这表示您有一个 CvPoint* 类型的变量(即您的 Vertex2),并且您正在尝试分配 CvSeq 类型的数据。

【讨论】:

Hai Vertex2 属于 CVPoint,而 Vertices 属于 Cvseq 类型,它不能使用它说不能在初始化中将“CvSeq*”转换为“CvPoint*” 与我的代码行?您以后是否尝试将 Vertex2 用于喜欢采用 Cvpoint* 的函数? cvseq 和 cvpoint 有什么区别?您不能总是从一种类型转换为另一种类型。它适用于将浮点数转换为整数以减少小数部分,但尝试将“猫”转换为“花”太复杂了。要将“cat”转换为“flower”,您需要扩展 cat 类以具有一个函数,该函数以“flower”类型实例的格式返回数据 我的代码看起来像这样 else Vertex2 = (CvPoint*)Vertices[I];//这是我得到的错误 if(Itotal-1) Vertex3 = (CvPoint )顶点[I + 1]; if (Vertex3.X == -1 && Vertex3.Y == -1) // 检查顶点 k 是否是曲线的起点 Vertex3 = (CvPoint)Vertices[I + 2];曲线=真; 我很清楚我无法发布整个代码,但在第一行我在更改它后收到错误消息“在初始化中将‘CvSeq*’转换为‘CvPoint*’” 不要忘记您可以编辑您的“问题”以帮助更好地解释问题。我假设这段代码处于某种循环中。 “Vertex2 = (CvPoint*)Vertices[I];”此行获取 Vertices[i] 并将其类型转换为指向 CvPoint 的点。这是假设 Vertex2 实际上是 Cvpoint* 类型,但您的错误说它无法将 CvPoint* 转换为 CvSeq*,意思是 Vertex* 是 Cvseq* 类型。因此,这就是您应该进行类型转换的内容,或者您​​应该更改 Vertex2 的定义。您可能不需要进行类型转换或使用指针。你会使用积分,这样你就可以使用更少的内存

以上是关于从“CvSeq”类型到“CvPoint*”类型的无效转换(如何在 Opencv 中进行类型转换)的主要内容,如果未能解决你的问题,请参考以下文章

opencv的基本数据类型CvPoint,CvSize,CvRect,CvScalar

Opencv的cvDilate函数

OpenCV基础类型

3.1 OpenCV的基本数据类型

从 cvpoint 转换为 cvpoint2d32f

OpenCV——CvSeq动态结构序列