Модуль Appcelerator VS iOS OpenCV - PullRequest
       168

Модуль Appcelerator VS iOS OpenCV

0 голосов
/ 06 августа 2020

Я использую 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?

Пожалуйста, просветите меня по этому поводу. Я предоставлю любую дополнительную информацию. Заранее спасибо.

1 Ответ

0 голосов
/ 31 августа 2020

После долгой борьбы я получил помощь и нашел решение для этого.

Сначала мне пришлось переместить файл opencv2.framework в папку /ios/platform модуля.

Мне также пришлось добавить -lz к Other Linker Flags.

И, наконец, мне пришлось установить 9.2.0 Titanium Mobile SDK.

Итак, чтобы ответить на мой вопрос, можно есть модуль Appcelerator iOS с работающим OpenCV, дело в том, что для этого мне нужна была c помощь (спасибо, ребята из TiSlack ), так как в inte rnet практически нет ничего полезного в отношении Appcelerator и OpenCV.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...