开发者

Image recognition library/API for iPhone code [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
开发者_开发百科

We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.

Closed 6 years ago.

Improve this question

I need to make an iOS app with these features:

  • Use the camera capture a image.
  • Recognize that image: Does it match with a sample image or not?

Is there any online API to do that (from Google, Yahoo, ...)? For example, can I upload an image and I get an image URL and after that request a url to compare a new image with an exist one?


OpenCV library (for iPhone) contains many algorithms. You can simply compare color histograms of images, or use more complicated stuff. Which kind of matching do you mean? Finding duplicates or calculating measure of similarity of images?

If you want to match some simple template to find objects then try Viola & Jones algorithm and so called Haar cascades. OpenCV has trained collection of templates in XML files for detecting faces for example. OpenCV contains utility for training thus you are able to generate cascades for other kinds of objects


You can also have a look at Moodstocks, they provide a great API and iOS SDK to implement image recognition in your app in minutes.


Just to extend the list:

  • ARLab Image Matching
  • intopii
  • kooaba
  • Moodstocks
  • OpenCV
  • PointCloud
  • recognize.im
  • IQ Engines (joined Yahoo Inc. and is no longer available)


Try the following two APIs:

  • http://iqengines.com;
  • http://intopii.com


I found IQEngines, that work well.


The whole field of image recognition has changed with the advent of Deep Neural Networks. However you need a powerful machine to train your own neural net. You can also use vize.it, though - It is an easy-to-use online app that lets you define the task and classify images by using http API.

Disclaimer: I am a PhD student of Artificial Intelligence who is a member of the vize.it team.


Pastec is an open source (LGPL) alternative to the service already mentioned.

Its simple HTTP API allows to easily add, remove and search for matching images in the index. It is based on OpenCV and uses the ORB descriptor, which is patent-free.


I've looked into Moodstocks, who seems to have perfected an image recognition system with a pay-per-month service. They have a great system (I've tested it for my own use and it's fantastic) BUT it's EXTREMELY expensive for me, which is why I am not using it. At the time of me writing this, the "up to 100,000" image service is about $12,000/year. For my project, I have nearly 4 million images I need to match against. YIKES.

So after many months of research on and off, I've come to the conclusion that if you're going to be comparing against 1000's of images or more (in my case 1 million+), you'll need to do the image comparison off of the device. Users mobile devices don't have the space, speed, and power to perform large amounts of computations to do this kind of work.

What that really means is that you need to set up an image recognition server on a high performance machine and make it public to your app. On the app, have the user take a picture of an object (or you can grab frames from the camera video), have it sent to your server for comparison, and then when a match is found report the results back to the app.

You can use a framework like Accord.NET or EmguCV to make a C# desktop application or service that runs on a Windows Server box to do this, for example.

What the Amazon iOS app does for image recognition from what I can guess is they appear to locate SURF points real-time and sends the data to the server while scanning instead of the entire image. My guess is that they use OpenCV on device to do this. But they still use server software to send back the matched product SKU.

Here's an awesome blog post by a guy who wanted to do image matching in .NET and he walks through every step including how it works, how to do it, and then give all his code in a sample application. Amazing post: https://sbrakl.wordpress.com/2015/01/30/love-affair-with-cbir-part-3/comment-page-1/

From what I've been able to learn is that the LoCATe algorithm performs the best and the quickest with large amounts of images, but also takes hours, days, and possibly weeks (depending on how many images you have) to create massive indexes for search. I think when it comes to image matching I've found the speed of creating a solid index is in relation to the speed of finding matches from queries.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜