咱就从最基础的图像遍历说起。在C++里,使用OpenCV的Mat对象,直接通过ptr指针去访问每一行数据,那效率提升是实实在在的。比如一个简单的颜色空间转换,或者求个像素平均值,你用迭代器或者at方法,写法是优雅,但在大规模数据面前,指针操作的性能优势就凸显出来了。我习惯用这种基于行指针的循环,感觉代码既有C++的效率,又保持了可读性。
再说说图像滤波。高斯模糊、中值滤波这些算是家常便饭了。C++实现这些滤波器时,可以自己手写卷积核,控制边界条件,这种底层的控制感是Python脚本难以给予的。特别是中值滤波,在处理椒盐噪声时,自己实现一个基于邻域排序的算法,虽然代码量上去了,但对算法原理的理解也深刻多了。