0

我正在使用 opencv python 接口(不是 cv2)

contourmov =  cv.FindContours(image1, storage, cv.CV_RETR_CCOMP, cv.CV_CHAIN_APPROX_SIMPLE)
contourmove = cv.FindContours(image2, storage, cv.CV_RETR_CCOMP, cv.CV_CHAIN_APPROX_SIMPLE)

我有来自 image1 和 image2 的轮廓,我需要两个轮廓之间的交集。

我用了

image3 = cv.CloneImage(image1)
cv.Set(image1, cv.Scalar(0,0,0));
image4 = cv.CloneImage(image1)
cv.Set(image2, cv.Scalar(0,0,0));
cv.DrawContours(image3,contourmov,cv.CV_RGB(0,255,0),cv.CV_RGB(0,255,0),1)
cv.DrawContours(image4,contourmove,cv.CV_RGB(0,255,0),cv.CV_RGB(0,255,0),1)
cv.And(image3,image4,image3)

所以我假设 image3 将具有 image1 和 image2 轮廓的交集,但我没有看到它们。

请让我知道我哪里出错了。

4

1 回答 1

0

我解决了这个问题。我不得不使用

 cv.DrawContours(image3,contourmov,cv.CV_RGB(0,255,0),cv.CV_RGB(0,255,0),1,cv.CV_FILLED) 

这会填充轮廓区域,您将获得交点。否则只有线,你会得到可能是点的线交叉点。

于 2012-11-20T12:27:57.717 回答