opencv按轮廓面积排序

用cvFindcontour可以直接得到图像的多个轮廓,但最近使用时发现cvSeq序列可能存在某个结点为零的情况,即轮廓点数为零,这对我们是没有用的,所以产生了将轮廓按面积大小排序的想法,面积大的排在序列前面,优先使用,面积为零的轮廓舍去,下面是代码实现:

static int cmp_func( const void* _a, const void* _b, void* userdata )
{
	CvPoint* a = (CvPoint*)_a;
	CvPoint* b = (CvPoint*)_b;
	int y_diff = a->y - b->y;
	int x_diff = a->x - b->x;
	return y_diff ? y_diff :x_diff;//优先比交y坐标,a的y坐标大则调整a,b位置;否则比较x坐标,a的x坐标大,也调整a,b位置。
} //即交换a,b位置 swap(a,b) if (a->y >b->y)|(a->x >b->x)
cvSeqSort(cont,cmp_func, 0);


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值