11
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

XcodeでOpenCVのヘッダーファイルが読み込めない時

Posted at

はじめに

XcodeでOpenCVを使おうと思い、こちらのサイトを参考にさせて進めたのですが、エラーが出てしまったので、その時の解決法について書いておきます。

環境

OpenCV:4.1.0
Xcode:10.2.1

ヘッダーファイル

まずヘッダーファイルについてですが、記事を参考にして以下のようにするとエラーが出ました。

// これだとエラーが出る
#include <cv.h>
#include <highgui.h>
#include <ctype.h>

opencv/cv.h' file not foundとエラーが出てしまいました。
実はこれはOpenCVのバージョン2.1までで2.2以降は以下のようにします。

#include <opencv2/opencv.hpp>

これでとりあえずエラーは消えるはずです。

もしこれでもエラーが出る場合は「Build Setting」の
「Search Paths」 > 「Header Search Paths」を確認してみてください。

/usr/local/Cellar/opencv/4.1.0_2/includeをrecursiveで追加していることを確認してください。

image.png

リンクエラーを直す

これでコンパイルできると思いきや、次はこのようなエラーが出てしまいました。

undefined reference to cv::VideoCapture::VideoCapture(int)

この原因はリンクが上手くできていないことです。

「Build Phases」の「Link Binary With Libraries」にライブラリを加えます。

フォルダで/usr/local/Cellar/opencv/4.1.0_2/lib/を開き、エイリアスでない.dylibファイルを全てドラッグ&ドロップします。

image.png

サンプルコード

#include <opencv2/opencv.hpp>
#include <iostream>

using namespace cv;

int main(){
    cv::Mat imMat(256,256, CV_8UC3);
    
    for(int y = 0 ; y < imMat.rows; y++){
        for(int x = 0 ; x < imMat.cols; x++){
            cv::Vec3b &p = imMat.at<cv::Vec3b>( y, x);
            p[0] = x;
            p[1] = y;
            p[2] = (int)((x+y)/2);
        }
    }
    imshow("openCVTest",imMat);
    waitKey(0);
    return 0;
}

結果

image.png

無事OpenCVを使うことができました。

まとめ

もとはと言えば検索して上に出てきたからと言って記事の日付も確認しなかったのがいけませんでした。環境構築はバージョンの違いによるエラーが多いので、参考記事のバージョンを確認するよう意識しようと思います。

参考

11
4
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?