Years ago I wanted to implement PTAM. I was young and naïve 🙂
Well I got a few moments to spare on a recent sleepless night, and I set out to implement the basic bootstrapping step of initializing a map with a planar object - no known markers needed, and then tracking it for augmented reality purposes.
Continue reading "Bootstrapping planar AR and tracking without markers [w/code]"
You already know I love libQGLViewer. So here a snippet on how to do AR in a QGLViewer widget. It only requires a couple of tweaks/overloads to the plain vanilla widget setup (using the matrices properly, disable the mouse binding) and it works.
Continue reading "Augmented Reality on libQGLViewer and OpenCV-OpenGL tips [w/code]"
Sharing a simple code snippet for run-length encoding with OpenCV...
Continue reading "Run length encoding in OpenCV [w/code]"
I came across an extremely simple color balancing algorithm here. And I thought I'll quickly transcode it to OpenCV.
Here's the gist:
Continue reading "Simplest Color Balance with OpenCV [w/code]"
Don't you just love scouring the web for a piece of simple code, come up short and then just write it yourself? Well that was the case with NURBS for me. These simple curvy lines, why doesn't anyone just dish out a straightforward implementation of them? Well, now you have it. I wrote a simple renderer that reads a DXF file with NURBS (from Rhino3D) using DXFLIB, although the DXF file format is super easy to parse, and renders them to an image with OpenCV.
Continue reading "Simple NURBS renderer [w/ code]"
Phew. Finally this is working!
I've been confined to OpenGL 2.1 and GLSL 1.2 on the Mac since the Qt OpenGL context will not pick up the core OpenGL profile (a big problem on it's own) and get an OpenGL 3.x and GLSL 1.5... So it's back to old school GL'ing, but anyway some things are working, albeit they have their quirks.
So for all of you battling the OpenGL 2.1 war, here's how I made VAOs work with a very simple shader.
Continue reading "Vertex array objects with shaders on OpenGL 2.1 & GLSL 1.2 [w/code]"
For those of you still interested, I've made the move to using Qt and QGLViewer in the SfM-Toy-Lib project. Getting rid of PCL dependency (I think it's a bloated library), and burying FLTK long in the past, I feel much better about it now.
Get it on github: https://github.com/royshil/SfM-Toy-Library
I wish to report of a number of tweaks and additions to the hand silhouette tracker I posted a while back. First is the ability for it to "snap" to the object using a simple Active Snake method, another is a more advanced resampling technique (the older tracker always resampled after every frame), and of a number of optimizations to increase the speed (tracker now runs at real-time on a single core).
Continue reading "Extending the hand tracker with snakes and optimizations [w/ code, OpenCV]"
For those of you using OpenCV that are looking to upgrade from OpenNI 1.x to the new OpenNI 2.x, here's a bit of code to make life a tiny bit easier. It simply wraps the OpenNI 2.x APIs to expose a simple frame grabber for OpenCV.
Continue reading "OpenNI 2.x and OpenCV interoperability [w/ code]"
So animated gifs are awesome if you're writing a software blog. It saves all this time working with YouTube embeddings and stuff, and your "videos" are stored locally. The simplified FFMPEG writer was before unable to output animated GIFs, but I've tweaked it and now it does. It's also a nice piece of code to learn how to FFMPEG in C.
Continue reading "FFMPEG video writer - now with animated GIF support [w/ code]"