Introducing Origami

Origami is an opencv generated wrapper for Clojure which allows some of the opencv code to be written in a concise way.

Motivation

/origami.jpg

After staring at origami directions long enough, you sort of become one with them and start understanding them from the inside. Zooey Deschanel

You would want to use Origami if you want to avoid the pain of installing OpenCV by hand, and enjoy a lightning fast and expressive language to do image manipulation.

Origami shines in the shortness of the samples, and the fast image processing results of native computation made possible with OpenCV.

Shape finding, Contours, Real time Video content analysis, all of this now possible with a small wrapper.

how it works

(require
  '[opencv3.utils :as u]
  '[opencv3.core :refer :all])

(->
 (imread "doc/cat_in_bowl.jpeg")
 (cvt-color! COLOR_RGB2GRAY)
 (canny! 300.0 100.0 3 true)
 (bitwise-not!)
 (u/resize-by 0.5)
 (imwrite "doc/canny-cat.jpg"))

Getting Started

Required Software to install

  • install jdk 1.8
  • install leiningen (it is a simple script …)
  • that’s it ! (as in, no need to install anyother OpenCV thing …)

to use

Create a brand new origami based project using a Leiningen project template

# install the sample
lein new clj-opencv fun-with-opencv

# run the template simple example
cd fun-with-opencv
lein run

or you can also clone the origami examples:

git clone https://github.com/hellonico/opencv-fun.git

some samples

Examples are included in the project template.

Origami Setup Check (including OpenCV native dependencies check)

lein run -m opencv3.ok

Some Simple OpenCV transformation using origami

lein run -m opencv3.simple

A more advanced set of imaging transformation.

lein run -m opencv3.tutorial

Webcam Sample

lein run -m opencv3.videosample

Gorilla Based Notebook

Gorilla note books are similar to Python Jupyter environment, makes it possible to do image processing straight in the browser.

lein notebook

Once the notebook server is running, you can have a look at two notebooks included in the generated project: