一个c++凹凸缺陷包装器(OpenCV)
A C++ convexityDefects wrapper (OpenCV)?
我试图为OpenCV创建一个c++包装器,但不幸的是不能让它工作。我一次又一次地得到同样的错误:"OpenCV错误:糟糕的参数(凸壳既不是序列也不是矩阵)"。我真的不明白为什么。
代码如下:
void convexityDefects (vector <vector<Point> > contour, vector <vector<int> > convexHullPoints, vector <vector<Point> > *convexHullDefects)
{
CvSeq *contourSeq;
CvSeq *convexHullDefectsSeq;
CvSeq *convexHullSeq;
CvMemStorage *contourSeqStorage = cvCreateMemStorage (0);
CvMemStorage *convexHullSeqStorage = cvCreateMemStorage (0);
CvMemStorage *convexHullDefectsSeqStorage = cvCreateMemStorage (0);
CvMemStorage *cvConvexityDefectsStorage = cvCreateMemStorage (0);
contourSeq = cvCreateSeq (CV_SEQ_KIND_GENERIC | CV_32SC2, sizeof (CvSeq), sizeof (CvPoint), contourSeqStorage);
convexHullDefectsSeq = cvCreateSeq (CV_SEQ_KIND_GENERIC, sizeof (CvSeq), sizeof (CvPoint), convexHullDefectsSeqStorage);
convexHullSeq = cvCreateSeq (CV_SEQ_KIND_GENERIC, sizeof (CvSeq), sizeof (int), convexHullSeqStorage);
for (int counter = 0; counter < contour.at (0).size (); counter ++)
{
CvPoint element = {contour.at (0).at (counter).x, contour.at (0).at (counter).y};
cvSeqPush (contourSeq, &element);
}
int hullArray [convexHullPoints.at (0).size ()];
for (int counter = 0; counter < convexHullPoints.size (); counter ++)
{
hullArray [counter] = convexHullPoints.at (0).at (counter);
}
for (int counter = 0; counter < convexHullPoints.size (); counter ++)
{
cvSeqPush (convexHullSeq, &(hullArray [counter]));
}
convexHullDefectsSeq = cvConvexityDefects (contourSeq, &convexHullSeq, cvConvexityDefectsStorage);
CvConvexityDefect convexHullDefectsArray [convexHullDefectsSeq -> total];
cvCvtSeqToArray (convexHullDefectsSeq, &convexHullDefectsArray, CV_WHOLE_SEQ);
for (int counter = 0; counter < convexHullDefectsSeq -> total; counter ++)
{
CvPoint start = {convexHullDefectsArray [counter].start -> x, convexHullDefectsArray [counter].start -> y};
CvPoint depthPoint = {convexHullDefectsArray [counter].depth_point -> x, convexHullDefectsArray [counter].depth_point -> y};
CvPoint end = {convexHullDefectsArray [counter].end -> x, convexHullDefectsArray [counter].end -> y};
vector <Point> convexityDefectVector;
convexityDefectVector.push_back (start);
convexityDefectVector.push_back (depthPoint);
convexityDefectVector.push_back (end);
convexHullDefects -> push_back (convexityDefectVector);
}
cvReleaseMemStorage (&contourSeqStorage);
cvReleaseMemStorage (&convexHullSeqStorage);
cvReleaseMemStorage (&convexHullDefectsSeqStorage);
cvReleaseMemStorage (&cvConvexityDefectsStorage);
}
你应该看看另一篇关于SO的文章。看来他已经解决了这个问题。
相关文章:
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 尝试导入pybind-opencv模块时出现libgtk错误
- 测试构建C++包装器时出现 OpenCV 错误
- 我是否必须在C 接口的OPENCV C包装器中自由分配的内存
- C++ - 错误:为 OpenCV 的 cv::标量::all 创建 C 包装器时出现预期的类型说明符
- 如何将托管位图从 C# 传递到包装的非托管 OpenCV 的 Mat
- 包装使用OpenCV进行图像处理的C代码,以便与同样使用OpenCV的Python一起使用
- 使用 SWIG 将 OpenCV 的 C++ API 包装在 GO 中
- OpenCv c++为基本的打印垫函数创建一个c包装器
- 如何创建一个仅包含 C 代码包装C++代码的 .so 文件 - 与 OpenCV 相关
- 包装 OpenCv C++代码以在 C# 中使用
- 包装 python 的 c++ 类(使用 opencv)会给出错误
- 我可以用C包装OpenCV的C++接口,然后用Lisp的CFFI包装吗?
- 一个c++凹凸缺陷包装器(OpenCV)
- Opencv图像包装器
- . net OpenCV包装器值得使用吗?
- 如何用Boost::Python包装C++OpenCV代码
- 在为 OpenCV 的 C++ createTrackbar 运行 C 包装器时出现编译分段错误(核心转储)
- OpenCv错误在C包装为imread: QNativeImage:无法连接到共享内存段
- 如何将OpenCV的MatExpr的C包装器的指针输出转换回MatExpr。