今回ハマった件
XCode8.3.1 + Swift3.1 + OpenCV3.2の環境でopencvをpodでプロジェクトにインストールした状態でWeb上で紹介されているOpenCVのサンプルを色々と修正し、あとはMach-O Linker エラー を残すのみとなったのですがこれについて結構ハマりました・・・。
内容はUIImageToMat関数とMatToUIImageのリンクエラーです。
結局の所 opencv2/imgcodecs/ios.hに定義されているのに、3.1.1以降では実体の部分が入らないみたいです。
2017/06/24 追記
includeに以下のように素直に追加するだけでもいける場合があるようです。
私の入れた時は無理だったと記憶してたんですが、インストールするフレームワークを作成した時のコンパイルオプションとかに依存するかもしれません。
#import <opencv2/imgcodecs/ios.h>
で、まあ当初私の行った無理くりバージョンは以下です。
UIImageToMatとMatToUIImageの実体は探すと以下にあります。
https://github.com/opencv/opencv/blob/master/modules/imgcodecs/src/ios_conversions.mm
今回はめんどくさかったのでのソースをそのままプロジェクトに入れてやりました。
で、先頭のimport郡の中の、precomp.hppがないとエラーになるのですが、ここも強引にコメントアウト。
#import <ImageIO/ImageIO.h>
#include "opencv2/core.hpp"
//#include "precomp.hpp" →コメントアウト
そしておもむろにBuild Clean→Build。
これでエラーが出なくなりました・・・。
まあ本記事のエラーだけでなく、実際はSwift3の文法に書き換えたり、iOS10からdeprecatedになった関数の置き換えをしたりとかなりめんどくさかったのですが・・・orz
何かの足しになれば・・・