Appcelerator VS iOS OpenCV 模块
Appcelerator VS iOS OpenCV Module
我使用 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 中正确配置了体系结构。
到目前为止我注意到的是:当我注释代码的某些部分时,module/app 可以毫无问题地运行并安装在设备上。但是,当这些行处于活动状态时,会出现构建到设备时的错误。下面是我使用的代码。 (如果没有注释,注释行会给出错误)。
- (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
这样的变量。
这让我想到:真的有可能为 iOS 创建一个使用 OpenCV 的 Appcelerator 模块吗?
请有人赐教。
我将提供任何需要的进一步信息。
提前致谢。
经过长时间的努力,我得到了帮助并找到了解决方案。
首先,我必须将 opencv2.framework 文件移动到模块的 /ios/platform
文件夹中。
我还必须将 -lz
添加到 Other Linker Flags
。
最后,我不得不安装 9.2.0 Titanium Mobile SDK
。
所以,为了回答我的问题,Appcelerator iOS 模块可以与 OpenCV 一起工作,问题是,我需要为此提供具体帮助(感谢来自 TiSlack 的人),因为在互联网上几乎没有关于 Appcelerator 和 OpenCV 的有用信息。
我使用 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 中正确配置了体系结构。
到目前为止我注意到的是:当我注释代码的某些部分时,module/app 可以毫无问题地运行并安装在设备上。但是,当这些行处于活动状态时,会出现构建到设备时的错误。下面是我使用的代码。 (如果没有注释,注释行会给出错误)。
- (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
这样的变量。
这让我想到:真的有可能为 iOS 创建一个使用 OpenCV 的 Appcelerator 模块吗?
请有人赐教。 我将提供任何需要的进一步信息。 提前致谢。
经过长时间的努力,我得到了帮助并找到了解决方案。
首先,我必须将 opencv2.framework 文件移动到模块的 /ios/platform
文件夹中。
我还必须将 -lz
添加到 Other Linker Flags
。
最后,我不得不安装 9.2.0 Titanium Mobile SDK
。
所以,为了回答我的问题,Appcelerator iOS 模块可以与 OpenCV 一起工作,问题是,我需要为此提供具体帮助(感谢来自 TiSlack 的人),因为在互联网上几乎没有关于 Appcelerator 和 OpenCV 的有用信息。