初学看底层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