質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

1306閲覧

Use of unresolved identifier 'OpenCVWrapper' のエラーを消したい

akito0705

総合スコア23

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

1クリップ

投稿2018/11/19 21:30

Swiftを使ってカメラ画像から写真に写っている紙をPDF化するアプリケーションを作成しようと思っています。
その途中段階で、画像をグレースケールしようと思っているのですが、上記のエラーが出てきてしまい先に進めません。
原因のわかるかたよろしくお願いします。

エラーが出るのはViewController.swiftの画像変換の2行目です。

参考サイト
http://www.otyazuke.com/entry/2016/11/27/165228

ViewController.swift

1import UIKit 2 3class ViewController: UIViewController, UIImagePickerControllerDelegate, 4UINavigationControllerDelegate{ 5 6 @IBOutlet var cameraView : UIImageView! 7 @IBOutlet var label : UILabel! 8 9 override func viewDidLoad() { 10 super.viewDidLoad() 11 label.text = "Tap the [Start] to take a picture" 12 13 14 } 15 16 // カメラの撮影開始 17 @IBAction func startCamera(_ sender : AnyObject) { 18 19 let sourceType:UIImagePickerController.SourceType = 20 UIImagePickerController.SourceType.camera 21 // カメラが利用可能かチェック 22 if UIImagePickerController.isSourceTypeAvailable( 23 UIImagePickerController.SourceType.camera){ 24 // インスタンスの作成 25 let cameraPicker = UIImagePickerController() 26 cameraPicker.sourceType = sourceType 27 cameraPicker.delegate = self 28 self.present(cameraPicker, animated: true, completion: nil) 29 30 } 31 else{ 32 label.text = "error" 33 34 } 35 } 36 37 // 撮影が完了時した時に呼ばれる 38 func imagePickerController(_ imagePicker: UIImagePickerController, 39 didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]){ 40 41 if let pickedImage = info[.originalImage] 42 as? UIImage { 43 44 cameraView.contentMode = .scaleAspectFit 45 cameraView.image = pickedImage 46 47 } 48 49 //閉じる処理 50 imagePicker.dismiss(animated: true, completion: nil) 51 label.text = "Tap the [Save] to save a picture" 52 53 } 54 55 // 撮影がキャンセルされた時に呼ばれる 56 func imagePickerControllerDidCancel(_ picker: UIImagePickerController) { 57 picker.dismiss(animated: true, completion: nil) 58 label.text = "Canceled" 59 } 60 61 62 // 写真を保存 63 @IBAction func savePicture(_ sender : AnyObject) { 64 let image:UIImage! = cameraView.image 65 66 if image != nil { 67 UIImageWriteToSavedPhotosAlbum( 68 image, 69 self, 70 #selector(ViewController.image(_:didFinishSavingWithError:contextInfo:)), 71 nil) 72 } 73 else{ 74 label.text = "image Failed !" 75 } 76 77 } 78 79 // 書き込み完了結果の受け取り 80 @objc func image(_ image: UIImage, 81 didFinishSavingWithError error: NSError!, 82 contextInfo: UnsafeMutableRawPointer) { 83 84 if error != nil { 85 print(error.code) 86 label.text = "Save Failed !" 87 } 88 else{ 89 label.text = "Save Succeeded" 90 } 91 } 92 93 // アルバムを表示 94 @IBAction func showAlbum(_ sender : AnyObject) { 95 let sourceType:UIImagePickerController.SourceType = 96 UIImagePickerController.SourceType.photoLibrary 97 98 if UIImagePickerController.isSourceTypeAvailable( 99 UIImagePickerController.SourceType.photoLibrary){ 100 // インスタンスの作成 101 let cameraPicker = UIImagePickerController() 102 cameraPicker.sourceType = sourceType 103 cameraPicker.delegate = self 104 self.present(cameraPicker, animated: true, completion: nil) 105 106 label.text = "Tap the [Start] to save a picture" 107 } 108 else{ 109 label.text = "error" 110 111 } 112 113 } 114 115 //画像変換 116 @IBAction func photochange(_ sender : AnyObject) { 117 cameraView.image = OpenCVWrapper.makeGray(from: cameraView.image) 118 } 119 120} 121

OpenCVWrapper.h

1#import <Foundation/Foundation.h> 2#import <UIKit/UIKit.h> 3 4 5 6@interface OpenCVWrapper : NSObject 7+(NSString * ) openCVVersionString; 8 9+(UIImage * )makeGrayFromImage:(UIImage * )image; 10@end

OpenCVWrapper.mm

1#import "OpenCVWrapper.h" 2#import <opencv2/opencv.hpp> 3#import <opencv2/highgui/ios.h> 4 5@implementation OpenCVWrapper 6 7+(NSString *)openCVVersionString{ 8 return [NSString stringWithFormat: @"openCV Version %s", CV_VERSION]; 9} 10 11+(UIImage * )makeGrayFromImage:(UIImage *)image{ 12 cv::Mat imageMat; 13 UIImageToMat(image, imageMat); 14 15 if(imageMat.channels() == 1)return image; 16 17 cv::Mat grayMat; 18 cv::cvtColor(imageMat, grayMat, CV_BGR2GRAY); 19 20 return MatToUIImage(grayMat); 21} 22 23@end 24

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

ブリッジングヘッダ(Bridging Header)ファイルの設定が出来ていないんじゃないでしょうか?

参考ブログの前の記事にはブリッジングヘッダの設定方法が記してあります。

投稿2018/11/20 06:54

daisuke7

総合スコア1563

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

akito0705

2018/11/21 17:06

返事が遅くなってしまい申し訳ありません。Bridging Headerの設定がうまくできていませんでした。プロジェクトを初めから作り直して、framework等の設定をやり直したら解決しました。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問