我正在使用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, ®ionPoint); }
void DrawMaskingPoints()
{ cvDrawContours(maskingImage, seq, cvScalar(255,255,255), cvScalar(0,0,0), 0, 1, 8); }
我的代码首先按顺序获取轮廓元素并加载到SetMaskingPoints(),然后通过DrawMasingPoints()绘制轮廓。
我也尝试打印输出,发现cvSeq由点值组成,但无法绘制。
答案 0 :(得分:1)
尝试使用0
替换cvCreateSeq
中的(CV_SEQ_KIND_CURVE|CV_SEQ_ELTYPE_POINT|CV_SEQ_FLAG_CLOSED)
。