You are previewing Arduino Computer Vision Programming.
O'Reilly logo
Arduino Computer Vision Programming

Book Description

Design and develop real-world computer vision applications with the powerful combination of OpenCV and Arduino

About This Book

  • Load and run the applications in Arduino to develop intelligent systems

  • Design and implement detection, classification, and recognition algorithms for computer vision applications

  • Explore the best practices of computer vision development including state of the art algorithms and hands-on example projects

  • Who This Book Is For

    If you are a consumer and hobbyist who has familiarity with the basics of Arduino and wish to learn computer vision programming with Arduino to create intelligent systems, then this book is for you. No knowledge of computer vision programming is required.

    What You Will Learn

  • Understand the design blocks and the generic architecture of computer vision systems by learning an efficient approach to modelling

  • Build up your skill set of computer vision system design using OpenCV by learning fundamentals, camera selection, data acquisition, filtering, processing, feature extraction and recognition for any specific problem

  • Learn the wired and wireless communication capabilities of Arduino and comprehensive best practices to connect it to the OpenCV environment in a platform-independent way

  • Discover how to use Arduino to elegantly interact with real life via physical actions

  • Solidify everything you've learnt by designing and building a computer vision-enabled practical robot from scratch

  • In Detail

    Most technologies are developed with an inspiration of human capabilities. Most of the time, the hardest to implement capability is vision. Development of highly capable computer vision applications in an easy way requires a generic approach. In this approach, Arduino is a perfect tool for interaction with the real world. Moreover, the combination of OpenCV and Arduino boosts the level and quality of practical computer vision applications.

    Computer vision is the next level of sensing the environment. The purpose of this book is to teach you how to develop Arduino-supported computer vision systems that can interact with real life by seeing it.

    This book will combine the powers of Arduino and computer vision in a generalized, well-defined, and applicable way. The practices and approaches in the book can be used for any related problems and on any platforms. At the end of the book, you should be able to solve any types of real life vision problems with all its components by using the presented approach. Each component will extend your vision with the best practices on the topic.

    In each chapter, you will find interesting real life practical application examples about the topics in the chapter. To make it grounded, we will build a vision-enabled robot step by step towards the end of the book. You will observe that, even though the contexts of the problems are very different, the approaches to solve them are the same and very easy!

    Style and approach

    This book is a step-by-step guide that explains each topic sequentially by using best practices and useful tips to build computer-vision applications with OpenCV and Arduino. All the information in the book is combined in a real life all-in-one example application.

    Downloading the example code for this book. You can download the example code files for all Packt books you have purchased from your account at If you purchased this book elsewhere, you can visit and register to have the files e-mailed directly to you.

    Table of Contents

    1. Arduino Computer Vision Programming
      1. Table of Contents
      2. Arduino Computer Vision Programming
      3. Credits
      4. About the Authors
      5. About the Reviewers
        1. Support files, eBooks, discount offers, and more
          1. Why subscribe?
          2. Free access for Packt account holders
      7. Preface
        1. What this book covers
        2. What you need for this book
        3. Who this book is for
        4. Conventions
        5. Reader feedback
        6. Customer support
          1. Downloading the example code
          2. Downloading the color images of this book
          3. Errata
          4. Piracy
          5. Questions
      8. 1. General Overview of Computer Vision Systems
        1. Introducing computer vision systems
        2. Approaching computer vision problems
          1. Data acquisition
          2. Preprocessing
          3. Feature extraction by image processing
          4. Post-processing and post-filtering
          5. Recognition or detection
          6. Acting in the real world
          7. Connecting the pieces
        3. Summary
      9. 2. Fundamentals and Installation of OpenCV
        1. Fundamentals of OpenCV
        2. The installation of OpenCV
          1. Installing OpenCV on Linux
            1. Installing and configuring packages
            2. Using OpenCV with Eclipse CDT
              1. Installing Eclipse CDT
          2. Installing OpenCV on Mac OS
            1. Getting command-line tools
            2. Installing HomeBrew
            3. Using OpenCV in Xcode
          3. Installing OpenCV on Windows
            1. Installing MS Visual Studio 2013
          4. OpenCV on iOS
          5. OpenCV on Android
            1. Installing OpenCV4Android
            2. Eclipse integration
            3. Running samples
        3. Summary
      10. 3. Data Acquisition with OpenCV and Arduino
        1. Image and video acquisition
          1. Camera selection
            1. Resolution
            2. Color capabilities
            3. Frame rate
            4. 2D or 3D
            5. Communication interface
          2. Image acquisition
            1. Reading a static image
            2. Taking a snapshot from a webcam
            3. Getting a video stream from the webcam
            4. Interaction with Kinect
            5. Integration of Kinect with OpenCV
              1. Installing on a Mac
              2. Xcode integration
        2. Sensor data acquisition
          1. Setting up an Arduino environment
          2. Fundamentals of sensors
            1. Sensor types
            2. Sampling theorem
            3. Dealing with noise
          3. Reading data from the temperature sensor
          4. Summary
      11. 4. Filtering Data with OpenCV
        1. Getting started with filtering
          1. 2D convolution
        2. Spatial domain filtering
          1. Smoothing
          2. Sharpening
        3. Color conversions
          1. Grayscale
          2. Binary
            1. Constant thresholding
            2. Adaptive thresholding
        4. Morphological filters
          1. Erosion and dilation
            1. Erosion
            2. Dilation
          2. Opening and closing
            1. Closing
            2. Opening
        5. Gradients and edge detection
          1. The Canny edge detector
          2. Laplacian of Gaussian filter
          3. Sobel
        6. Custom filtering
        7. Histogram equalization
        8. Chapter project
        9. Summary
      12. 5. Processing Vision Data with OpenCV
        1. Extracting features
          1. Using basic statistics
          2. Using color features
          3. Using template matching features
          4. Using contours
          5. Using the convex hull
          6. Using moments
          7. Using the Hough transform
          8. Using corners
          9. Using SIFT
          10. Using SURF
          11. Using ORB
          12. Using blob analysis
        2. Summary
      13. 6. Recognition with OpenCV
        1. Building applications which can think
          1. Template matching
          2. Feature matching
          3. FLANN-based matching
          4. Using cascade classifiers
          5. Using support vector machines
        2. Summary
      14. 7. Communicating with Arduino Using OpenCV
        1. Communicating with Arduino
          1. Wired communications
            1. Communicating via USB
            2. Communicating via the serial port
            3. Communicating via Ethernet
          2. Wireless communications
            1. Communicating via Bluetooth Low Energy
            2. Communicating via ZigBee
            3. Communicating via Wi-Fi
            4. Communicating via radio frequency
        2. Communicating with Java
        3. Communicating with C++
        4. Summary
      15. 8. Acting in the Real World with Arduino
        1. Interfacing electric motors
          1. Driving DC motors
          2. Driving stepper motors
          3. Driving servo motors
        2. Using display screens
          1. Using LCD screens
          2. Using TFT screens
        3. Summary
      16. 9. Building a "Click-to-Go" Robot
        1. System overview
        2. Building a robot
          1. Building mechanics
          2. Building the electronics
            1. Robot/receiver and transmitter drawings
          3. Building the robot controller and communications
        3. Building the vision application
          1. Building a vision controller and communications
        4. Summary
      17. Index