gpt4 book ai didi

c++ - OpenCV 在轮廓中获取点

转载 作者:太空宇宙 更新时间:2023-11-04 14:09:10 24 4
gpt4 key购买 nike

到目前为止,我已经尝试找到一种方法来了解一个点 (cvPoint) 是否与另一个点在同一个洞中。我的解决方案是采用应用 cvFindContours() 产生的 CvSeq 并用适当的颜色填充这些孔以获得 Blob 矩阵。当它完成时,知道一个点是否属于与另一个点相同的轮廓只是比较像素值,但我无法弄清楚为什么它不起作用。

不幸的是,这是一个没有人回答的问题,我在 Google 和 StackOverflow 上花了很多时间(或者我真的不擅长寻找关键词)。希望有人有线索 ;)

IplImage *imgTemp = cvCreateImage(cvGetSize(getMorph()), (getMorph())->depth, 1);
CvMemStorage *mem = cvCreateMemStorage();
cvConvertImage(getMorph(), imgTemp);
CvSeq *contours = NULL;
cvFindContours(imgTemp, mem, &contours, sizeof(CvContour), CV_RETR_CCOMP, CV_CHAIN_APPROX_NONE);

int colIt=255;
for (CvSeq *ptr = contours; ptr != NULL; ptr = ptr->h_next) {
if(ptr->v_next != NULL)
{
CvScalar color = CV_RGB( colIt,colIt,colIt);
cvDrawContours(imgTemp, ptr->v_next, color, color, -1, CV_FILLED, 100);
--colIt;
}
}

最佳答案

执行此操作的最佳方法是使用 C++ API。使用 C++ API,您可以输出轮廓的层次结构,从而更容易确定它们是否属于同一轮廓。你可以找到 findContours 的 c++ 变体的解释 here .

仅通过顶层轮廓的示例:

vector<vector<Point> > contours;
vector<Vec4i> hierarchy;
findContours(contourImage, contours, hierarchy, CV_RETR_CCOMP, CV_CHAIN_APPROX_SIMPLE);
int idx = 0;
for (; idx >= 0; idx = hierarchy[idx][0]) {
drawContours(image, contours, idx, Scalar(255), CV_FILLED);
}

关于c++ - OpenCV 在轮廓中获取点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15595049/

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