使用自定义序列点绘制轮廓?

时间:2012-09-10 10:40:52

标签: c++ opencv

我正在使用OpenCV使用cvFindContours()查找图像的轮廓区域。然后,我想用不同的坐标(和不同的像素对应)绘制这个轮廓......

因此,我使用cvGetSeqElem()获取所有轮廓元素点并转换像素对应关系并创建自定义cvSeq并将每个元素加载到自定义cvSeq。但是,当我尝试使用自定义cvSeq绘制轮廓时,图像中没有响应。

为了这项工作的目的,我想使用轮廓来掩盖图像。

代码是这样的:

<!-- language: c++ -->

CvMemStorage *memStorage = cvCreateMemStorage(0);
CvSeq* seq = cvCreateSeq(0, sizeof(CvSeq), sizeof(CvPoint), memStorage);

void  SetMaskingPoints(CvPoint point)
{ cvSeqPush(seq, &regionPoint); }
void DrawMaskingPoints()
{ cvDrawContours(maskingImage, seq, cvScalar(255,255,255), cvScalar(0,0,0), 0, 1, 8); }

我的代码首先按顺序获取轮廓元素并加载到SetMaskingPoints(),然后通过DrawMasingPoints()绘制轮廓。

我也尝试打印输出,发现cvSeq由点值组成,但无法绘制。

1 个答案:

答案 0 :(得分:1)

尝试使用0替换cvCreateSeq中的(CV_SEQ_KIND_CURVE|CV_SEQ_ELTYPE_POINT|CV_SEQ_FLAG_CLOSED)