views:

384

answers:

4

I am studying in the area of image and video processing - specifically in the field of pattern recognition (objects, people etc.). I wish to use a programming language to apply the transformation to images and video (more importantly video). I am thinking of using C++ in Xcode to do this. The algorithms I wanna build I want to take data from the web (e.g. submitted videos) - process them and then give an output. My question has several parts:

(1) Is C++ the best language to do this in? Can this be done in Python? (I'm guessing C++ is faster than Python and can probably handle larger files/more intense algos)

(2) What is the best way for setting up a project for this in xcode - is it a straight (A) Command-line tools "vanilla" project or should I go for (B) a Cocoa application in objective C? (I will need to learn Obj-C)

My short term objective is to write some simple alorithms and see how they work on video. Then to hook this up (at the back end) to a front end web GUI (so I can submit videos to my code). Volumes wont be huge - but file sizes may be substantial.

Any insight will be hugely appreciated.

Max.

A: 

My advice is to get a prototype working in python, and then use boost's python integration to rewrite the performance intensive parts in C++ once you have your algorithm working.

Mark P Neyer
A: 

If you want to specialize in this area, use C++ for the algorithmic parts right away - you will have to learn how to do to use C++ efficiently anyway.

Regarding the project type - it doesn't really matter, although you should choose Cocoa if you want to wrap a nice GUI around the application later and command line application if that is not needed.
For using C++ its irrelevant, you can mix in C++ sources anywhere if you watch out for some caveats. Using C++ With Objective-C gives some insight into that.

Georg Fritzsche
A: 

If you choose to use C++ (which seems sinsible for that scenario) you should check out these links:

  • IPP - Also usefull for non-Intel processors, especially in combination with the Intel C++ compiler, but it's expensive
  • Intel offers many tools that are usefull for parallelising high performance number crunching (CPU bound stuff), e.g. TBB and OpenMP (I think that one isn't Intel)
  • Maybe OpenCV is usefull for you

Hope that helps somewhat.

Space_C0wb0y
A: 

1) If you know which language you would use, learn that. C++ is fast, but it is a deep language. Fortunately, it is popular, and you should be able to easily find help on it. The choice is up to you; are there any libraries you'd like to use? What language do they use? I am biased, but I would recommend C++ over C (I realize that is not what you asked).

2) a) Command Line Tool: C++. This will be complex enough, there is no need to add Cocoa/Objective-C and user interfaces into to complexity. When you have a working algorithm, add it to a library. Remember to create tests cases as well.

Justin