茶漬けと玉子焼き

swiftとrubyの教室

【Swift】OpenCVを使ってみる 2 〜バージョンを表示〜

この記事は

【Swift】OpenCVを使ってみる 1 〜導入編〜 - 食後のSwift ~琵琶湖からコンバンハ~

こちらの続きとなっております。


アプリでOpenCV のバージョンを表示する。

OpenCVC++ で書かれたライブラリなので、Swift から直接呼び出すことはできません。

なので、Objective-C++ でOpenCV を使ったラッパークラスを作成し、Swift から呼び出す。という構成にしていきます。


Objective-C++ ファイルの作成

File → New → New File から Cocoa Touch Class を選択し、OpenCVWrapper クラスを作成します。
すると、Bridging-Header ファイルを作成するか聞かれるので、作成するボタンをクリック。プロジェクト名Swift-Bridging-Header.hファイルができていると思います。

Bridging-Header ファイルは「Objective-CとSwiftを同プロジェクトで共存させるためのもの」という認識で問題ないと思います。

Objective-C++ を書くために、OpencvWrapper の拡張子を .mm に変更し、storyboard に表示用のラベルを追加し、
やっとこれから、コードを書いていきます!!

OpecvWrapper.mm

#import "OpenCVWrapper.h"
#import <opencv2/opencv.hpp>

@implementation OpenCVWrapper

+(NSString *) openCVVersionString
{
    return [NSString stringWithFormat: @"openCV Version %s", CV_VERSION];
}

@end


OpencvWrapper.h

#import <UIKit/UIKit.h>

@interface OpenCVWrapper : NSObject

// funciton to get opencv version
+(NSString * ) openCVVersionString;

@end


プロジェクト名Swift-Bridging-Header.h

#import "OpenCVWrapper.h"


ViewController.swift

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var openCVVersionLabel: UILabel!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        
        openCVVersionLabel.text = OpenCVWrapper.openCVVersionString()
    }
}


これで、アプリを実行すると、OpenCV のバージョンが画面に表示されていると思います。
今回は以上です!
次は、カラー画像をグレースケールに変換してみようと思います!!

続きはこちら

【Swift】OpenCVを使ってみる 3 〜カラー画像をグレースケールに変換〜 - 食後のSwift ~琵琶湖からコンバンハ~