6 ms·
SimpleCV – Computer Vision platform using Python
- pchristensen 13y agoI'll put in a plug for the accompanying book: http://simplecv.org/book http://simplecv.org/book Very clear, well written, for a complete CV novice.
- kqr2 13y agoO'Reilly is currently having a 50% off sale on this ebook: http://shop.oreilly.com/product/0636920024057.do?code=WK5STARS http://shop.oreilly.com/product/0636920024057.do?code=WK5STA...
- therobot24 13y agoUnfortunately computer vision libraries and toolsets are the worst offenders of making each algorithm a 'hammer' when traditional problems are not a 'nail'. A good example is "Detecting a Car" (http://tutorial.simplecv.org/en/latest/examples/parking.html http://tutorial.simplecv.org/en/latest/examples/parking.html), where the mean color is used to determine if a car is in the image. A nice little exercise, but it oversimplifies the process. Each allows the user to step in a few puddles and then advertises that you'll be able to swim in the ocean.
- anoncv 13y agoThis statement is an oversimplification. Computer Vision libraries are essentially Swiss army knives. If the person without reasonable understanding of Computer Vision research thinks that he can solve the problem, that is the person's problem. Again I wouldn't blame the naive software engineer who thinks he can solve these problems, because our (extremely complex) visual process makes it all seem very simple. Even Marvin Minsky thought he could get his undergrad Gerry Sussman to “spend the summer linking a camera to a computer and getting the computer to describe what it saw”. After almost 60 years we aren't very to close that. Sure, we can solve certain problems in most scenarios (like face detection) or many relatively more complex problem in limited variance situations (like machine vision problems). This is the equivalent of a person who have learned C++ recently, using iteration/recursion/design patterns for everything he sees.
- therobot24 13y agoI honestly can't tell if you agree or disagree. My sentiment on the subject was that CV libraries are good swiss army knives, but to continue the analogy - you wouldn't tell someone that all you need to survive in the wilderness is said swiss army knife.
- acgourley 13y agoOpenCV seems like a good platform for academics to publish their algorithm as code. It's good that to try a new approach I don't need to figure out how to get/compile/install a new tool. But we need something better for doing real work... something that simply offers the most basic building blocks. Easy GPU offloading, easy inputing/outputting of movies or images, cross platform shader tools, colorspace conversion, image filters, etc.
- tjohns 13y agoHonestly, I thought that was a good introductory tutorial to their library. It's pretty clear that it's only trying to look for a specific car, in a specific spot. And it's obvious that they're taking advantage of the car's bright color to do this, which isn't generally applicable. It's a toy algorithm, but it's approachable for somebody with no CV experience.
- jfoster 13y agoIsn't the most important part of any algorithm whether it will fit the purpose? For the situation they describe (purely as an example) their algorithm seems it will probably work quite well. You're not going to build a humanoid robot using that algorithm, but it is addressing the problem they specified so directly that anything more would be over-engineering the solution. Most real-life problems are going to be addressable using similar techniques.
- therobot24 13y ago> You're not going to build a humanoid robot using that algorithm, but it is addressing the problem they specified so directly that anything more would be over-engineering the solution Clearly. > Most real-life problems are going to be addressable using similar techniques. Nope.
- blt 13y agoI agree that the example would be better if it raised questions about the weaknesses of this approach and the next steps you might need for a more general solution. But it is still a legitimate example. I'm an amateur, but I'm pretty sure the world of production grade vision systems is full of hacks like this. A good example is a nose detector on a depth sensor: just look for the closest point to the camera. John Russ's Image Procesing Handbook (amazon.com/Image-Processing-Handbook-Sixth-Edition/dp/1439840458) is full of examples where simple techniques are good enough under controlled circumstances. True object recognition would require strong AI. Every real life vision system is a compromise that makes many assumptions about its input. You'd be foolish to reach for something like SIFT if you really know that the car is always yellow and it always parks in the same 200x200px square.
- captaincrowbar 13y agoThe site seems to have been thoroughly slashdotted ... er, fireballed ... er, hackernewsificated ... honestly, hasn't someone come up with a word yet for when HN does this?
- anoncv 13y agothat site is HNed.
- danso 13y agoI love OpenCV. Even with the slightly outdated and incomplete wrapper in Ruby, you can still have a lot of fun with it. This was posted on HN some time ago and remains one of my favorite creative uses of OpenCV: "So I Suck At 24: Automating Card Games Using OpenCV and Python" http://arnab.org/blog/so-i-suck-24-automating-card-games-using-opencv-and-python http://arnab.org/blog/so-i-suck-24-automating-card-games-usi...
- ap22213 13y agoI agree. I recently used OpenCV to process some photos of some documents, and it was very awesome. I particularly liked the python 'cv2' bindings. Not bad. It was my first time really using NumPy, in a deep way, and it actually performed decently. But, that said, after reading all the OpenCV posts on Stack Overflow and also going through a ton of OpenCV tutorials, I found that the library couldn't meet my needs, in a lot of ways. (Apparently, processing text documents from camera images is a lot harder than I thought!) So, now I'm off reading research papers on image processing, like I don't have anything better to do.
- wyc 13y agoIt's difficult to effectively use cv libraries (such as opencv) because in order to approach new problems, understanding of the underlying theory and methodology is often necessary. Example code can only go so far to teach the user how to evaluate and adapt to new constraints. simplecv.org is down for me right now, but I hope that it addresses this concern! The principles of computer vision are not too difficult to grok, requiring only knowledge of geometry and basic linear algebra. Two popular (dated, but still relevant) introductory texts are referenced to below [1] [2]. However, papers describing techniques that work in practice are often dense reads involving concepts from signal processing, control theory, and probability (e.g., [3]). I personally enjoy learning about simple techniques that are also very effective in practice (e.g. Viola-Jones detection [4], SIFT points [5], RANSAC [6]), and I hope that simplecv.org might go over these in detail too. [1]: http://www.robots.ox.ac.uk:5000/~vgg/hzbook/ http://www.robots.ox.ac.uk:5000/~vgg/hzbook/ [2]: http://dl.acm.org/citation.cfm?id=551277 http://dl.acm.org/citation.cfm?id=551277 [3]: http://robots.stanford.edu/papers/montemerlo.fastslam-tr.pdf http://robots.stanford.edu/papers/montemerlo.fastslam-tr.pdf [4]: http://en.wikipedia.org/wiki/Viola%E2%80%93Jones_object_detection_framework http://en.wikipedia.org/wiki/Viola%E2%80%93Jones_object_dete... [5]: http://en.wikipedia.org/wiki/Scale-invariant_feature_transform http://en.wikipedia.org/wiki/Scale-invariant_feature_transfo... [6]: http://en.wikipedia.org/wiki/RANSAC http://en.wikipedia.org/wiki/RANSAC
- taliesinb 13y agoA brief note from experience: Viola Jones is only well suited to images that are oriented in a specific direction (e.g. faces), rather than rotation-invariant (e.g. cars as seen from satellites). This is kind of a pattern with CV: it's still far more "art" than "science" at this point.
- rmattes 13y agoFor additional reference, the introductory computer vision course I recently took was based around these two freely downloadable books: http://szeliski.org/Book/ http://szeliski.org/Book/ http://www.cse.usf.edu/~r1k/MachineVisionBook/ http://www.cse.usf.edu/~r1k/MachineVisionBook/
- stan_rogers 13y ago
- gourneau 13y agoCheck out this beard length detector I wrote in 22 lines of Python with SimpleCV http://labs.radiantmachines.com/beard/ http://labs.radiantmachines.com/beard/
- pramalin 13y agoI'm looking to measure dimensions of objects using computer vision libraries. I think it is impossible to do this without a reference scale in the same image. What is the unit of measure for line.length()?
- gourneau 13y agoFor my use it is just arbitrary. SimpleCV does have the ability to calibrate cameras, which should give you what you want.
- nightski 13y agoYou can calibrate the camera, estimating the intrinsic params such as focal length. But for size you would need two images and to know the location each were taken relative to each other (extrinsic params). This is not impossible, just more difficult than a simple calibration and photo snap. On top of that, you will have to be able to identify the object you are trying to measure (unless it is a manually driven process).
- lost_my_pwd 13y agoWhat about follicle width? There is variation from person to person, and even on a single person, but I am sure you could find an average that is suitable.
- elwell 13y agofirst time i've experienced both disgusting and awesome at the same time
- Crito 13y agoMake it judgmental ("Good o'clock shadow", "Too long, shave it or grow it out", "Too patchy, shave it.") and that would make a useful albeit niche smartphone app.
- bliti 13y agoI have been working on CV with an emphasis on mobile phones/robotics. The big issue is the lack of consistent documentation. It is either scattered all over the web, or outdated. Been writing a document to address this, but it is still not done. If you want to play with CV, just get a Raspberry pi, the camera module, and have fun. The Rpi makes it easy to move it around without much trouble. You can even add CV to many different appliances with the Rpi.
- KaiserPro 13y agoI have to say that this book: http://shop.oreilly.com/product/9780596516130.do http://shop.oreilly.com/product/9780596516130.do did a pretty good job of explaining everything for opencv proper.
- boyaka 13y agoThis was the text in my Computer Vision course. I agree it did a good job and OpenCV was a lot of fun to work with. I would definitely pick it up again if I had interest in this field.
- boyaka 13y agoLooks like this is to OpenCV as jQuery was to JavaScript.
- zk00006 13y agoNice marketing but not much behind? This library seems to be great for fast exploration of new concepts. So I installed it and tested. I went through a small tutorial and tried to load an image from internet and display, unfortunately it didn't work. Connection failed, and image window showed up but no content... This is rather disappointing, and I was really expecting from this library that it will work out of box. Anybody else with the same experience?
- ahojnnes 13y agoFor everyone interested in computer vision / image processing in Python, http://scikit-image.org/ http://scikit-image.org/ in combination with http://scikit-learn.org/ http://scikit-learn.org/ are also worth a look.
- kimonos 13y agoI like this!
- tn13 13y agoThose who are giving brickbats to SimpleCV might be right but this seems an extremely useful thing to me. In the robotics courses we often build robots that pick up balls etc. So far we used either openCV or Matlab for image processing but generallly turned out to be pathetic solutions given the steep learning curve with openCV. I will surely give a try to SimpleCV.
- bulte-rs 13y agoI'm not well versed in the usage of OpenCV; but I just can't get the fact that most CV applications will require a more thorough understanding of the subject (both mathematically and software-technically) in order to create something more than a 'nice toy' (I'm waiting to be corrected here)
- ddd1600 13y agoI've been compiling dependences for this thing ALL DAY still not done, lots of loops twists and turns to get this thing to even import into Python