向量积在图像中的常用场景

叉积(向量积)定义:

1、a×b或a∧b,结果为标量;
2、向量积|c|=|a×b|=|a||b|sin<a,b>,即c的长度在数值上等于以a,b,夹角为θ组成的平行四边形的面积;
3、a=(x1,y1),b=(x2,y2),则a×b=x1y2-y1x2;
4、a×b小于0,向量a小于180°逆时针旋转到向量b;a×b大于0,向量a小于180°顺时针旋转到向量b;a×b等于0,向量a平行与向量b;

引用场景1:

OpenCV中contourArea轮廓面积算法时,假设轮廓点(A、B、C)按顺时针排序,O为原点,OA×OB为对应平行四边形的面积,一半即为三角形OAB的面积(绿色区域)
则有ABC的面积=OA×OB×0.5+OB×OC×0.5+OC×OA×0.5,其中OC×OA方向与其他相反;
在这里插入图片描述

引用场景2:

对一组任何分布的点集采用冒泡法进行顺时针排序时,需要对两两向量方向进行确定,如OA旋转到OB是顺时针还是逆时针的。

bool IsAnticlockwise(Point O, Point a, Point b)
{
	//如果oa顺时针旋转到ob的角度小于180°,返回false,否则返回true
	if (a.x >= 0 && b.x < 0)
		return true;
	if (a.x == 0 && b.x == 0)
		return a.y > b.y;
	//向量OA和向量OB的叉积
	int det = (a.x - O.x) * (b.y - O.y) - (b.x - O.x) * (a.y - O.y);
	if (det < 0)
		return true;
	if (det > 0)
		return false;
	//向量OA和向量OB共线,以距离判断大小
	int d1 = (a.x - O.x) * (a.x - O.x) + (a.y - O.y) * (a.y - O.y);
	int d2 = (b.x - O.x) * (b.x - O.y) + (b.y - O.y) * (b.y - O.y);
	return d1 > d2;
}

引用场景3:

通过两向量的叉积正负判断线段是否相交;
https://blog.csdn.net/li1615882553/article/details/80372202
在这里插入图片描述

其他:

注意区分点积(向乘),结果为向量,v1.v2=|v1|*|v2|*cosθ

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值