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

复数操作

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

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

 

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

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

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

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

 

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

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

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

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

 

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

代码可简化为:

void complex_test2()
{
    Mat x1_ = Mat(1,3,CV_32SC2);
    Mat_ 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(0)[0]

以上两个函数的结果为:

opencv3.0 复数操作 Mat元素为复数 / Point_第1张图片

你可能感兴趣的:(OpenCV)