View Single Post
  #7   Spotlight this post!  
Unread 04-01-2014, 00:47
RyanCahoon's Avatar
RyanCahoon RyanCahoon is offline
Disassembling my prior presumptions
FRC #0766 (M-A Bears)
Team Role: Engineer
 
Join Date: Dec 2007
Rookie Year: 2007
Location: Mountain View
Posts: 689
RyanCahoon has a reputation beyond reputeRyanCahoon has a reputation beyond reputeRyanCahoon has a reputation beyond reputeRyanCahoon has a reputation beyond reputeRyanCahoon has a reputation beyond reputeRyanCahoon has a reputation beyond reputeRyanCahoon has a reputation beyond reputeRyanCahoon has a reputation beyond reputeRyanCahoon has a reputation beyond reputeRyanCahoon has a reputation beyond reputeRyanCahoon has a reputation beyond repute
Re: Best Way to Learn Vision Processing

Quote:
Originally Posted by yash101 View Post
However, it is so detailed that I have no clue where to start. [...] It also comes down to that me (an many other novices) don't know what to learn and what to skip.
[...]
I will probably dissect the 341 code and rewrite it in C.
IMO, there are basically two ways to go about learning something. 1) you can pick a corner to start nibbling at and random-walk your way outward until you cobble together enough to solve the problem you're currently working on 2) you can go about trying to learn the big picture and theory of the entire subject, and then try to figure out how that applies to your current problem.

Jared and I gave you lists of topics to get started with also as a way to try to give you some direction about where to focus initially.

If you like (1), the 341 example code and OpenCV tutorial code is a great way to start. If you like (2), either pick up one of those books (if there's nothing available in the library, then perhaps a late nondenominational winter holiday present? or can you convince your team to buy it as a resource to you and future students?) or you can check out courses on Coursera or EdX - though be warned that these will probably quickly require a decent understanding of calculus and linear algebra.

Quote:
Originally Posted by yash101 View Post
So far, the only thing I've been able to accomplish is finding a certain color (which didn't work too well because I didn't have a colored object to track).
If you're going with the (1) experimentation route, I'd suggest that you define a specific project to work on sooner or later. Find a brightly-colored object around your house and try to track that - e.g. tennis balls can work well (more-so if they're newer).

Quote:
Originally Posted by yash101 View Post
Another thing I wonder about is whether to learn C, C++, Java or Python or maybe even something else.

One thing that I dislike about C is that the program will compile correctly. However, when I launch it, it will spit out just tons of fatal errors. How can I set the IDE (Visual Studio currently) to tell me that there are errors in the code? I have actually had my system hang because of a simple typo!
I'd recommend you steer away from C and C++ if you're not already very comfortable with them. Essentially, with great power comes great responsibility, and you'll want to be able to focus your efforts on working out the computer vision problems without making it even more complicated.

As Jared says, Python's more concise syntax will allow you to iterate faster than you would in Java. Java will probably have a little better performance, though if you're mostly just calling OpenCV functions and not trying to process the pixels yourself, this is much less of a concern. Go with whatever language is most comfortable for you.

Quote:
Originally Posted by yash101 View Post
Anyways, so I have an OpenCV C++ installation. How do I install the Java bindings?
The recent versions of the Windows prebuilt binaries have included the Java bindings in opencv\build\java. I haven't used it myself, but I believe you should be able to just include the .jar file in your classpath and the path to either the x86 or x64 .dll in the library path. Something like

Code:
java -Djava.library.path=C:\opencv\build\java\x64 -cp .;C:\opencv\build\java\opencv-247.jar MainClass
I believe 341 used JavaCV instead, which is another option.
__________________
FRC 2046, 2007-2008, Student member
FRC 1708, 2009-2012, College mentor; 2013-2014, Mentor
FRC 766, 2015-, Mentor