O'Reilly logo
live online training icon Live Online training

Getting Started with Computer Vision Using Go

Learn the fundamentals of computer vision using the power and simplicity of the Go programming language.

Ron Evans

Computer Vision (CV) is the newest technology rising in importance as video sensors and cameras can provide rich data from observing the real world. However, relatively few programmers have any experience or knowledge in how CV works or how to apply it.

Using OpenCV, the most popular open source computer vision library, along with the Go programming language, this training will both provide a solid footing in the basics of computer vision, as well as show your how you can use Go to write CV applications. This training will also show you how you can use deep neural networks (DNN) based on Caffe and Tensorflow for computer vision.

What you'll learn-and how you can apply it

  • Using OpenCV and Go together
  • Basic Video Input from cameras and video files
  • Filtering and video processing
  • Motion detection
  • Face tracking
  • Object classification using deep neural networks
  • Object tracking using deep neural networks

This training course is for you because...

  • CV is a important new technology for real-world applications that deal with visual data.
  • You will need basic understanding about CV in order to apply this technology to your own needs.
  • Using OpenCV along with Go provides a powerful yet simple way to create high-performace CV applications


  • Basic knowledge of the Go programming language
  • Ability to use the programming shell for user’s operating system
  • Basic math including simple algebra
  • USB webcam

Course Set-up:

Recommended Preparation:

About your instructor

  • Ron is a award-winning software developer who has been very active in the free and open source community for many years. As ringleader of The Hybrid Group, he has been helping clients such as AT&T, Intel, Pebble, & Sphero solve some of their most difficult technical and business problems.

    He has been a very active speaker, keynoting and presenting at industry conferences around the world such as MakerFaire, JSConf, OSCON, RubyConf, GopherCon, Scottish Ruby Conference, Los Angeles Ruby Conference, RubyKaigi, FutureRuby, Ignite, and MagmaConf. He has been profiled in Wired, Fast Company, and The New York Times, as well as featured in Computerworld Magazine in the article "Rock Star Coders"​ for his popular blog post "I'd Rather Be A Jazz Programmer"​. Ron has published videos for O'Reilly as well as written articles for MSNBC, BYTE Magazine, and the Direct Marketing Association. He was one of the recipients of the "Ruby Hero"​ awards in 2014.

    Ron is an active code contributor to many open source projects, including being the creator of the award-winning KidsRuby (http://kidsruby.com), free software to help teach Ruby programming to kids. He has also been involved in open source hardware for many years, and is the creator of the open source robotics framework Gobot (http://gobot.io), as well as the computer vision framework GoCV (https://gocv.io).


The timeframes are only estimates and may vary according to how the class is progressing

Getting Started (50min)

  • Setup check
  • The basic architecture of OpenCV/GoCV
  • The “Hello World” of computer vision
  • Participants will run the “Hello, Video” program on their own machines
  • Break (length: 10min)

GoCV Basics (50min)

  • Introduce basic video i/o
  • Participants will visually experiment with video input/output, by using “CV Scope”. CV Scope is a program for visually manipulating computer vision algorithms that is written in GoCV itself. Participants will be able to compile and run CV Scope on their own computers.
  • Introduce video/image filters
  • Participants will experiment with the most common filters on their own machines
  • Break (length: 10min)

Motion Detection (25min)

  • Concepts of motion detection based on algorithms
  • Code breakdown of how to perform motion detection
  • Participants will modify the motion detection code, and run on their own machine.
  • https://github.com/hybridgroup/gocv/blob/master/cmd/motion-detect/main.go
  • Break (length: 5min)

Face Tracking (25min)

  • Concepts behind how to perform face tracking based on algorithms
  • Code breakdown of how to perform face tracking
  • Participants will modify the face tracking code, and run on their own machine
  • https://github.com/hybridgroup/gocv/blob/master/cmd/facedetect/main.go
  • Break (length: 5min)

Object Classification With Deep Neural Networks (25min)

  • Concepts of object classification using a Deep Neural Network
  • Code breakdown of how to perform object classification
  • Participants will modify the object classification code, and run on their own machine.
  • https://github.com/hybridgroup/gocv/blob/master/cmd/caffe-classifier/main.go
  • Break (length: 5min)

Object Tracking With Deep Neural Networks (25min)

  • Concepts of object tracking using Deep Neural Networks
  • Code breakdown of how to perform object tracking
  • Participants will modify the object tracking code, and run on their own machine.
  • https://github.com/hybridgroup/gocv/blob/master/cmd/dnn-detection/main.go
  • Break (length: 5min)