Book Image

Android Application Programming with OpenCV 3

By : Joseph Howse
Book Image

Android Application Programming with OpenCV 3

By: Joseph Howse

Overview of this book

<p>Android Application Programming with OpenCV 3 is a practical, hands-on guide to computer vision and mobile app development. It shows how to capture, manipulate, and analyze images while building an application that combines photography and augmented reality. To help the reader become a well-rounded developer, the book covers OpenCV (a computer vision library), Android SDK (a mobile app framework), OpenGL ES (a 3D graphics framework), and even JNI (a Java/C++ interoperability layer).</p> <p>Now in its second edition, the book offers thoroughly reviewed code, instructions, and explanations. It is fully updated to support OpenCV 3 and Android 5, as well as earlier versions. Although it focuses on OpenCV's Java bindings, this edition adds an extensive chapter on JNI and C++, so that the reader is well primed to use OpenCV in other environments.</p>
Table of Contents (13 chapters)
Android Application Programming with OpenCV 3
Credits
About the Author
About the Reviewers
www.PacktPub.com
Preface
Index

Modifying ImageDetectionFilter for 3D tracking


For 3D tracking, ImageDetectionFilter needs all the same member variables as before, except the mSceneCorners variable. We also need several new variables to store computations about the target's pose. Moreover, the class needs to implement the ARFilter interface. Let's modify ImageDetectionFilter as follows:

public class ImageDetectionFilter implements ARFilter {

  // ...

  // The reference image's corner coordinates, in 3D, in real
  // units.
  private final MatOfPoint3f mReferenceCorners3D =
    new MatOfPoint3f();
  // Good corner coordinates detected in the scene, in // pixels.
  private final MatOfPoint2f mSceneCorners2D =
    new MatOfPoint2f();

  // Distortion coefficients of the camera's lens.
  // Assume no distortion.
  private final MatOfDouble mDistCoeffs =
  new MatOfDouble(0.0, 0.0, 0.0, 0.0);

  // An adaptor that provides the camera's projection matrix.
  private final CameraProjectionAdapter mCameraProjectionAdapter;
  ...