openCV 2.4.3/Xcode 4.5.2/mac osx 10.8.2
Я пытаюсь открыть openCV с iOS. Я пытаюсь использовать предустановленную структуру 2.4.3 с openCV.org. Однако я получаю следующие ошибки построения проекта xcode, которые предполагают, что компилятор не знает, что он имеет дело с С++, например
#include <list> !'list' file not found
namespace cv !unknown type name 'namespace'
Это похоже только на следующие заголовочные файлы:
"Opencv2/несвободные/features2d.hpp"
"Opencv2/несвободные/nonfree.hpp"
"opencv2/video/video.hpp"
Если я не включу эти три файла в opencv.hpp(или где-нибудь еще), я, похоже, могу скомпилировать и использовать openCV ok. Беда в том, что мне нужны бесполезные файлы, поскольку я экспериментирую с SURF, который недавно был перенесен в незащищенный.
Это действительно двоякий вопрос (извините; -)
- Как мне убедить компилятор, что это заголовки С++?
- который содержит заголовки, нужно ли мне использовать SURF?
Обновление
Я клонировал репозиторий openCV git и создал из него новую структуру. Этот подход не работал ранее, но сегодня я понял, что не использовал текущую версию CMAKE. Я использовал CMAKE 2.8.2, и это не смогло бы создать opencv для ios. Текущая версия CMAKE 2.8.10 строит ее без каких-либо проблем (требуется, чтобы объектный урок в соответствии с документами, которые говорят, что требуется CMAKE min. V2.8.8).
Теперь, когда я добавляю эту текущую сборку opencv framework в проекте Xcode, я могу включить функции2d, а также без ограничений и построить плавно. Единственная проблема остается с одним заголовком: video/background_segm.hpp
, который все еще дает:
#include <list> !'list' file not found
Если я прокомментирую эту строку, я получаю сообщение об ошибке на следующей строке:
namespace cv !unknown type name 'namespace'
Кажется очевидным, что компилятор не распознает это как заголовок С++, хотя он суффикс .hpp
.
В opencv2/video/video.hpp
, если я удалю
#include "opencv2/video/background_segm.hpp"
Я также могу построить с помощью video.hpp
(хотя, на мой взгляд, это было бы непригодно на практике).
К сожалению, я все еще не могу заставить SURF работать. Когда я запускаю проект, он вылетает с этой ошибкой:
Ошибка OpenCV: функция/функция не реализована (OpenCV был создан без поддержки SURF)
Это срабатывает в legacy/features2d.cpp
:
Ptr<Feature2D> surf = Algorithm::create<Feature2D>("Feature2D.SURF");
if( surf.empty() )
CV_Error(CV_StsNotImplemented, "OpenCV was built without SURF support");
Вопросы остаются...
- Как мне убедить компилятор, что
background_segm.hpp
является законным заголовком С++? - Как включить поддержку SURF?