iOS中,如何导入opencv的xfeatures2d的module

折腾了我两天终于找到解决方法了。目前是Xcode9.2,OpenCV3.4。未来的朋友请注意版本。
应用SIFT啊SURF啥的算法的朋友可能需要用到opencv里的module。至于如何配置Opencv在我的文章里有介绍。
但是如果你想用xfeatures2d里的类的话你会发现在opencv2.framework里面根本就没有xfeatures2d.hpp这个文件,只有feature2d.hpp。
怎么回事捏~~??
这是因为你下载的是属于主module的opencv。在目前的版本之下,xfeatures2d是属于拓展包里的。这个拓展包的名字叫opencv_contrib。由于目前版本还没通过全面的测试,所以就分出两个来。
也就是说,如果你是直接在网上下载的opencv2.framework,那是从这里的源代码编译出来的。而opencv_contrib的源代码是在这里。现在,如果你像我一样需要用opencv_contrib的东西的话,你需要从opencv_contrib的源代码里把你自己需要的module复制到opencv的module里一起编译一个opencv2.framework出来,再导入你的xcode项目就行了。
自己编译听起来巨JB复杂,其实很简单,你需要下载cmake,和python。
注意cmake别光下GUI版本的,要命令行的cmake也能用才行。去terminal打一下cmake,没说找不到命令就行了。如果装好了GUI的cmake,在terminal里输入

PATH="/Applications/CMake.app/Contents/bin":"$PATH"
就OK。或者打开cmake,在苹果左上角找Tools -> How to install for command line use 里按他说的做也行。
python的话稳妥起见推荐2.7版本。鬼知道新版本哪里会出什么幺蛾子。。。。
两个都弄好了以后,按照这里的官方操作步骤进行。如果你有git就按他说的从git里下载,不然从上面的链接里手动下载也行。
git clone https://github.com/opencv/opencv.git
第二步建立symbolic link可以跳过,
【iOS中,如何导入opencv的xfeatures2d的module】第三步开始编译了。这一步编译之后就会生成opencv2.framework文件。但是这里只是原opencv的库。所以要复制粘贴就在今日!进入到你之前下载的opencv_contrib的源代码里,找到module,把你需要的module复制到opencv的module里(比如我这里就是需要xfeatures2d)。都复制粘贴好了以后,运行下面代码:
python opencv/platforms/ios/build_framework.py ios
编译好了以后,opencv2.framework会在当前文件夹/ios/里面。再导入就OK了。
这里截图很费劲,有问题请在下面留言。


Ref:
https://github.com/opencv/opencv
https://github.com/opencv/opencv_contrib
https://docs.opencv.org/2.4/doc/tutorials/introduction/ios_install/ios_install.html#ios-installation
https://stackoverflow.com/questions/48713162/opencv-cmake-files-how-to-use-them-in-ios/48756910#48756910
https://cmake.org/download/
https://www.python.org/downloads/
https://www.jianshu.com/p/88a6d06b670b

    推荐阅读