扯谈
从小对计算机视觉就很感兴趣,初一的时候用汇编写了当时386SX上大力神黑白显卡的驱动(为了实现一个小游戏),一晃二十年,与图形图像处理相关的技术体系也一直在学习了解,但因工作原因未能真正深入。
近几年技术管理做的多,接触新技术的机会少了,这段时间刚好有个机会,独立完成了一个手机设备双面鱼眼镜头全景图像合成的项目,核心算法用OpenCV完成。按照年少时的惯例,用博客记录,一来自我巩固,二来予人玫瑰。
鱼眼项目由于要在iOS/Android环境运行,是用C++写的,所以我最熟悉的也是OpenCV C++,但是接下来我所有教程的代码都会用Python来写,主要原因有三:
- 虽然我自己是写C++的,但在有选择的情况下,不建议大家选择C++来编程(一来需要处理编译/依赖/环境等非代码事务太多,二来引用/指针/模板/析构等规则也容易把初中级程序员搞晕,最终真正实现逻辑的时间被压缩得很厉害,相比之下Python简单易用);
- 现在网络上能找到的靠谱的Python版OpenCV教程不多,大多数都是C++写的,介绍Python的则还有大半都是OpenCV 2.x甚至更早的版本,函数名称和参数都有很多变化;
- 由于后期公司会涉及到许多机器学习与服务端业务,主要都用Python来实现,为了与公司同事对接,确保语言一致(Python 3.x)。
以上扯谈,以下正题。