cornerHarris(gray, dst, 2, 3, 0.04);一行代码,52个字符。写出来不到一秒,编译器处理它也就几毫秒。但当这一行真正跑起来的时候,OpenCV在corner.cpp的780行C++里走完了一条从Sobel梯度计算、到逐像素构建自相关矩阵、再到Harris响应函数的完整链路——中间还穿插了boxFilter窗口化平滑、通用SIMD向量化、AVX专用加速三套并行计算路径。这篇文章要做的事情很明确:把这780行全部拆开。读完之后,你会清楚三件事——Harris响应函数R = det(M) - k·trace(M)²这个公式到底是怎么从自相关矩阵的特征值推出来的;OpenCV在实现的时候做了哪些工程上的取舍;以及你自己动手从Sobel梯度开始,不调用cornerHarris(),一步一步写出一个和OpenCV结果像素级一致的检测器,到底需要踩哪些坑。文章的边界也说清楚:只谈Harris和Shi-Tomasi,不涉及FAST、ORB、SIFT等后续特征检测算法。只看CPU路径上的C++实现,不拆OpenCL内核和IPP加速分支。OpenCV版本基于当前主线源码。骨架:一个角点要经过几道工序在动手拆源码之前,先把cornerHarris()的完整执行链路画出来。从你写下那一行调用开始,到最终拿到一张浮点响应图,中间一共经过五道工序:cornerHarris(src, dst, blockSize, ksize, k)