Я использую Appcelerator Titanium и разрабатываю модуль для iOS приложения.
Этот модуль должен использовать OpenCV, так как мне нужно кое-что сделать с изображением камеры. Приложение делает снимок определенного инструмента и подсчитывает его красные прямоугольники. Довольно прямолинейно.
Дело в том, что я не знаю, полностью ли совместимы OpenCV (iOS) и Appcelerator. Для Android OpenCV отлично поработал, но я столкнулся с несколькими проблемами, связанными с ним в iOS. Мой модуль правильно компилируется в XCode, и я создаю его без ошибок через appc run -p ios --build-only
. Я добавляю модуль в приложение Appcelerator, но когда я пытаюсь запустить его на своем устройстве, он вылетает со следующей ошибкой:
The following build commands failed: Ld /Users.......(somethings) normal armv7
Я убедился, что архитектуры правильно настроен в XCode.
На данный момент я заметил следующее: когда я комментирую определенные части своего кода, модуль / приложение запускается и устанавливается на устройство без проблем. Но, когда эти строки активны, появляется ошибка при встраивании в устройство. Ниже приведен код, который я использую. (Закомментированные строки - это те, которые выдают ошибку, если они не прокомментированы).
- (void)photoCamera:(CvPhotoCamera *)photoCamera capturedImage:(UIImage *)image {
[photoCam stop];
// resultView = [[UIImageView alloc] initWithFrame:imageView.bounds];
[resultView setImage:image];
resultView.center = imageView.center;
// [self.view addSubview:resultView];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *filePath = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"image.png"];
[UIImagePNGRepresentation(image) writeToFile:filePath atomically:YES];
UIImage* resImage = [UIImage imageWithContentsOfFile:filePath];
Mat3b bgr;
// UIImageToMat(resImage, bgr);
Mat3b hsv;
// cvtColor(bgr, hsv, COLOR_BGR2HSV);
Mat1b mask1, mask2;
// inRange(hsv, Scalar(0, 70, 50), Scalar(10, 255, 255), mask1);
// inRange(hsv, Scalar(170, 70, 50), Scalar(180, 255, 255), mask2);
Mat1b mask = mask1 | mask2;
// namedWindow("Mask", CV_WINDOW_AUTOSIZE);
// imshow("Mask", mask);
// waitKey();
}
Как видите, я не могу вызвать какой-либо метод, который зависит от структуры OpenCV
, но он создает такие переменные, как Mat
. Это заставило меня задуматься: действительно ли возможно создать модуль Appcelerator для iOS, использующий OpenCV?
Пожалуйста, просветите меня по этому поводу. Я предоставлю любую дополнительную информацию. Заранее спасибо.