OpenCV4应用开发:入门、进阶与工程化实践
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

前言

为什么要写这本书

当前,人工智能热潮席卷学术界与工业界,人工智能已经成为时下热门的词汇。人工智能领域有两个最引人注目的技术—计算机视觉(CV)与自然语言处理(NLP)。其中,计算机视觉应用范围广泛,应用场景众多,市场迫切需要不同层次的计算机视觉专业人才。

作为当下主流的计算机视觉开发工具与平台之一,OpenCV从测试版本发布至今已有20余年,得到业界知名公司与广大开发者的认可。当前OpenCV已经集成了2000多个计算机视觉相关算法,支持深度学习模型的部署、推理。

我对图像处理的兴趣始于大学做毕业设计时。工作了一段时间之后,一个偶然的机会让我重拾对图像处理的兴趣。于是从2011年开始,我把大量的业余时间都投入到该技术领域,并且接触到了OpenCV开发框架。使用OpenCV框架帮助我节省了很多时间,加快了项目交付速度。后来我在博客与个人微信公众号“OpenCV学堂”上发表了大量OpenCV开发相关的文章,得到了很多读者的反馈、支持与鼓励。通过撰写这些文章,我对如何更好地使用OpenCV进行实际项目开发有了更多思考,也对技术背后的知识有了更深理解与认知。

OpenCV4发布于2018年,现已成为OpenCV框架的主流版本之一。相比之前的版本,OpenCV4的大量函数接口都符合并支持C++11标准,学习起来就像学习其他面向对象编程语言一样容易。此外,OpenCV4支持多种加速机制,可以实时加速传统算法及深度学习模型。OpenCV4在性能、稳定性、易用性上完全超越了之前的各个版本。

国内已经出版了很多OpenCV的书籍,但是我觉得还没有一本书能够完整涵盖OpenCV4开发的技术路径。所以,我认为我有责任把自己多年的OpenCV项目开发经验通过本书毫无保留地呈现给广大读者。希望这本书能帮助初学者掌握基于OpenCV框架进行开发的技术,进而投身到人工智能的技术浪潮中去。

读者对象

本书适合以下读者阅读:

❑计算机视觉领域的从业者。

❑OpenCV的爱好者。

❑高等院校相关专业的师生。

❑C++/Python开发者。

如何阅读本书

本书共16章,分为3篇,由浅入深地讲解OpenCV的技术及应用。

基础篇(第1~4章)主要介绍了OpenCV4框架中基础模块相关的图像知识、函数及应用。

进阶篇(第5~12章)深入介绍了OpenCV4核心模块的功能与应用场景,主要包括图像卷积、二值分析、形态学分析、特征提取、视频分析、机器学习模块等,其中穿插大量实践案例。

高级与实战篇(第13~16章)全面介绍了OpenCV4支持的各种性能加速技术与深度学习模型推理技术,从项目实现出发,讲解了对象检测、缺陷检测、深度学习模型加速等高级应用层面的OpenCV开发技术。

其中,第14章的大部分内容由我的好友与合作者张振撰写。特别感谢他在我需要帮助时,给予我大力支持并提供高质量图书内容。

如果你是一个初学者,我建议你从第1章开始依序阅读本书;如果你已经接触过OpenCV,已有一定的基础,可以从进阶篇开始阅读;如果你使用过OpenCV并有一定的开发经验,可以根据需要进行阅读。

源码是本书内容的一部分,希望读者在阅读本书的同时,通过代码实践加深对书中内容的理解与认知,正所谓“纸上得来终觉浅,绝知此事要躬行”。

勘误和支持

由于我的水平有限,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。我已经把本书配套源码上传到码云上,访问地址为https://gitee.com/opencv_ai/book-opencv4-practice。如果有读者想直接提交勘误之后的代码,请先通过我的邮箱congcong009@gmail.com联系我,经同意后即可提交。同时,我也会根据读者反馈修改、更新源码,所以建议读者在阅读本书之前先从码云上获取最新的配套源码。

如果读者有更多的宝贵意见,也欢迎发送邮件给我,期待读者的真挚反馈。

致谢

感谢“OpenCV学堂”微信公众号上一直支持我的各位读者朋友,感谢你们直言不讳地指出了我文章中的很多不妥之处与需要改进的地方,感谢你们的宝贵建议。感谢OpenVINO中文社区的堵葛亮为第15章提供技术支持与建议。

谨以此书献给众多热爱OpenCV的朋友们,希望你们未来可以创造更大的社会价值。

贾志刚