2016-10-14 2 views
0

Я пытаюсь использовать Простой детектор блога с Swift и OpenCV Objective C++-оболочкой и OpenCV 3.1.0 для iOS , Тем не менее, я получаю несколько ошибок. Я не понимаю их, поскольку они подразумевают, что я использую stitching.hpp, но я не уверен. Какие-либо предложения? Я не могу понять, почему он будет называть блендеры stitching.hpp и компенсацию экспозиции.Ни один член с именем 'Blender' в пространстве имен 'cv :: detail' Ошибка stitching.hpp при использовании Simple Blob Detector

ошибки не являются: Ни один член с именем «ExposureCompensator» в пространстве имен «:: резюме подробно» stitching.hpp и: Ни один член с именем «Blender» в пространстве имен «:: резюме подробно» stitching.hpp

Заголовки были добавлен в начало, поскольку я изначально получал Parse Issues из ожидаемого идентификатора «НЕТ» в макросе. Добавив эти заголовки, я удалил Parse Issues, как рекомендовано в исходных файлах, но это привело к появлению новых ошибок, как описано выше.

#ifndef OPENCV_STITCHING_BLENDERS_HPP 
#define OPENCV_STITCHING_BLENDERS_HPP 

#if defined(NO) 
#warning Detected Apple 'NO' macro definition, it can cause build conflicts. Please, include this header before any Apple headers. 
#endif 

#ifndef OPENCV_STITCHING_EXPOSURE_COMPENSATE_HPP 
#define OPENCV_STITCHING_EXPOSURE_COMPENSATE_HPP 

#if defined(NO) 
#warning Detected Apple 'NO' macro definition, it can cause build conflicts. Please, include this header before any Apple headers. 
#endif 

#import "OpenWrapper.h" 
#import <opencv2/opencv.hpp> 
#import <opencv2/core/core.hpp> 
#import <opencv2/imgcodecs/ios.h> 
#import <opencv2/imgproc.hpp> 

using namespace std; 
using namespace cv; 

@implementation OpenWrapper 

+(UIImage *) makeGrayscale:(UIImage *)myImage{ 

// Convert UIImage to Mat 
Mat imageMat; 
UIImageToMat(myImage, imageMat); 

// Convert from color to grayscale image 
Mat graymat; 
cvtColor(imageMat, graymat, CV_BGR2GRAY); 

// Set up Simple Blob Parameters 
SimpleBlobDetector::Params params; 

params.minThreshold = 10; 
params.maxThreshold = 200; 
params.filterByArea = true; 
params.minArea = 1500; 
params.filterByCircularity = true; 
params.minConvexity = 0.87; 
params.filterByInertia = true; 
params.minInertiaRatio = 0.01; 


// Creat dectector with keypoints 
vector<KeyPoint> keypoints; 
Ptr<SimpleBlobDetector> detector = SimpleBlobDetector::create(params); 

detector->detect(graymat, keypoints); 

// Mat im_with_keypoints; 
Mat im_with_keypoints; 
drawKeypoints(graymat, keypoints, im_with_keypoints, Scalar(0,0,255), DrawMatchesFlags::DRAW_RICH_KEYPOINTS); 

// Show blobs 
imshow("keypoints", im_with_keypoints); 
waitKey(0); 

// Output results as UIIMage 
return MatToUIImage(graymat); 

} 

#endif 
#endif 

@end 

ответ

4

Простая новичка ошибка. В документации OpenCV четко указывается, что все приложения OpenCV PRIOR для любого кода Apple предотвращают ошибку перечисления. Подразумевается, что нужно поставить операторы импорта opencv перед оператором заголовка импорта Obj C++.

 Смежные вопросы

  • Нет связанных вопросов^_^