Open Source Computer Vision is one of the most used open source, cross-platform, computer vision library available to perform real-time computer vision processes and is developing at an incredible rate. OpenCV library is a brainchild of Dr. Gary Bradski. It is released under BSD license and supports Linux, Windows, Mac OS, iOS and Android with interfaces avaiable in C++, C, Python and Java. Inspite of its popularity and usability, only recently a book on developing applications using Python interface became available. The OpenCV Computer Vision with Python book is published by Packt Publishing and written by Joseph Howse who develops augmented reality based applications for mobile devices, kiosks, and the web.
I have used Python interface of OpenCV for over a year and I am really glad that someone wrote a book describing how to implement basics of computer vision using Python bindings. The online documentation is not the best place for a beginner to start and is useful for experienced programmers who just need to learn the usage of API. I have spent some time reading this book and I have found it much more helpful than the online documentation. This book is aimed at beginners who want to quickly learn to develop computer vision applications using Python with the best practices of object oriented programming. The book describes the appropriate usage Python API without dealing with the high level math required for computer vision, making it much more useful for beginners.
The book does justice to its aim and contents. As a beginner, the most difficult part is installing the OpenCV library and hence the book starts with highly detailed installation instructions for Linux, Windows and Mac OS. The author introduces readers to OpenCV and discusses I/O operations, i.e. reading/writing image, video files and accessing cameras. I really appreciate the author’s attention to small details like macros, flags and parameters and how to use them appropriately. The difference between current Python modules and legacy Python modules which sometimes confuses beginners has been set straight and explained in brief. Python interface relies heavily on numpy module and the author has tried to explained it in brief. The book discusses the much needed GUI utilities. I can’t emphasize more on the object oriented structure of the book. As the book is aimed for application development, it describes API functions with examples of interactive and interesting applications such as converting images to Technicolor format, implementing different color curves to emulate photo films, implementing filters by writing custom kernels, and many other useful functions. The book jumps on to a detailed discussion about the implementation of Haar Cascades to detect objects and goes on to developing an application to track objects. The author concludes the book by a detailed explanation about integration of pygame with opencv for interactive applications and creating cascades to detect objects.
I really enjoyed reading this book with the mindset of application development but was a bit let down when the book came to an abrupt end. I was expecting the book to cover more topics and discuss further advanced part of computer vision, but since the book is meant for beginners, I can understand the author’s discretion towards advanced topics and high level math. The author also encourages the reader to contribute to OpenCV library. I really liked the way important notes and tips are described in the book with links to source codes. The book is well written and thoroughly revised. If you’re a beginner and want to develop interactive applications using Computer Vision, OpenCV Computer Vision with Python, is a must read book.