Thank you everyone for your time and great advice.

Thank you Wilson MacGyver, for recommending jmagick.  I actually
already use it's brother im4java (http://im4java.sourceforge.net/) for
great justice already and forgot to mention it.  It does alright for
basic image manipulation.

The reason I've had to try so many libraries is because I'm looking
for something flexible and fast enough to do the following:

Problem 1.
Take in any video file in any common encoding and output a log-polar
transform of that video file.

Problem 2.
Take a video, do blob detection, and output a simplified video showing
the main shapes moving around.

Extra super bonus points would be for being able to also do this from
camera input, from whatever camera you happen to have.

Thank you Mark Downie for recommending OpenCL, I'll start playing
around with it.  As for accessing the c libraries directly, I'm afraid
I don't know much about JNI to do it from clojure.  Do you or anyone
know of a good way to start with JNI in clojure?

Java2D and the processing core look like they might be interesting,
especially when combined with xuggle's ability to create sequences of
buffered images. I'm a little wary of Java2D though as it seems rather
old and creaky, like java 3D.

Sean Grove: I'd be happy to show my frame-hash implementation as long
as you won't laugh too hard at it. I'll throw it up on github sometime
soon after I clean it up a bit. I like it because a video treated as
just a sequence of hash-maps which flows through an image processing
pipeline.

I have to say I've been surprised at the state of video in java. It's
time to make it better with a clojure library devoted to pulling
together the best of all these different methods.

When I figure out a way to solve my problems with these
recommendations I'll put that up too.

thanks a lot,
--Robert McIntyre

On Mon, Sep 6, 2010 at 9:43 PM, Marc Downie <m...@openendedgroup.com> wrote:
>
> On Mon, Sep 6, 2010 at 5:45 PM, Sean Grove <otokora...@gmail.com> wrote:
>>
>> On Sep 6, 2010, at 2:57 PM, Robert McIntyre wrote:
>>
>> I was wondering if anyone has used clojure for image/video processing
>> and how that has worked out.
>
> We've been rolling our own, either using Apple's Core Image framework or our
> own OpenGL / FrameBuffer Object library for processing video and gigabit
> ethernet machine vision cameras for input. I'm afraid that "Video in Java"
> is in pretty rough shape right now.
> I haven't personally used it, but I'd take a look at either
> http://github.com/ztellman/calx — that's OpenCL for Clojure or Java or the
> Java level bindings for OpenCL (which I have used a bit)
>  — http://code.google.com/p/nativelibs4java/wiki/OpenCL . If you can
> formulate your problem in OpenCL the speed can be jaw slackening, and it has
> a far smaller conceptual footprint than OpenGL.
>>
>> Images:
>>
>> For image processing, I've just been using the java2d api, a
>> la http://www.javaworld.com/javaworld/jw-09-1998/jw-09-media.html?page=1 It's
>> quite low-level, but it works well enough for my basic needs right now.
>>
>> OpenCV : tried two different jna bindings but had many horrible memory
>> leaks and crashes
>>
>> I've been doing some stuff with OpenCV (yes, there are definite problems
>> here, but at least it kind of works) to get access to the webcam. Setting it
>> up was a nightmare though...
>
> OpenCV is a sprawling library with a long history. Recently, Willow Garage
> have taken it over and are now cleaning it up and moving it forward. The
> Java bindings that I'm familiar with expose a some sliver of the library,
> and never the sliver I'm interested in. There are gems in there though —
> just tunnel in through JNI, dig them out and make a quick exit before that
> C/C++ smell gets in your hair.
> As far as I know it doesn't really have any camera access code in it to call
> its own, rather it wraps other libraries. If you want to get serious, I'd go
> straight to them (for example libdc1394, or the Java Prosillica SDK).
>
>>
>> Video:
>>
>> Processing: still don't know at all what this is or how to get it to work.
>>
>> Processing is a bigger library, I believe OpenCV is a sub-project of it.
>
> That's not really the case. There are one or two Java OpenCV bindings that
> are targeted at the Processing community. "Processing" refers to 4 things
> together — a simplified Java syntax; a simple IDE for writing and compiling
> code in this syntax; a core Java API that's mainly for drawing things (that
> abstracts away the differences between Java2D, OpenGL and potentially other
> renderers) and finally an enormous community of Java libraries usually
> designed with simplicity in mind. Only these latter two things are
> potentially interesting for people using Clojure — for example, Incanter can
> use Processing's core library as its drawing back end.
>
> For video input Processing has traditionally used Quicktime for Java, but as
> I understand it they are trying to move to something else, perhaps
> GStreamer-java? (http://code.google.com/p/gstreamer-java/). I can't
> recommend starting a new project with Quicktime for Java — I feel like it's
> been deprecated for a decade.
> best of luck!
> Marc.
> -----------
> openendedgroup.com
>
> --
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clojure@googlegroups.com
> Note that posts from new members are moderated - please be patient with your
> first post.
> To unsubscribe from this group, send email to
> clojure+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to