欢迎来到 安卓源码空间!
安卓源码空间

                                      初学看底层c++ opencv源码



看c++ opencv里的函数时,一些函数,打开都是声明,但是没有看到函数,所以找了教程,然后自己整理了一下。

这里以opencv3.4.2为例:

0.环境:

windows10
vs2015
opencv3.4.2

1.下载opencv3.4.2

opencv3.4.2,然后双击解压到opencv下。

2.编译opencv

在opencv路径下,新建build-2015,按照下图分别,将路径配置好,点Configurate与Gernerate。

在opencv/build-2015目录下生成如下文件:

3.查看源码

双击ALL_BUILD.vcxproj,出现:

4.查找函数:

在modules下,以multiply函数为例,ctrl+f ,查找对应函数源码:

可见源码如下:

template <class T>
void
Matrix44<T>::multiply (const Matrix44<T> &a,
                       const Matrix44<T> &b,
                       Matrix44<T> &c)
{
    register const T * IMATH_RESTRICT ap = &a.x[0][0];
    register const T * IMATH_RESTRICT bp = &b.x[0][0];
    register       T * IMATH_RESTRICT cp = &c.x[0][0];

    register T a0, a1, a2, a3;

    a0 = ap[0];
    a1 = ap[1];
    a2 = ap[2];
    a3 = ap[3];

    cp[0]  = a0 * bp[0]  + a1 * bp[4]  + a2 * bp[8]  + a3 * bp[12];
    cp[1]  = a0 * bp[1]  + a1 * bp[5]  + a2 * bp[9]  + a3 * bp[13];
    cp[2]  = a0 * bp[2]  + a1 * bp[6]  + a2 * bp[10] + a3 * bp[14];
    cp[3]  = a0 * bp[3]  + a1 * bp[7]  + a2 * bp[11] + a3 * bp[15];

    a0 = ap[4];
    a1 = ap[5];
    a2 = ap[6];
    a3 = ap[7];

    cp[4]  = a0 * bp[0]  + a1 * bp[4]  + a2 * bp[8]  + a3 * bp[12];
    cp[5]  = a0 * bp[1]  + a1 * bp[5]  + a2 * bp[9]  + a3 * bp[13];
    cp[6]  = a0 * bp[2]  + a1 * bp[6]  + a2 * bp[10] + a3 * bp[14];
    cp[7]  = a0 * bp[3]  + a1 * bp[7]  + a2 * bp[11] + a3 * bp[15];

    a0 = ap[8];
    a1 = ap[9];
    a2 = ap[10];
    a3 = ap[11];

    cp[8]  = a0 * bp[0]  + a1 * bp[4]  + a2 * bp[8]  + a3 * bp[12];
    cp[9]  = a0 * bp[1]  + a1 * bp[5]  + a2 * bp[9]  + a3 * bp[13];
    cp[10] = a0 * bp[2]  + a1 * bp[6]  + a2 * bp[10] + a3 * bp[14];
    cp[11] = a0 * bp[3]  + a1 * bp[7]  + a2 * bp[11] + a3 * bp[15];

    a0 = ap[12];
    a1 = ap[13];
    a2 = ap[14];
    a3 = ap[15];

    cp[12] = a0 * bp[0]  + a1 * bp[4]  + a2 * bp[8]  + a3 * bp[12];
    cp[13] = a0 * bp[1]  + a1 * bp[5]  + a2 * bp[9]  + a3 * bp[13];
    cp[14] = a0 * bp[2]  + a1 * bp[6]  + a2 * bp[10] + a3 * bp[14];
    cp[15] = a0 * bp[3]  + a1 * bp[7]  + a2 * bp[11] + a3 * bp[15];
}

开始需要自己学习c++ opencv源码了,纪念一下。加油!!!

参考:

[1].Cmake编译OpenCV3.1源码+运行自带的dnn分类识别

[2].如何查看OpenCV函数的源代码


————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。                        
                            原文链接:https://blog.csdn.net/qq_35975447/article/details/95212233

copyright@ 2020-2028  安卓源码空间网版权所有   

备案号:豫ICP备2023034476号-1号