Opencv数据类型(四):复数Complex类

文章目录

    • 1、共轭复数介绍
    • 2、Opencv复数类介绍
    • 3、举例

1、共轭复数介绍

摘自 百度百科 复数介绍https://baike.baidu.com/item/%E5%A4%8D%E6%95%/254365?fr=aladdin
共轭复数,两个实部相等,虚部互为相反数的复数互为共轭复数(conjugate complex number)。当虚部不为零时,共轭复数就是实部相等,虚部相反,如果虚部为零,其共轭复数就是自身(当虚部不等于0时也叫共轭虚数)。复数z的共轭复数记作z(上加一横),有时也可表示为Z*。同时, 复数z(上加一横)称为复数z的复共轭(complex conjugate)。

2、Opencv复数类介绍

Opencv中的复数类与 STL中的复数类模板 complex<> 不一样,但是与之兼容,可以相互转换.
最大的区别在于成员函数的获取, STL中是通过成员函数 real()和image()来获取,而在Opencv中,是通过成员变量re和im获取.

template<typename _Tp> class Complex
{
public:

    //! default constructor
    Complex();
    Complex( _Tp _re, _Tp _im = 0 );

    //! conversion to another data type
    template<typename T2> operator Complex<T2>() const;
    //! conjugation
    Complex conj() const;

    _Tp re, im; //< the real and the imaginary parts
};

3、举例

int main() {
    cv::Complex<float> z1(2.0,4.5);
    cv::Complex<float> z2(3.0,4.0);
    z2 += z1;

    std::cout << z1.re << " " <<z1.im << std::endl; // cout 2  4.5
    std::cout << z2.re << " " <<z2.im << std::endl; // cout 5  8.5
    std::cout << z1.conj().re << " " << z1.conj().im << std::endl; // 2  -4.5,输出共轭复数

    std::cout << "hello world" << std::endl;
    return 0;
}

你可能感兴趣的:(个人笔记,opencv3.4.1深入浅出)