opencv 图形学函数【c语言版】

本文介绍如何使用OpenCV库实现点集的凸包计算和最小外接正矩形的获取。首先通过创建内存存储区并定义点序列来计算凸包,并将结果绘制到图像上。随后计算点集的最小外接矩形,并同样将其显示在图像中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1,求点集的凸包

    //求凸包
    CvPoint pt1;
	CvMemStorage* storage = cvCreateMemStorage(0);
	CvSeq* ptseq = cvCreateSeq(CV_SEQ_KIND_GENERIC | CV_32SC2, sizeof(CvContour), sizeof(CvPoint), storage);
    cvSeqPush(ptseq, &pt1); //点存入seq

	hull = cvConvexHull2(ptseq, 0, CV_COUNTER_CLOCKWISE, 0);

	CvPoint pt0 = ** CV_GET_SEQ_ELEM(CvPoint*, hull, hull->total - 1);
	for (int i = 0; i < hull->total; i++) {
		CvPoint pt = **CV_GET_SEQ_ELEM(CvPoint*, hull, i); //seq 2 point
		cvLine(img1, pt0, pt, CV_RGB(0, 255, 0), 3, 8, 0);
		pt0 = pt;
    }

2,求点集的最小外接正矩形

	CvPoint p1, p2;
	rec = cvBoundingRect(ptseq, 1); //从seq来求外接正矩形,也可以用contour
	p1.x = rec.x;
	p1.y = rec.y;
	p2.x = rec.x + rec.width;
	p2.y = rec.y + rec.height;
	cvRectangle(img1, p1, p2, CV_RGB(0, 255, 0), 2, 8, 0);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值