gpt4 book ai didi

c++ - 返回指针数组(CvSeq 指针)

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

我想要一个函数,它返回类似于指针数组的东西,即指向 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/

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