使用自定义序列点绘制等高线

Drawing Contours using customize Sequence points?

本文关键字:绘制 等高线 自定义      更新时间:2023-10-16

我正在使用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); }

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

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

尝试将cvCreateSeq中的0替换为:(CV_SEQ_KIND_CURVE|CV_SEQ_ELTYPE_POINT|CV_SEQ_FLAG_CLOSED)