到目前为止,我已经尝试找到一种方法来知道一个点(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;
}
}