opencv3.0 复数操作 Mat元素为复数 / Point

本文介绍了在OpenCV中如何高效地进行复数运算,包括使用Point和Point2d进行坐标加减法的具体方法,并提供了两个实用的示例。

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

复数操作

 在opencv中,我们会用到坐标的加减运算。也就是复数加法了。

当做的运算量小,可以用Point的运算符重载来完成加减法。

 

但如果有大量的复数运算怎么办呢?

可以把Mat的元素设置为Point来完成。

以下有两个例子,分别用了Point 和 Point2d。

Point 是int型二维坐标,Point2d是double型二维坐标。

 

下面就是一个调用Mat中Point2d元素的例子。

void complex_test1()
{
    Mat x1 = Mat(1,3,CV_64FC2);

    x1.ptr<Point2d>(0)[0] = Point2d(2,3);
    x1.ptr<Point2d>(0)[1] = Point2d(4,0);
    x1.ptr<Point2d>(0)[2] = x1.ptr<Point2d>(0)[0] + x1.ptr<Point2d>(0)[1];

    cout << "Matrix x1:" << x1 << endl;
}

 

为了书写方便,可以使用Mat_辅助类

代码可简化为:

void complex_test2()
{
    Mat x1_ = Mat(1,3,CV_32SC2);
    Mat_<Point> x1 = x1_;

    x1(0,0) = Point(2,3);
    x1(0,1) = Point(4,0);
    x1(0,2) = x1(0,0) + x1(0,1);

    cout << "Matrix x1:" << x1 << endl;
}

这里x1(0,0) 就是x1_.ptr<Point>(0)[0]

以上两个函数的结果为:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值