- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想要一个函数,它返回类似于指针数组的东西,即指向 CvSeq 数组的第一个元素的指针。但是,我不知道是否可以创建一个 CvSeq 数组。
这样做的目的是得到不同图像轮廓的CvSeq值。
这是我的代码:
CvSeq* get_template_contours(string templ[], int SIZE){
IplImage *templ_img;
CvSeq *contour = NULL;
CvSeq *contourPoly = new CvSeq[SIZE];
CvMemStorage* storage = cvCreateMemStorage(0);
for(int i = 0; i < SIZE; i++){
templ_img = cvLoadImage(templ[i].c_str(), 0);
cvFindContours(templ_img, storage, &contour, sizeof(CvContour),
CV_RETR_EXTERNAL, CV_CHAIN_APPROX_SIMPLE, cvPoint(0, 0));
contourPoly[i]=cvApproxPoly(contour, sizeof(CvContour), storage,CV_POLY_APPROX_DP,1,1);
}
cvReleaseImage(&templ_img);
cvClearMemStorage(storage);
cvClearSeq(contour);
return contourPoly;
}
但是我得到这个错误
error: no match for ‘operator=’ in ‘*(contourPoly + ((long unsigned int)(((long unsigned int)i) * 96ul))) = cvApproxPoly(((const void*)contour), 128, storage, 0, 1.0e+0, 1)’
/usr/local/include/opencv2/core/types_c.h:1316:1: 注意:候选是:CvSeq& CvSeq::operator=(const CvSeq&)
提前致谢
最佳答案
cvApproxPoly 返回一个指向 CvSeq 结构的指针,而您试图将它存储在一个 CvSeq 数组中,而不是一个指向 CvSeq 的指针数组中。我建议您使用 CvSeq 指针 vector :
#include <vector>
/* .... */
std::vector<CvSeq*> contourPoly(SIZE);
然后你就可以成功分配CvSeq指针了:
contourPoly[i]=cvApproxPoly(contour, sizeof(CvContour), storage,CV_POLY_APPROX_DP,1,1);
请注意,该函数的签名现在应该是:
std::vector<CvSeq*> get_template_contours(string templ[], int SIZE)
关于c++ - 返回指针数组(CvSeq 指针),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9658657/
在使用 cv FindContours( g_gray, g storage, & contours ) 之后,我需要将整数值添加到序列 CvSeq * contours 中的所有点。怎么做? 最佳答
我正在创建一个 double 值数组,我想将创建的数组添加到 CvSeq。我为此目的使用了 cvSeqPush。但是当我检索这个数组时,它只显示数组的第一个元素,其余的是垃圾。代码如下.. int T
我想要一个函数,它返回类似于指针数组的东西,即指向 CvSeq 数组的第一个元素的指针。但是,我不知道是否可以创建一个 CvSeq 数组。 这样做的目的是得到不同图像轮廓的CvSeq值。 这是我的代码
我们可以随机访问 CvSeq 对象中的一个点吗?我们可以遍历它,所以我想它可以以一种简单的方式实现。这是如何实现的? 最佳答案 我找到了。有一个名为cvGetSeqElem 的方法,它接收序列和索引。
我有点迷失在 OpenCV 文档中,我想将 cvFindContours 返回的 CvSeq 保存到一个数组中,据我所知它将返回 CvContour 的序列,但我找不到它包含的内容?我应该保存它的哪些
我有一个快速的 OpenCV 问题。是否可以采用关键点 vector 并将其转换为 CvSeq? 提前致谢。 最佳答案 我不知道你为什么想要那个,但它应该是可能的,有了这些功能你可以做任何你想做的事:
嗨, 我如何在 opencv 中进行类型转换,我想将类型转换为 cvseq 到 cvpoint 最佳答案 据我所见: http://opencv.willowgarage.com/documentat
Bradski 说“当你想删除一个序列时,你可以使用 cvClearSeq(),一个清除序列所有元素的例程。” 但是,此函数不会将内存存储中分配的 block 返回给存储或系统。 他说“如果你想出于其
我使用: cvFindContours(gray, mem, contours, Loader.sizeof(CvContour.class) , CV_RETR_CCOMP, CV_CHAIN_AP
我想做一个 double 的 CvSeq。我想也许我可以通过将元素类型指定为 CV_32FC1 来解决这个问题: MySeq=cvCreateSeq(CV_32FC1,sizeof(CvSeq),si
因此,我在工作中有一个使用 OpenCV 的项目(这实际上是我使用 OpenCV 做的第一个项目),我必须使用 CvSeq 之类的东西来使用 SURF 算法。自从我开始把它放在我的代码中,这完全是一团
我正在尝试从图像中提取轮廓,旋转这些轮廓并将它们插入到新图像中。代码如下。我的问题出在旋转轮廓方法中。执行代码时会看到以下错误“TypeError:‘cv.cvseq’对象不支持项目分配”。 关于如何
我是 OpenCV 的新手,在使用它时遇到了一些问题。 目前我正在研究二叉分区树 (BPT) 算法。基本上我需要根据一些参数将图像分成许多区域。 2个区域将合并形成1个新区域,由这2个区域组成。 我设
我正在使用 javacv 开发项目,我能够识别多边形并将该详细信息存储在 CvSeq 中。我尝试访问该结构中的点,但它对我不起作用。所以请有人解释一下如何在 javacv 中访问 CvSeq 结构中的
问题已回答,请参阅问题末尾的解决方案。仍然欢迎更多评论/回答。 所以我在将所有元素放入一个内存存储时遇到了一些麻烦,我设法做的最好的事情就是每次都覆盖存储并且只取出覆盖它的最终元素,遗憾的是这还不够。
我是一名优秀的程序员,十分优秀!