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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Xcode 7

Xcode 7は、ソフトウェア開発のためのアップルの統合開発環境であるXcodeのバージョン。UIを作成するために用いるグラフィカルツールです。iOS9/OS X El Capitan/watchOS2に対応。Swift 2コンパイラーが搭載されています。

OpenCV

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

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Q&A

0回答

1508閲覧

opencv使用のプログラムエラーについて

sakittyo

総合スコア16

Xcode 7

Xcode 7は、ソフトウェア開発のためのアップルの統合開発環境であるXcodeのバージョン。UIを作成するために用いるグラフィカルツールです。iOS9/OS X El Capitan/watchOS2に対応。Swift 2コンパイラーが搭載されています。

OpenCV

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

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

0グッド

0クリップ

投稿2016/12/01 03:34

###前提・実現したいこと
opencvを使用してるプログラムのエラー処理でつまずいてます。
使用しているのは下記のwebサイトのものです。
http://qiita.com/yukiB/items/55a42d55dd2256c104d6
###発生している問題・エラーメッセー
エラー箇所は
ViewController.mm内の

  • (void)processImage:(cv::Mat&)imageの
    cv::Mat mat(&iplImage);の部分です
Desktop/canny/canny/ViewController.mm:167:13: No matching constructor for initialization of 'cv::Mat'

###該当のソースコード
ViewController.h

c++

1 2 3#import <UIKit/UIKit.h> 4#import <opencv2/imgcodecs/ios.h> 5#import <opencv2/opencv.hpp> 6#import <opencv2/videoio/cap_ios.h> 7typedef enum { 8 Hmax_slider, 9 Hmin_slider, 10 Smax_slider, 11 Smin_slider, 12 Vmax_slider, 13 Vmin_slider 14} SliderType; 15 16@interface ViewController : UIViewController<CvVideoCameraDelegate> 17{ 18 CvVideoCamera* videoCamera; 19 BOOL isCapturing; 20 __weak IBOutlet UILabel *hmaxval; 21 __weak IBOutlet UILabel *hminval; 22 __weak IBOutlet UILabel *smaxval; 23 __weak IBOutlet UILabel *sminval; 24 __weak IBOutlet UILabel *vmaxval; 25 __weak IBOutlet UILabel *vminval; 26 27 int hsvval[6]; 28 29} 30 31@property (nonatomic, strong) CvVideoCamera* videoCamera; 32@property (nonatomic, strong) IBOutlet UIImageView* imageView; 33@property (nonatomic, strong) IBOutlet UIToolbar* toolbar; 34@property (nonatomic, weak) IBOutlet 35UIBarButtonItem* startCaptureButton; 36@property (nonatomic, weak) IBOutlet 37UIBarButtonItem* stopCaptureButton; 38 39@property (nonatomic, weak) IBOutlet 40UIBarButtonItem* lockFocusButton; 41@property (nonatomic, weak) IBOutlet 42UIBarButtonItem* lockExposureButton; 43@property (nonatomic, weak) IBOutlet 44UIBarButtonItem* lockBalanceButton; 45 46@property (nonatomic, weak) IBOutlet 47UIButton* closeButton; 48 49@property (nonatomic, weak) IBOutlet 50UISlider* hmax; 51@property (nonatomic, weak) IBOutlet 52UISlider* hmin; 53@property (nonatomic, weak) IBOutlet 54UISlider* smax; 55@property (nonatomic, weak) IBOutlet 56UISlider* smin; 57@property (nonatomic, weak) IBOutlet 58UISlider* vmax; 59@property (nonatomic, weak) IBOutlet 60UISlider* vmin; 61 62 63@property (nonatomic, weak) IBOutlet 64UIView* hsvController; 65 66-(IBAction)closeButtonPressed:(id)sender; 67 68-(IBAction)sliderModified:(id) 69sender; 70 71@end 72

ViewController.mmm

c++

1#import "ViewController.h" 2 3@interface ViewController () 4 5@end 6 7@implementation ViewController 8 9@synthesize imageView; 10@synthesize hsvController; 11@synthesize closeButton; 12@synthesize hmax; 13@synthesize hmin; 14@synthesize smax; 15@synthesize smin; 16@synthesize vmax; 17@synthesize vmin; 18 19 20- (void)startCamera:(NSTimer *)timer 21{ 22 23 [videoCamera start]; 24 isCapturing = YES; 25 26} 27 28-(IBAction)clickCommand:(id)sender 29{ 30 hsvController.hidden = NO; 31} 32 33-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 34{ 35 UITouch *touch = [[event allTouches] anyObject]; 36 if ( touch.view.tag == imageView.tag ) 37 [self clickCommand:imageView]; 38} 39 40 41- (void)initHSV 42{ 43 44 hmax.tag = Hmax_slider; 45 hmin.tag = Hmin_slider; 46 smax.tag = Smax_slider; 47 smin.tag = Smin_slider; 48 vmax.tag = Vmax_slider; 49 vmin.tag = Vmin_slider; 50 51 hmax.value = 30; 52 hmin.value = 0; 53 smax.value = 255; 54 smin.value = 0; 55 vmax.value = 255; 56 vmin.value = 0; 57 58 hsvval[0] = hmax.value = 10; 59 hsvval[1] = hmin.value = 0; 60 hsvval[2] = smax.value = 255; 61 hsvval[3] = smin.value = 100; 62 hsvval[4] = vmax.value = 255; 63 hsvval[5] = vmin.value = 100; 64 65 66 hmaxval.text = [NSString stringWithFormat:@"%d", (int)hmax.value]; 67 hminval.text = [NSString stringWithFormat:@"%d", (int)hmin.value]; 68 smaxval.text = [NSString stringWithFormat:@"%d", (int)smax.value]; 69 sminval.text = [NSString stringWithFormat:@"%d", (int)smin.value]; 70 vmaxval.text = [NSString stringWithFormat:@"%d", (int)vmax.value]; 71 vminval.text = [NSString stringWithFormat:@"%d", (int)vmin.value]; 72 73 74} 75 76- (void)extarctColor: (IplImage *)srcImage 77{ 78 IplImage *hsvImage = cvCreateImage(cvGetSize(srcImage), IPL_DEPTH_8U, 3); 79 80 double h; 81 double s; 82 double v; 83 84 85 cvCvtColor(srcImage,hsvImage, CV_BGR2HSV); 86 87 unsigned char *offset; 88 unsigned char *P3Image = (uchar *)(hsvImage->imageData); 89 int widthStep3=hsvImage->widthStep; 90 91 for(int y=0;y<hsvImage->height;y++,P3Image+=widthStep3){ 92 for(int x=0;x<hsvImage->width;x++){ 93 94 offset = (P3Image+x+(x<<1)); 95 h=*(offset); 96 s=*(offset+1); 97 v=*(offset+2); 98 99 if(h<=hsvval[0] && h>=hsvval[1] && 100 s<=hsvval[2] && s>=hsvval[3] && 101 v<=hsvval[4] && v>=hsvval[5] 102 ){ 103 } else { 104 *(offset+1) = 10; 105 } 106 } 107 } 108 cvCvtColor(hsvImage,srcImage, CV_HSV2BGR); 109 110 cvReleaseImage(&hsvImage); 111 112} 113 114- (void)viewDidLoad 115{ 116 [super viewDidLoad]; 117 118 imageView.tag = 100; 119 imageView.userInteractionEnabled = YES; 120 121 hsvController.hidden = YES; 122 hsvController.alpha = 0.6; 123 124 [self initHSV]; 125 126 videoCamera = [[CvVideoCamera alloc] 127 initWithParentView:imageView]; 128 videoCamera.delegate = self; 129 videoCamera.defaultAVCaptureDevicePosition = 130 AVCaptureDevicePositionBack; 131 videoCamera.defaultAVCaptureSessionPreset = 132 AVCaptureSessionPreset352x288; 133 videoCamera.defaultAVCaptureVideoOrientation = 134 AVCaptureVideoOrientationPortrait; 135 videoCamera.defaultFPS = 30; 136 137 isCapturing = NO; 138 139 140 NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(startCamera:) userInfo:nil repeats:NO]; 141 142 printf("start"); 143 144 145} 146 147- (NSInteger)supportedInterfaceOrientations 148{ 149 // Only portrait orientation 150 return UIInterfaceOrientationMaskPortrait; 151} 152 153- (void)processImage:(cv::Mat&)image 154{ 155 cv::Mat image_copy; 156 cv::cvtColor(image, image_copy, CV_BGRA2BGR); 157 IplImage iplImage = image_copy; 158 [self extarctColor: &iplImage]; 159 cv::Mat mat(&iplImage); 160 cv::cvtColor(mat, image, CV_BGR2BGRA); 161 162} 163 164- (void)didReceiveMemoryWarning 165{ 166 [super didReceiveMemoryWarning]; 167 // Dispose of any resources that can be recreated. 168} 169 170- (void)viewDidDisappear:(BOOL)animated 171{ 172 [super viewDidDisappear:animated]; 173 if (isCapturing) 174 { 175 [videoCamera stop]; 176 } 177} 178 179- (IBAction)sliderModified:(id)sender 180{ 181 UISlider *slider = (UISlider*)sender; 182 switch(slider.tag) { 183 case Hmax_slider: 184 hmaxval.text = [NSString stringWithFormat:@"%d", (int)slider.value]; 185 break; 186 case Hmin_slider: 187 hminval.text = [NSString stringWithFormat:@"%d", (int)slider.value]; 188 break; 189 case Smax_slider: 190 smaxval.text = [NSString stringWithFormat:@"%d", (int)slider.value]; 191 break; 192 case Smin_slider: 193 sminval.text = [NSString stringWithFormat:@"%d", (int)slider.value]; 194 break; 195 case Vmax_slider: 196 vmaxval.text = [NSString stringWithFormat:@"%d", (int)slider.value]; 197 break; 198 case Vmin_slider: 199 vminval.text = [NSString stringWithFormat:@"%d", (int)slider.value]; 200 break; 201 } 202 hsvval[0] = hmax.value; 203 hsvval[1] = hmin.value; 204 hsvval[2] = smax.value; 205 hsvval[3] = smin.value; 206 hsvval[4] = vmax.value; 207 hsvval[5] = vmin.value; 208} 209 210 211-(IBAction)closeButtonPressed:(id)sender; 212{ 213 hsvController.hidden = YES; 214} 215 216 217- (void)dealloc 218{ 219 videoCamera.delegate = nil; 220} 221 222@end 223

###試したこと
webサイトのプログラムからimportを変えてます。
opencvのバージョン違いのため

###補足情報(言語/FW/ツール等のバージョンなど)
opencv2
Xcode7.3

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

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

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

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

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

MasahikoHirata

2016/12/01 03:45

' cv::Mat mat(&iplImage);'を’ cv::Mat mat(iplImage);’に変えてみてもダメですか?
iwanote

2016/12/01 05:11

コンストラクタ見つからないと書いてありますけど引数足りてます? Mat::Mat(const IplImage* img, bool copyData=false)
sakittyo

2016/12/01 06:07

cv::Mat mat(iplImage);に変えてみてもダメでした
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問