Repository: Legoless/LegoCV Branch: master Commit: 5338a3bb0397 Files: 351 Total size: 435.2 KB Directory structure: gitextract_zblrltlp/ ├── .gitignore ├── .gitmodules ├── LICENSE ├── LegoCV/ │ ├── FaceDetection/ │ │ ├── AppDelegate.swift │ │ ├── Assets.xcassets/ │ │ │ └── AppIcon.appiconset/ │ │ │ └── Contents.json │ │ ├── Base.lproj/ │ │ │ ├── LaunchScreen.storyboard │ │ │ └── Main.storyboard │ │ ├── Info.plist │ │ ├── Recognition/ │ │ │ ├── FaceDetector.swift │ │ │ └── FaceRecognizer.swift │ │ └── View Controllers/ │ │ ├── FaceRecognitionVC.swift │ │ └── LiveCameraVC.swift │ ├── LegoCV/ │ │ ├── Info.plist │ │ ├── LegoCV.h │ │ └── Wrapper/ │ │ ├── Aruco/ │ │ │ ├── OCVCharucoBoard.h │ │ │ └── OCVCharucoBoard.m │ │ ├── BgSegm/ │ │ │ ├── OCVBackgroundSubtractorGMG.h │ │ │ ├── OCVBackgroundSubtractorGMG.m │ │ │ ├── OCVBackgroundSubtractorMOG.h │ │ │ └── OCVBackgroundSubtractorMOG.m │ │ ├── Core/ │ │ │ ├── Algorithms/ │ │ │ │ ├── OCVLDA.h │ │ │ │ ├── OCVLDA.mm │ │ │ │ ├── OCVPCA.h │ │ │ │ ├── OCVPCA.mm │ │ │ │ ├── OCVRandomGenerator.h │ │ │ │ ├── OCVRandomGenerator.mm │ │ │ │ ├── OCVSVD.h │ │ │ │ └── OCVSVD.mm │ │ │ ├── Base/ │ │ │ │ ├── OCVAlgorithm.h │ │ │ │ ├── OCVAlgorithm.m │ │ │ │ ├── OCVArrayables.h │ │ │ │ ├── OCVComplex.h │ │ │ │ ├── OCVComplex.m │ │ │ │ ├── OCVEdges.h │ │ │ │ ├── OCVFormatter.h │ │ │ │ ├── OCVFormatter.m │ │ │ │ ├── OCVGeometry.h │ │ │ │ ├── OCVInputArray.h │ │ │ │ ├── OCVInputArray.mm │ │ │ │ ├── OCVInputArrayable.h │ │ │ │ ├── OCVInputOutputArray.h │ │ │ │ ├── OCVInputOutputArray.mm │ │ │ │ ├── OCVInputOutputArrayable.h │ │ │ │ ├── OCVOutputArray.h │ │ │ │ ├── OCVOutputArray.mm │ │ │ │ ├── OCVOutputArrayable.h │ │ │ │ ├── OCVPoint.h │ │ │ │ ├── OCVRect.h │ │ │ │ ├── OCVRect.m │ │ │ │ ├── OCVScalar.h │ │ │ │ ├── OCVScalar.m │ │ │ │ ├── OCVSize.h │ │ │ │ ├── OCVTypes.h │ │ │ │ ├── OCVVector.h │ │ │ │ └── OCVVector.m │ │ │ ├── Mat/ │ │ │ │ ├── OCVMat.h │ │ │ │ ├── OCVMat.mm │ │ │ │ ├── OCVMatDataAllocator.h │ │ │ │ ├── OCVMatDataAllocator.mm │ │ │ │ ├── OCVMatExpr.h │ │ │ │ ├── OCVMatExpr.mm │ │ │ │ ├── OCVUMat.h │ │ │ │ └── OCVUMat.m │ │ │ ├── OCVCore.h │ │ │ ├── Operations/ │ │ │ │ ├── OCVMinimumMaximum.h │ │ │ │ ├── OCVMinimumMaximum.m │ │ │ │ ├── OCVOperation+Bitwise.h │ │ │ │ ├── OCVOperation+Bitwise.mm │ │ │ │ ├── OCVOperation+Transform.h │ │ │ │ ├── OCVOperation+Transform.mm │ │ │ │ ├── OCVOperation.h │ │ │ │ ├── OCVOperation.mm │ │ │ │ ├── OCVTermCriteria.h │ │ │ │ └── OCVTermCriteria.m │ │ │ ├── Persistence/ │ │ │ │ ├── OCVFileNode.h │ │ │ │ ├── OCVFileNode.mm │ │ │ │ ├── OCVFileStorage.h │ │ │ │ ├── OCVFileStorage.mm │ │ │ │ ├── OCVFileStorageFormatDescriptor.h │ │ │ │ ├── OCVFileStorageFormatDescriptor.m │ │ │ │ ├── OCVPersistence.h │ │ │ │ └── OCVSerializable.h │ │ │ └── Private/ │ │ │ ├── OCVGeometry+Private.h │ │ │ ├── OCVInputArray+Private.h │ │ │ ├── OCVInputOutputArray+Private.h │ │ │ ├── OCVMatDataAllocator+Private.h │ │ │ ├── OCVOutputArray+Private.h │ │ │ ├── OCVPoint+Private.h │ │ │ ├── OCVPoint+Private.mm │ │ │ ├── OCVRect+Private.h │ │ │ ├── OCVRect+Private.mm │ │ │ ├── OCVSize+Private.h │ │ │ └── OCVSize+Private.mm │ │ ├── Cuda/ │ │ │ ├── OCVGPUMat.h │ │ │ └── OCVGPUMat.m │ │ ├── CvEnum/ │ │ │ ├── OCVStorageOperationType.h │ │ │ └── OCVStorageOperationType.m │ │ ├── Cvb/ │ │ │ ├── OCVBlob.h │ │ │ └── OCVBlob.m │ │ ├── Dnn/ │ │ │ ├── OCVImporter.h │ │ │ ├── OCVImporter.m │ │ │ ├── OCVNet.h │ │ │ └── OCVNet.m │ │ ├── Face/ │ │ │ ├── OCVEigenFaceRecognizer.h │ │ │ ├── OCVEigenFaceRecognizer.m │ │ │ ├── OCVFaceRecognizer.h │ │ │ ├── OCVFaceRecognizer.m │ │ │ ├── OCVFisherFaceRecognizer.h │ │ │ ├── OCVFisherFaceRecognizer.m │ │ │ ├── OCVLBPHFaceRecognizer.h │ │ │ └── OCVLBPHFaceRecognizer.m │ │ ├── Features2D/ │ │ │ ├── OCVFeature2D.h │ │ │ └── OCVFeature2D.m │ │ ├── Flann/ │ │ │ ├── OCVIndex.h │ │ │ └── OCVIndex.m │ │ ├── Fuzzy/ │ │ │ ├── OCVFuzzyInvoke.h │ │ │ └── OCVFuzzyInvoke.m │ │ ├── Geodetic/ │ │ │ ├── OCVGeodeticCoordinate.h │ │ │ └── OCVGeodeticCoordinate.m │ │ ├── ImageProcessing/ │ │ │ ├── OCVColorConversionType.h │ │ │ ├── OCVContrastLimitedAdaptiveHistogramEqualization.h │ │ │ ├── OCVContrastLimitedAdaptiveHistogramEqualization.m │ │ │ ├── OCVGeneralizedHough.h │ │ │ ├── OCVGeneralizedHough.m │ │ │ ├── OCVGeneralizedHoughBallard.h │ │ │ ├── OCVGeneralizedHoughBallard.m │ │ │ ├── OCVGeneralizedHoughGuil.h │ │ │ ├── OCVGeneralizedHoughGuil.m │ │ │ ├── OCVImage.h │ │ │ ├── OCVImage.m │ │ │ ├── OCVImageOperation.h │ │ │ ├── OCVImageOperation.mm │ │ │ ├── OCVImageProcessing.h │ │ │ ├── OCVImageTypes.h │ │ │ ├── OCVInterpolationType.h │ │ │ ├── OCVLineSegmentDetector.h │ │ │ ├── OCVLineSegmentDetector.m │ │ │ ├── OCVSubdiv2D.h │ │ │ └── OCVSubdiv2D.m │ │ ├── LineDescriptor/ │ │ │ ├── OCVLSDDetector.h │ │ │ └── OCVLSDDetector.m │ │ ├── ML/ │ │ │ ├── Enum/ │ │ │ │ ├── OCVBoostType.h │ │ │ │ ├── OCVBoostType.m │ │ │ │ ├── OCVVarType.h │ │ │ │ └── OCVVarType.m │ │ │ ├── OCVANNMLP.h │ │ │ ├── OCVANNMLP.m │ │ │ ├── OCVBoost.h │ │ │ ├── OCVBoost.m │ │ │ ├── OCVDTree.h │ │ │ ├── OCVDTree.m │ │ │ ├── OCVEM.h │ │ │ ├── OCVEM.m │ │ │ ├── OCVKNearest.h │ │ │ ├── OCVKNearest.m │ │ │ ├── OCVLogisticRegression.h │ │ │ ├── OCVLogisticRegression.m │ │ │ ├── OCVNormalBayesClassifier.h │ │ │ ├── OCVNormalBayesClassifier.m │ │ │ ├── OCVRTree.h │ │ │ ├── OCVRTree.m │ │ │ ├── OCVSVM.h │ │ │ ├── OCVSVM.m │ │ │ ├── OCVStatModelExtensions.h │ │ │ ├── OCVStatModelExtensions.m │ │ │ ├── OCVTrainData.h │ │ │ ├── OCVTrainData.m │ │ │ └── Structure/ │ │ │ ├── OCVMCvDTreeNode.h │ │ │ ├── OCVMCvDTreeNode.m │ │ │ ├── OCVMCvDTreeSplit.h │ │ │ ├── OCVMCvDTreeSplit.m │ │ │ ├── OCVMCvDTreeSplitMOrder.h │ │ │ ├── OCVMCvDTreeSplitMOrder.m │ │ │ ├── OCVMCvParamGrid.h │ │ │ └── OCVMCvParamGrid.m │ │ ├── OCR/ │ │ │ ├── OCVOrientation.h │ │ │ ├── OCVOrientation.m │ │ │ ├── OCVPageIterator.h │ │ │ ├── OCVPageIterator.m │ │ │ ├── OCVTesseract.h │ │ │ ├── OCVTesseract.m │ │ │ ├── OCVTesseractResult.h │ │ │ └── OCVTesseractResult.m │ │ ├── ObjectDetection/ │ │ │ ├── OCVBaseCascadeClassifier.h │ │ │ ├── OCVBaseCascadeClassifier.m │ │ │ ├── OCVCascadeClassifier.h │ │ │ ├── OCVCascadeClassifier.mm │ │ │ ├── OCVCascadeClassifierOptions.h │ │ │ ├── OCVCascadeClassifierOptions.m │ │ │ ├── OCVCascadeClassifierResult.h │ │ │ └── OCVCascadeClassifierResult.m │ │ ├── Ocl/ │ │ │ ├── OCVDevice.h │ │ │ ├── OCVDevice.m │ │ │ ├── OCVImage2D.h │ │ │ ├── OCVImage2D.m │ │ │ ├── OCVKernel.h │ │ │ ├── OCVKernel.m │ │ │ ├── OCVKernelConfiguration.h │ │ │ ├── OCVKernelConfiguration.m │ │ │ ├── OCVPlatformInfo.h │ │ │ ├── OCVPlatformInfo.m │ │ │ ├── OCVProgramSource.h │ │ │ ├── OCVProgramSource.m │ │ │ ├── OCVQueue.h │ │ │ └── OCVQueue.m │ │ ├── Plot/ │ │ │ ├── OCVPlot.h │ │ │ └── OCVPlot.m │ │ ├── Reflection/ │ │ │ ├── OCVReflectImage.h │ │ │ └── OCVReflectImage.m │ │ ├── Shape/ │ │ │ ├── OCVAffineTransformer.h │ │ │ ├── OCVAffineTransformer.m │ │ │ ├── OCVChiHistogramCostExtractor.h │ │ │ ├── OCVChiHistogramCostExtractor.m │ │ │ ├── OCVEMDHistogramCostExtractor.h │ │ │ ├── OCVEMDHistogramCostExtractor.m │ │ │ ├── OCVEMDL1HistogramCostExtractor.h │ │ │ ├── OCVEMDL1HistogramCostExtractor.m │ │ │ ├── OCVHausdorffDistanceExtractor.h │ │ │ ├── OCVHausdorffDistanceExtractor.m │ │ │ ├── OCVHistogramCostExtractor.h │ │ │ ├── OCVHistogramCostExtractor.m │ │ │ ├── OCVNormHistogramCostExtractor.h │ │ │ ├── OCVNormHistogramCostExtractor.m │ │ │ ├── OCVShapeContextDistanceExtractor.h │ │ │ ├── OCVShapeContextDistanceExtractor.m │ │ │ ├── OCVShapeDistanceExtractor.h │ │ │ ├── OCVShapeDistanceExtractor.m │ │ │ ├── OCVThinPlateSplineShapeTransformer.h │ │ │ └── OCVThinPlateSplineShapeTransformer.m │ │ ├── Stitching/ │ │ │ ├── OCVCompressedRectilinearWarper.h │ │ │ ├── OCVCompressedRectilinearWarper.m │ │ │ ├── OCVFeaturesFinder.h │ │ │ ├── OCVFeaturesFinder.m │ │ │ ├── OCVFisheyeWarper.h │ │ │ ├── OCVFisheyeWarper.m │ │ │ ├── OCVMercatorWarper.h │ │ │ ├── OCVMercatorWarper.m │ │ │ ├── OCVOrbFeaturesFinder.h │ │ │ ├── OCVOrbFeaturesFinder.m │ │ │ ├── OCVPaniniPortraitWarper.h │ │ │ ├── OCVPaniniPortraitWarper.m │ │ │ ├── OCVPaniniWarper.h │ │ │ ├── OCVPaniniWarper.m │ │ │ ├── OCVPlaneWarper.h │ │ │ ├── OCVPlaneWarper.m │ │ │ ├── OCVSphericalWarper.h │ │ │ ├── OCVSphericalWarper.m │ │ │ ├── OCVStereographicWarper.h │ │ │ ├── OCVStereographicWarper.m │ │ │ ├── OCVSticher.h │ │ │ ├── OCVSticher.m │ │ │ ├── OCVTransverseMercatorWarper.h │ │ │ ├── OCVTransverseMercatorWarper.m │ │ │ ├── OCVWarperCreator.h │ │ │ └── OCVWarperCreator.m │ │ ├── Structure/ │ │ │ ├── OCVRgb.h │ │ │ ├── OCVRgb.m │ │ │ ├── OCVRgba.h │ │ │ └── OCVRgba.m │ │ ├── Superres/ │ │ │ ├── OCVFrameSource.h │ │ │ ├── OCVFrameSource.m │ │ │ ├── OCVSuperResolution.h │ │ │ └── OCVSuperResolution.m │ │ ├── Text/ │ │ │ ├── OCVERFilter.h │ │ │ ├── OCVERFilter.m │ │ │ ├── OCVERFilterNM1.h │ │ │ ├── OCVERFilterNM1.m │ │ │ ├── OCVERFilterNM2.h │ │ │ ├── OCVERFilterNM2.m │ │ │ ├── OCVERStat.h │ │ │ └── OCVERStat.m │ │ ├── Tiff/ │ │ │ ├── OCVTiffWriter.h │ │ │ ├── OCVTiffWriter.m │ │ │ ├── OCVTileTiffWriter.h │ │ │ └── OCVTileTiffWriter.m │ │ ├── Tracking/ │ │ │ ├── OCVMultiTracker.h │ │ │ ├── OCVMultiTracker.m │ │ │ ├── OCVTracker.h │ │ │ └── OCVTracker.m │ │ ├── UI/ │ │ │ ├── OCVHistogramBox.h │ │ │ ├── OCVHistogramBox.m │ │ │ ├── OCVHistogramViewer.h │ │ │ └── OCVHistogramViewer.m │ │ ├── Utilities/ │ │ │ ├── OCVObject.h │ │ │ ├── OCVObject.m │ │ │ ├── OCVPointerObject.h │ │ │ ├── OCVPointerObject.m │ │ │ ├── OCVReferenceObject.h │ │ │ └── OCVReferenceObject.m │ │ ├── Video/ │ │ │ ├── OCVCamera+Private.h │ │ │ ├── OCVCamera.h │ │ │ ├── OCVCamera.mm │ │ │ ├── OCVPhotoCamera.h │ │ │ ├── OCVPhotoCamera.mm │ │ │ ├── OCVVideo.h │ │ │ ├── OCVVideoCamera.h │ │ │ └── OCVVideoCamera.mm │ │ ├── VideoStab/ │ │ │ ├── OCVGaussianMotionFilter.h │ │ │ ├── OCVGaussianMotionFilter.m │ │ │ ├── OCVOnePassStabilizer.h │ │ │ ├── OCVOnePassStabilizer.m │ │ │ ├── OCVTwoPassStabilizer.h │ │ │ ├── OCVTwoPassStabilizer.m │ │ │ ├── OCVVideoCaptureFrameSource.h │ │ │ ├── OCVVideoCaptureFrameSource.m │ │ │ ├── OCVVideoFrameSource.h │ │ │ └── OCVVideoFrameSource.m │ │ ├── VideoSurveillance/ │ │ │ ├── OCVBackgroundSubtractor.h │ │ │ ├── OCVBackgroundSubtractor.m │ │ │ ├── OCVBackgroundSubtractorKNN.h │ │ │ ├── OCVBackgroundSubtractorKNN.m │ │ │ ├── OCVBackgroundSubtractorMOG2.h │ │ │ └── OCVBackgroundSubtractorMOG2.m │ │ ├── XFeatures2D/ │ │ │ ├── OCVBriefDescriptorExtractor.h │ │ │ ├── OCVBriefDescriptorExtractor.m │ │ │ ├── OCVCudaSURF.h │ │ │ ├── OCVCudaSURF.m │ │ │ ├── OCVDAISY.h │ │ │ ├── OCVDAISY.m │ │ │ ├── OCVFreak.h │ │ │ ├── OCVFreak.m │ │ │ ├── OCVLATCH.h │ │ │ ├── OCVLATCH.m │ │ │ ├── OCVLUCID.h │ │ │ ├── OCVLUCID.m │ │ │ ├── OCVSIFT.h │ │ │ ├── OCVSIFT.m │ │ │ ├── OCVSURF.h │ │ │ ├── OCVSURF.m │ │ │ ├── OCVStarDetector.h │ │ │ └── OCVStarDetector.m │ │ ├── XImgproc/ │ │ │ ├── OCVDTFilter.h │ │ │ └── OCVDTFilter.m │ │ └── XPhoto/ │ │ ├── OCVXPhoto.h │ │ └── OCVXPhoto.m │ ├── LegoCV.xcodeproj/ │ │ ├── project.pbxproj │ │ ├── project.xcworkspace/ │ │ │ ├── contents.xcworkspacedata │ │ │ └── xcshareddata/ │ │ │ └── IDEWorkspaceChecks.plist │ │ └── xcshareddata/ │ │ └── xcschemes/ │ │ ├── LegoCV.xcscheme │ │ └── LegoSwiftCV.xcscheme │ ├── LegoCVTests/ │ │ ├── Info.plist │ │ └── LegoCVTests.swift │ ├── LegoSwiftCV/ │ │ ├── Core/ │ │ │ └── Matrix.swift │ │ ├── Info.plist │ │ └── LegoSwiftCV.h │ ├── LegoSwiftCVTests/ │ │ ├── Info.plist │ │ └── LegoSwiftCVTests.swift │ └── Playgrounds/ │ └── MatrixOperations.playground/ │ ├── Contents.swift │ └── contents.xcplayground ├── LegoCV.podspec └── README.md ================================================ FILE CONTENTS ================================================ ================================================ FILE: .gitignore ================================================ # OS X .DS_Store ## Build generated ios/ opencv2.framework/ build/ DerivedData ## Various settings *.pbxuser !default.pbxuser *.mode1v3 !default.mode1v3 *.mode2v3 !default.mode2v3 *.perspectivev3 !default.perspectivev3 xcuserdata ## Other *.xccheckout *.moved-aside *.xcuserstate *.xcscmblueprint ## Obj-C/Swift specific *.hmap *.ipa *.dSYM.zip *.dSYM ## Playgrounds timeline.xctimeline playground.xcworkspace # Swift Package Manager # # Add this line if you want to avoid checking in source code from Swift Package Manager dependencies. # Packages/ .build/ # CocoaPods # # We recommend against adding the Pods directory to your .gitignore. However # you should judge for yourself, the pros and cons are mentioned at: # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control # # Pods/ # Carthage # # Add this line if you want to avoid checking in source code from Carthage dependencies. # Carthage/Checkouts Carthage/Build # fastlane # # It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the # screenshots whenever they are needed. # For more information about the recommended setup visit: # https://github.com/fastlane/fastlane/blob/master/docs/Gitignore.md fastlane/report.xml fastlane/Preview.html fastlane/screenshots fastlane/test_output # # Code Coverage # *.gcda *.gcno # # AppCode # .idea/ # # Dominus # dominus.cfg # # KZBootstrap # KZBootstrapUserMacros.h # # R.swift # *.generated.swift ================================================ FILE: .gitmodules ================================================ [submodule "opencv"] path = opencv url = https://github.com/opencv/opencv.git ================================================ FILE: LICENSE ================================================ By downloading, copying, installing or using the software you agree to this license. If you do not agree to this license, do not download, install, copy or use the software. License Agreement For Open Source Computer Vision Library (3-clause BSD License) Copyright (C) 2000-2016, Intel Corporation, all rights reserved. Copyright (C) 2009-2011, Willow Garage Inc., all rights reserved. Copyright (C) 2009-2016, NVIDIA Corporation, all rights reserved. Copyright (C) 2010-2013, Advanced Micro Devices, Inc., all rights reserved. Copyright (C) 2015-2016, OpenCV Foundation, all rights reserved. Copyright (C) 2015-2016, Itseez Inc., all rights reserved. Copyright (C) 2016-2017, Unified Sense, all rights reserved. Third party copyrights are property of their respective owners. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the names of the copyright holders nor the names of the contributors may be used to endorse or promote products derived from this software without specific prior written permission. This software is provided by the copyright holders and contributors "as is" and any express or implied warranties, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose are disclaimed. In no event shall copyright holders or contributors be liable for any direct, indirect, incidental, special, exemplary, or consequential damages (including, but not limited to, procurement of substitute goods or services; loss of use, data, or profits; or business interruption) however caused and on any theory of liability, whether in contract, strict liability, or tort (including negligence or otherwise) arising in any way out of the use of this software, even if advised of the possibility of such damage. ================================================ FILE: LegoCV/FaceDetection/AppDelegate.swift ================================================ // // AppDelegate.swift // FaceDetection // // Created by Dal Rupnik on 14/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // import UIKit @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { // Override point for customization after application launch. return true } func applicationWillResignActive(_ application: UIApplication) { // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. // Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game. } func applicationDidEnterBackground(_ application: UIApplication) { // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. } func applicationWillEnterForeground(_ application: UIApplication) { // Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background. } func applicationDidBecomeActive(_ application: UIApplication) { // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. } func applicationWillTerminate(_ application: UIApplication) { // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. } } ================================================ FILE: LegoCV/FaceDetection/Assets.xcassets/AppIcon.appiconset/Contents.json ================================================ { "images" : [ { "idiom" : "iphone", "size" : "29x29", "scale" : "2x" }, { "idiom" : "iphone", "size" : "29x29", "scale" : "3x" }, { "idiom" : "iphone", "size" : "40x40", "scale" : "2x" }, { "idiom" : "iphone", "size" : "40x40", "scale" : "3x" }, { "idiom" : "iphone", "size" : "60x60", "scale" : "2x" }, { "idiom" : "iphone", "size" : "60x60", "scale" : "3x" }, { "idiom" : "ipad", "size" : "29x29", "scale" : "1x" }, { "idiom" : "ipad", "size" : "29x29", "scale" : "2x" }, { "idiom" : "ipad", "size" : "40x40", "scale" : "1x" }, { "idiom" : "ipad", "size" : "40x40", "scale" : "2x" }, { "idiom" : "ipad", "size" : "76x76", "scale" : "1x" }, { "idiom" : "ipad", "size" : "76x76", "scale" : "2x" } ], "info" : { "version" : 1, "author" : "xcode" } } ================================================ FILE: LegoCV/FaceDetection/Base.lproj/LaunchScreen.storyboard ================================================ ================================================ FILE: LegoCV/FaceDetection/Base.lproj/Main.storyboard ================================================ ================================================ FILE: LegoCV/FaceDetection/Info.plist ================================================ CFBundleDevelopmentRegion en CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleName $(PRODUCT_NAME) CFBundlePackageType APPL CFBundleShortVersionString 1.0.0 CFBundleVersion 1 LSRequiresIPhoneOS NSCameraUsageDescription Face Detection UILaunchStoryboardName LaunchScreen UIMainStoryboardFile Main UIRequiredDeviceCapabilities armv7 UISupportedInterfaceOrientations UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UISupportedInterfaceOrientations~ipad UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight ================================================ FILE: LegoCV/FaceDetection/Recognition/FaceDetector.swift ================================================ // // FaceDetector.swift // LegoCV // // Created by Dal Rupnik on 23/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // import LegoCV class FaceDetector : NSObject, OCVVideoCameraDelegate { private var imageView : UIImageView private var scale : CGFloat private var faceRects : [OCVRect] = [] private var faceImgs : [OCVMat] = [] private var faceDetector = OCVCascadeClassifier() var videoCamera : OCVVideoCamera! init(imageView: UIImageView, scale: CGFloat) { self.imageView = imageView self.scale = scale super.init() setupCamera() setupClassifier() } func startCapture () { videoCamera.start() } func stopCapture () { videoCamera.stop() } func detectedFaces () -> [CGRect] { var rects : [CGRect] = [] for faceRect in faceRects { let rect = CGRect(x: scale * CGFloat(faceRect.origin.x) / 480.0, y: scale * CGFloat(faceRect.origin.y) / 640.0, width: scale * CGFloat(faceRect.size.width) / 480.0, height: scale * CGFloat(faceRect.size.height) / 640.0) rects.append(rect) } return rects } func face(with index: Int) -> UIImage? { guard index < faceImgs.count else { return nil } return faceImgs[index].image() } func processImage(_ image: OCVMat) { let faces = detectFaces(on: image, with: Double(scale)) draw(faces: faces.0, on: image, with: faces.1) } private func setupCamera () { videoCamera = OCVVideoCamera(parentView: imageView) videoCamera.defaultAVCaptureDevicePosition = .front videoCamera.defaultAVCaptureSessionPreset = AVCaptureSession.Preset.vga640x480 videoCamera.defaultAVCaptureVideoOrientation = .portrait videoCamera.defaultFPS = 30 videoCamera.grayscaleMode = false videoCamera.delegate = self } private func setupClassifier () { if let path = Bundle.main.path(forResource: "haarcascade_frontalface_alt2", ofType: "xml", inDirectory: "data/haarcascades") { faceDetector.loadPath(path) } } private func detectFaces (on image: OCVMat, with scale: Double) -> ([OCVRect], OCVMat) { let scaleFactor = 1.1 let minRects = 2 var minSize = OCVSize() minSize.width = 30 minSize.height = 30 let gray = OCVMat() let smallImage = OCVMat(rows: Int(round(Double(image.rows) / scale)), cols: Int(round(Double(image.cols) / scale)), type: .cv8U, channels: 1) OCVImageOperation.convertColor(fromSource: image, toDestination: gray, with: .typeBGR2GRAY) OCVImageOperation.resize(fromSource: gray, toDestination: smallImage, size: smallImage.size, fx: 0, fy: 0, interpolation: .linear) OCVImageOperation.equalizeHistogram(fromSource: smallImage, toDestination: smallImage) return (faceDetector.detectMultiScale(onImage: smallImage, scaleFactor: scaleFactor, minNeighbours: minRects, flags: 0, minSize: minSize).map { $0.rect }, smallImage) } private func draw(faces: [OCVRect], on image: OCVMat, with smallImage: OCVMat) { let colors : [OCVScalar] = [ OCVScalar(r: 0, g: 0, b: 255), OCVScalar(r: 0, g: 128, b: 255), OCVScalar(r: 0, g: 255, b: 255), OCVScalar(r: 0, g: 255, b: 0), OCVScalar(r: 255, g: 128, b: 0), OCVScalar(r: 255, g: 255, b: 0), OCVScalar(r: 255, g: 0, b: 0), OCVScalar(r: 255, g: 0, b: 255) ] var faceImages : [OCVMat] = [] var i = 0 for face in faces { let color = colors[i % colors.count] var point1 = OCVPoint() point1.x = Int(CGFloat(face.origin.x) * scale) point1.y = Int(CGFloat(face.origin.y) * scale) var point2 = OCVPoint() point2.x = Int(CGFloat(face.origin.x + face.size.width - 1) * scale) point2.y = Int(CGFloat(face.origin.y + face.size.height - 1) * scale) OCVImageOperation.rectangle(onSource: image, from: point1, to: point2, withColor: color, thickness: 1, lineType: 8, shift: 0) let smallImageROI = smallImage.submatrix(with: face) faceImages.append(smallImageROI.clone()) i += 1 } self.faceImgs = faceImages } } ================================================ FILE: LegoCV/FaceDetection/Recognition/FaceRecognizer.swift ================================================ // // FaceRecognizer.swift // LegoCV // // Created by Dal Rupnik on 23/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // import UIKit class FaceRecognizer: NSObject { } ================================================ FILE: LegoCV/FaceDetection/View Controllers/FaceRecognitionVC.swift ================================================ // // FaceRecognitionVC.swift // LegoCV // // Created by Dal Rupnik on 23/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // import UIKit class FaceRecognitionVC: UIViewController { override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } /* // MARK: - Navigation // In a storyboard-based application, you will often want to do a little preparation before navigation override func prepare(for segue: UIStoryboardSegue, sender: Any?) { // Get the new view controller using segue.destinationViewController. // Pass the selected object to the new view controller. } */ } ================================================ FILE: LegoCV/FaceDetection/View Controllers/LiveCameraVC.swift ================================================ // // LiveCameraVC.swift // LegoCV // // Created by Dal Rupnik on 23/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // import UIKit class LiveCameraVC: UIViewController { @IBOutlet weak var cameraView : UIImageView! var faceDetector : FaceDetector! override func viewDidLoad() { super.viewDidLoad() faceDetector = FaceDetector(imageView: cameraView, scale: 2.0) } override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) faceDetector.startCapture() } override func viewWillDisappear(_ animated: Bool) { super.viewWillDisappear(animated) faceDetector.stopCapture() } } ================================================ FILE: LegoCV/LegoCV/Info.plist ================================================ CFBundleDevelopmentRegion en CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleName $(PRODUCT_NAME) CFBundlePackageType FMWK CFBundleShortVersionString 1.0.0 CFBundleVersion $(CURRENT_PROJECT_VERSION) NSPrincipalClass ================================================ FILE: LegoCV/LegoCV/LegoCV.h ================================================ // // LegoCV.h // LegoCV // // Created by Dal Rupnik on 14/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // @import Foundation; //! Project version number for LegoCV. FOUNDATION_EXPORT double LegoCVVersionNumber; //! Project version string for LegoCV. FOUNDATION_EXPORT const unsigned char LegoCVVersionString[]; // In this header, you should import all the public headers of your framework using statements like #import #if __has_include("OCVCore.h") #import "OCVCore.h" #endif #if __has_include("OCVImageProcessing.h") #import "OCVImageProcessing.h" #endif #if __has_include("OCVVideo.h") #import "OCVVideo.h" #endif ================================================ FILE: LegoCV/LegoCV/Wrapper/Aruco/OCVCharucoBoard.h ================================================ // // OCVCharucoBoard.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVCharucoBoard : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Aruco/OCVCharucoBoard.m ================================================ // // OCVCharucoBoard.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVCharucoBoard.h" @implementation OCVCharucoBoard @end ================================================ FILE: LegoCV/LegoCV/Wrapper/BgSegm/OCVBackgroundSubtractorGMG.h ================================================ // // OCVBackgroundSubtractorGMG.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVBackgroundSubtractorGMG : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/BgSegm/OCVBackgroundSubtractorGMG.m ================================================ // // OCVBackgroundSubtractorGMG.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVBackgroundSubtractorGMG.h" @implementation OCVBackgroundSubtractorGMG @end ================================================ FILE: LegoCV/LegoCV/Wrapper/BgSegm/OCVBackgroundSubtractorMOG.h ================================================ // // OCVBackgroundSubtractorMOG.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVBackgroundSubtractorMOG : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/BgSegm/OCVBackgroundSubtractorMOG.m ================================================ // // OCVBackgroundSubtractorMOG.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVBackgroundSubtractorMOG.h" @implementation OCVBackgroundSubtractorMOG @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Core/Algorithms/OCVLDA.h ================================================ // // OCVLDA.h // LegoCV // // Created by Dal Rupnik on 07/03/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" #import "OCVInputArrayable.h" #import "OCVMat.h" NS_ASSUME_NONNULL_BEGIN /*! * Discriminant Analysis */ @interface OCVLDA : OCVObject @property (nonatomic, readonly) OCVMat *eigenVectors; @property (nonatomic, readonly) OCVMat *eigenValues; - (instancetype)initWithNumberOfComponents:(NSInteger)numberOfComponents; - (instancetype)initWithSource:(NSArray *)source labels:(id)labels; - (instancetype)initWithSource:(NSArray *)source labels:(id)labels numberOfComponents:(NSInteger)numberOfComponents; // // TODO: Serializable implementation // - (void)computeWithSource:(NSArray *)source labels:(id)labels; - (OCVMat *)projectWithSource:(id)source; - (OCVMat *)reconstructWithSource:(id)source; + (OCVMat *)subspaceProjectWithW:(id)w mean:(id)mean source:(id)source; + (OCVMat *)subspaceReconstructWithW:(id)w mean:(id)mean source:(id)source; @end NS_ASSUME_NONNULL_END ================================================ FILE: LegoCV/LegoCV/Wrapper/Core/Algorithms/OCVLDA.mm ================================================ // // OCVLDA.mm // LegoCV // // Created by Dal Rupnik on 07/03/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVLDA.h" @implementation OCVLDA @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Core/Algorithms/OCVPCA.h ================================================ // // OCVPCA.h // LegoCV // // Created by Dal Rupnik on 06/03/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" #import "OCVInputArrayable.h" #import "OCVOutputArrayable.h" #import "OCVMat.h" /*! * Reference type: cv::PCA Flags */ typedef NS_OPTIONS(NSInteger, OCVPCAFlags) { OCVPCAFlagDataAsRow = 0, //!< indicates that the input samples are stored as matrix rows OCVPCAFlagDataAsColumn = 1, //!< indicates that the input samples are stored as matrix columns OCVPCAFlagUseAvg = 2 }; NS_ASSUME_NONNULL_BEGIN /*! * Principal Component Analysis */ @interface OCVPCA : OCVObject @property (nonatomic, readonly) OCVMat* eigenVectors; @property (nonatomic, readonly) OCVMat* eigenValues; @property (nonatomic, readonly) OCVMat* mean; #pragma mark - Initialization - (instancetype)initWithData:(id)data mean:(id)mean flags:(OCVPCAFlags)flags maxComponents:(NSInteger)maxComponents; - (instancetype)initWithData:(id)data mean:(id)mean flags:(OCVPCAFlags)flags retainedVariance:(double)retainedVariance; #pragma mark - Public Methods - (OCVPCA *)performWithData:(id)data mean:(id)mean flags:(OCVPCAFlags)flags maxComponents:(NSInteger)maxComponents; - (OCVPCA *)performWithData:(id)data mean:(id)mean flags:(OCVPCAFlags)flags retainedVariance:(double)retainedVariance; - (OCVMat *)projectWithVector:(id)vector; - (void)projectWithVector:(id)vector toDestination:(id)destination; - (OCVMat *)backProjectWithVector:(id)vector; - (void)backProjectWithVector:(id)vector toDestination:(id)destination; // // TODO: Implement OCV FileStorage and OCV FileNode, for serialization // - (void)writeToPath:(NSString *)path; - (void)loadFrompath:(NSString *)path; @end NS_ASSUME_NONNULL_END ================================================ FILE: LegoCV/LegoCV/Wrapper/Core/Algorithms/OCVPCA.mm ================================================ // // OCVPCA.mm // LegoCV // // Created by Dal Rupnik on 06/03/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVPCA.h" @implementation OCVPCA @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Core/Algorithms/OCVRandomGenerator.h ================================================ // // OCVRandomGenerator.h // LegoCV // // Created by Dal Rupnik on 04/03/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" #import "OCVInputArrayable.h" #import "OCVOutputArrayable.h" #import "OCVInputOutputArrayable.h" #import "OCVGeometry.h" #import "OCVTypes.h" typedef NS_ENUM(NSInteger, OCVRandomType) { OCVRandomTypeUniform = 0, OCVRandomTypeNormal = 1, }; /*! * cv::RNG */ @interface OCVRandomGenerator : OCVObject @property (nonatomic, assign) unsigned long long state; #pragma mark - Initialization - (instancetype)initWithState:(unsigned long long)state; #pragma mark - Public Methods - (char)nextChar; - (unsigned char)nextUnsignedChar; - (short)nextShort; - (unsigned short)nextUnsignedShort; - (int)nextInt; - (unsigned int)nextUnsignedInt; - (unsigned long long)nextUnsignedLong; - (float)nextFloat; - (double)nextDouble; - (int)uniformWithLower:(int)lower upper:(int)upper; - (float)uniformFloatWithLower:(float)lower upper:(float)upper; - (double)uniformDoubleWithLower:(double)lower upper:(double)upper; - (void)fillSource:(id)source type:(OCVRandomType)type distributionA:(id)distributionA distributionB:(id)distributionB; - (void)fillSource:(id)source type:(OCVRandomType)type distributionA:(id)distributionA distributionB:(id)distributionB saturateRange:(BOOL)saturateRange; - (double)gaussianForSigma:(double)sigma; /*! * cv::randShuffle() * * @note: While OpenCV provides a static method here for randShuffle, this is an instance method, since it requires random generator object. */ - (void)randShuffleToDestination:(id)destination; - (void)randShuffleToDestination:(id)destination iterationFactor:(double)iterationFactor; #pragma mark - Class Methods /*! * cv::theRNG() */ + (instancetype)defaultGenerator; /*! * cv::setRNGSeed() */ + (void)setSeed:(NSInteger)seed; /*! * cv::randu() */ + (void)randUniformToDestination:(id)destination withLowBoundary:(id)lowBoundary withHighBoundary:(id)highBoundary; /*! * cv::randn() */ + (void)randNormallyToDestination:(id)destination mean:(id)mean standardDeviation:(id)standardDeviation; @end /*! * cv::RNG_MT19937 */ @interface OCVMersenneTwisterRandomGenerator : OCVRandomGenerator - (void)seedWithState:(unsigned long long)state; @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Core/Algorithms/OCVRandomGenerator.mm ================================================ // // OCVRandomGenerator.mm // LegoCV // // Created by Dal Rupnik on 04/03/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVRandomGenerator.h" @implementation OCVRandomGenerator @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Core/Algorithms/OCVSVD.h ================================================ // // OCVSVD.h // LegoCV // // Created by Dal Rupnik on 06/03/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" #import "OCVInputArrayable.h" #import "OCVOutputArrayable.h" #import "OCVMat.h" /*! * Reference type: cv::PCA Flags */ typedef NS_OPTIONS(NSInteger, OCVSVDFlags) { OCVSVDModifyA = 0, OCVSVDNoUV = 1, OCVSVDFullUV = 4 }; NS_ASSUME_NONNULL_BEGIN /*! * Singular Value Decomposition */ @interface OCVSVD : OCVObject @property (nonatomic, strong) OCVMat* u; @property (nonatomic, strong) OCVMat* w; @property (nonatomic, strong) OCVMat* vt; - (instancetype)initWithSource:(id)source; - (instancetype)initWithSource:(id)source flags:(OCVSVDFlags)flags; - (OCVSVD *)performWithSource:(id)source; - (OCVSVD *)performWithSource:(id)source flags:(OCVSVDFlags)flags; + (void)computeWithSource:(id)source w:(id)w u:(id)u vt:(id)vt; + (void)computeWithSource:(id)source w:(id)w u:(id)u vt:(id)vt flags:(OCVSVDFlags)flags; + (void)computeWithSource:(id)source w:(id)w; + (void)computeWithSource:(id)source w:(id)w flags:(OCVSVDFlags)flags; + (void)backSubstitutionWithW:(id)w u:(id)u vt:(id)vt rightHandSide:(id)rightHandSide toDestination:(id)destination; + (void)solveZWithSource:(id)source toDestination:(id)destination; + (void)backSubstitutionWithRightHandSide:(id)rightHandSide toDestination:(id)destination; @end NS_ASSUME_NONNULL_END ================================================ FILE: LegoCV/LegoCV/Wrapper/Core/Algorithms/OCVSVD.mm ================================================ // // OCVSVD.mm // LegoCV // // Created by Dal Rupnik on 06/03/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVSVD.h" @implementation OCVSVD @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Core/Base/OCVAlgorithm.h ================================================ // // OCVAlgorithm.h // LegoCV // // Created by Dal Rupnik on 04/03/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVAlgorithm : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Core/Base/OCVAlgorithm.m ================================================ // // OCVAlgorithm.m // LegoCV // // Created by Dal Rupnik on 04/03/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVAlgorithm.h" @implementation OCVAlgorithm @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Core/Base/OCVArrayables.h ================================================ // // OCVArrayables.h // LegoCV // // Created by Dal Rupnik on 18/03/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #ifndef OCVArrayables_h #define OCVArrayables_h #import "OCVInputArrayable.h" #import "OCVOutputArrayable.h" #import "OCVInputOutputArrayable.h" #endif /* OCVData_h */ ================================================ FILE: LegoCV/LegoCV/Wrapper/Core/Base/OCVComplex.h ================================================ // // OCVComplex.h // LegoCV // // Created by Dal Rupnik on 16/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import @interface OCVComplex : NSObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Core/Base/OCVComplex.m ================================================ // // OCVComplex.m // LegoCV // // Created by Dal Rupnik on 16/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVComplex.h" @implementation OCVComplex @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Core/Base/OCVEdges.h ================================================ // // OCVEdgs.h // LegoCV // // Created by Dal Rupnik on 04/03/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #ifndef OCVEdges_h #define OCVEdges_h typedef struct OCVEdges { NSInteger top, left, bottom, right; } OCVEdges; #endif /* OCVEdges_h */ ================================================ FILE: LegoCV/LegoCV/Wrapper/Core/Base/OCVFormatter.h ================================================ // // OCVFormatter.h // LegoCV // // Created by Dal Rupnik on 04/03/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVFormatter : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Core/Base/OCVFormatter.m ================================================ // // OCVFormatter.m // LegoCV // // Created by Dal Rupnik on 04/03/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVFormatter.h" @implementation OCVFormatter @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Core/Base/OCVGeometry.h ================================================ // // OCVGeometry.h // LegoCV // // Created by Dal Rupnik on 30/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #ifndef OCVGeometry_h #define OCVGeometry_h #import "OCVScalar.h" #import "OCVPoint.h" #import "OCVSize.h" #import "OCVRect.h" #endif ================================================ FILE: LegoCV/LegoCV/Wrapper/Core/Base/OCVInputArray.h ================================================ // // OCVInputArray.h // LegoCV // // Created by Dal Rupnik on 24/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVReferenceObject.h" #import "OCVGeometry.h" typedef NS_ENUM(NSInteger, OCVInputArrayType) { OCVInputArrayTypeMat = 65536, OCVInputArrayTypeExpression = 393216 }; @class OCVMat; @interface OCVInputArray : OCVReferenceObject #pragma mark - Public Properties @property (nonatomic, readonly) OCVInputArrayType type; @property (nonatomic, readonly) OCVSize size; @property (nonatomic, readonly) NSInteger channels; @property (nonatomic, readonly) NSInteger depth; @property (nonatomic, readonly) NSInteger dims; @property (nonatomic, readonly) BOOL isEmpty; @property (nonatomic, readonly) BOOL isMat; #pragma mark - Initialization - (void)setup; #pragma mark - Public Methods - (NSInteger)channelsWithIndex:(NSInteger)index; - (NSInteger)depthWithIndex:(NSInteger)index; - (NSInteger)dimsWithIndex:(NSInteger)index; - (OCVMat *)mat; - (OCVMat *)matWithIndex:(NSInteger)index; #pragma mark - Static Factory Methods @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Core/Base/OCVInputArray.mm ================================================ // // OCVInputArray.mm // LegoCV // // Created by Dal Rupnik on 24/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVInputArray+Private.h" #import "OCVInputArray.h" #import "OCVMatDataAllocator+Private.h" #import "OCVMat.h" @interface OCVInputArray () { cv::_InputArray *_arrayReference; } @end @implementation OCVInputArray - (cv::_InputArray *)arrayReference { return _arrayReference; } - (void)setArrayReference:(cv::_InputArray *)arrayReference { _arrayReference = arrayReference; } - (cv::_InputArray *)_input { [self setup]; return self.arrayReference; } - (NSInteger)channels { return [self channelsWithIndex:-1]; } - (NSInteger)depth { return [self depthWithIndex:-1]; } - (NSInteger)dims { return [self dimsWithIndex:-1]; } #pragma mark - Initialization - (instancetype)init { [NSException raise:@"InitNotImplemented" format:@"Direct initialization not supported."]; return nil; } - (void)dealloc { if (_arrayReference != NULL) { free(_arrayReference); } _arrayReference = NULL; } #pragma mark - Public Methods - (NSInteger)channelsWithIndex:(NSInteger)index { return self._input->channels((int)index); } - (NSInteger)depthWithIndex:(NSInteger)index { return self._input->depth((int)index); } - (NSInteger)dimsWithIndex:(NSInteger)index { return self._input->dims((int)index); } - (OCVMat *)mat { return [self matWithIndex:-1]; } - (OCVMat *)matWithIndex:(NSInteger)index { cv::Mat mat = self._input->getMat((int)index); return [[OCVMat alloc] initWithMatInstance:&mat]; } #pragma mark - Protected Methods - (void)setup { if ([self.object isKindOfClass:[OCVMatDataAllocator class]]) { cv::Mat *mat = [self.object source]; _arrayReference = new cv::_InputArray(*mat); } } #pragma mark - Factory Methods @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Core/Base/OCVInputArrayable.h ================================================ // // OCVInputArrayable.h // LegoCV // // Created by Dal Rupnik on 24/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVInputArray.h" @protocol OCVInputArrayable @property (nonatomic, readonly) OCVInputArray *input; @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Core/Base/OCVInputOutputArray.h ================================================ // // OCVInputOutputArray.h // LegoCV // // Created by Dal Rupnik on 24/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVOutputArray.h" @interface OCVInputOutputArray : OCVOutputArray @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Core/Base/OCVInputOutputArray.mm ================================================ // // OCVInputOutputArray.m // LegoCV // // Created by Dal Rupnik on 24/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVMatDataAllocator+Private.h" #import "OCVInputOutputArray.h" #import "OCVInputOutputArray+Private.h" #import "OCVInputArray+Private.h" @implementation OCVInputOutputArray - (cv::_InputOutputArray *)_inputOutput { [self setup]; return (cv::_InputOutputArray *)self.arrayReference; } - (void)setup { if ([self.object isKindOfClass:[OCVMatDataAllocator class]]) { cv::Mat *mat = [self.object source]; self.arrayReference = new cv::_InputOutputArray(*mat); } } @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Core/Base/OCVInputOutputArrayable.h ================================================ // // OCVInputOutputArrayable.h // LegoCV // // Created by Dal Rupnik on 24/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVInputOutputArray.h" @protocol OCVInputOutputArrayable @property (nonatomic, readonly) OCVInputOutputArray *inputOutput; @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Core/Base/OCVOutputArray.h ================================================ // // OCVOutputArray.h // LegoCV // // Created by Dal Rupnik on 24/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVInputArray.h" @interface OCVOutputArray : OCVInputArray @property (nonatomic, readonly) BOOL isFixedSize; @property (nonatomic, readonly) BOOL isFixedType; @property (nonatomic, readonly) BOOL isNeeded; @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Core/Base/OCVOutputArray.mm ================================================ // // OCVOutputArray.m // LegoCV // // Created by Dal Rupnik on 24/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVMatDataAllocator+Private.h" #import "OCVOutputArray.h" #import "OCVInputArray+Private.h" @implementation OCVOutputArray - (cv::_OutputArray *)_output { [self setup]; return (cv::_OutputArray *)self.arrayReference; } - (void)setup { if ([self.object isKindOfClass:[OCVMatDataAllocator class]]) { cv::Mat *mat = [self.object source]; self.arrayReference = new cv::_OutputArray(*mat); } } @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Core/Base/OCVOutputArrayable.h ================================================ // // OCVOutputArrayable.h // LegoCV // // Created by Dal Rupnik on 24/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVOutputArray.h" @protocol OCVOutputArrayable @property (nonatomic, readonly) OCVOutputArray *output; @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Core/Base/OCVPoint.h ================================================ // // OCVPoint.h // LegoCV // // Created by Dal Rupnik on 24/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import /*! * Reference type: cv::Point, cv::Point2i, cv::Point_ */ typedef struct OCVPoint { NSInteger x; NSInteger y; } OCVPoint; /*! * Reference type: cv::Point2f, cv::Point_ */ typedef struct OCVPoint2f { float x; float y; } OCVPoint2f; ================================================ FILE: LegoCV/LegoCV/Wrapper/Core/Base/OCVRect.h ================================================ // // OCVRect.h // LegoCV // // Created by Dal Rupnik on 22/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import #import "OCVPoint.h" #import "OCVSize.h" typedef struct OCVRect { OCVPoint origin; OCVSize size; } OCVRect; /*! * Objective-C class immutable wrapper for OCVRect struct */ @interface OCVRectValue : NSObject @property (nonatomic, readonly) OCVRect rect; - (instancetype)initWithRect:(OCVRect)rect; @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Core/Base/OCVRect.m ================================================ // // OCVRect.m // LegoCV // // Created by Dal Rupnik on 24/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVRect.h" @interface OCVRectValue () @property (nonatomic, readwrite, assign) OCVRect rect; @end @implementation OCVRectValue - (instancetype)initWithRect:(OCVRect)rect { self = [super init]; if (self) { self.rect = rect; } return self; } @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Core/Base/OCVScalar.h ================================================ // // OCVScalar.h // LegoCV // // Created by Dal Rupnik on 30/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import typedef struct OCVScalar { double value[4]; } OCVScalar; OCVScalar OCVScalarRGB(double r, double g, double b) CF_SWIFT_NAME(OCVScalar.init(r:g:b:)); ================================================ FILE: LegoCV/LegoCV/Wrapper/Core/Base/OCVScalar.m ================================================ // // OCVScalar.m // LegoCV // // Created by Dal Rupnik on 30/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVScalar.h" OCVScalar OCVScalarRGB(double r, double g, double b) { OCVScalar scalar; scalar.value[0] = r; scalar.value[1] = g; scalar.value[2] = b; scalar.value[3] = 0.0; return scalar; } ================================================ FILE: LegoCV/LegoCV/Wrapper/Core/Base/OCVSize.h ================================================ // // OCVSize.h // LegoCV // // Created by Dal Rupnik on 16/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import typedef struct OCVSize { NSInteger width; NSInteger height; } OCVSize; ================================================ FILE: LegoCV/LegoCV/Wrapper/Core/Base/OCVTypes.h ================================================ // // OCVTypes.h // LegoCV // // Created by Dal Rupnik on 16/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVEdges.h" typedef NS_ENUM(NSInteger, OCVDepthType) { OCVDepthTypeDefault = -1, OCVDepthTypeCv8U = 0, OCVDepthTypeCv8S = 1, OCVDepthTypeCv16U = 2, OCVDepthTypeCv16S = 3, OCVDepthTypeCv32S = 4, OCVDepthTypeCv32F = 5, OCVDepthTypeCv64F = 6 }; #pragma mark - Types from base.hpp /*! * Reference type: cv::DecompTypes */ typedef NS_ENUM(NSInteger, OCVDecompositionType) { OCVDecompositionTypeLU = 0, OCVDecompositionTypeSVD = 1, OCVDecompositionTypeEIG = 2, OCVDecompositionTypeCholesky = 3, OCVDecompositionTypeQR = 4, OCVDecompositionTypeNormal = 16 }; /*! * Reference type: cv::BorderTypes */ typedef NS_ENUM(NSInteger, OCVBorderType) { OCVBorderTypeConstant = 0, //!< `iiiiii|abcdefgh|iiiiiii` with some specified `i` OCVBorderTypeReplicate = 1, //!< `aaaaaa|abcdefgh|hhhhhhh` OCVBorderTypeReflect = 2, //!< `fedcba|abcdefgh|hgfedcb` OCVBorderTypeWrap = 3, //!< `cdefgh|abcdefgh|abcdefg` OCVBorderTypeReflect101 = 4, //!< `gfedcb|abcdefgh|gfedcba` OCVBorderTypeTransparent = 5, //!< `uvwxyz|absdefgh|ijklmno` OCVBorderTypeDefault = OCVBorderTypeReflect101, //!< same as OCVBorderTypeReflect101 OCVBorderTypeIsolated = 16 //!< do not look outside of ROI }; /*! * Reference type: cv::NormTypes */ typedef NS_ENUM(NSInteger, OCVNormType) { OCVNormTypeINF = 1, OCVNormTypeL1 = 2, OCVNormTypeL2 = 4, OCVNormTypeL2SQR = 5, OCVNormTypeHamming = 6, OCVNormTypeHamming2 = 7, OCVNormTypeMask = 7, OCVNormTypeRelative = 8, //!< flag OCVNormTypeMinMax = 32 //!< flag }; /*! * Reference type: cv::CmpTypes */ typedef NS_ENUM(NSInteger, OCVCompareType) { OCVCompareTypeEqual = 0, //!< src1 is equal to src2. OCVCompareTypeGreater = 1, //!< src1 is greater than src2. OCVCompareTypeGreaterOrEqual = 2, //!< src1 is greater than or equal to src2. OCVCompareTypeLess = 3, //!< src1 is less than src2. OCVCompareTypeLessOrEqual = 4, //!< src1 is less than or equal to src2. OCVCompareTypeNotEqual = 5 //!< src1 is unequal to src2. }; /*! * Reference type: cv::GemmFlags */ typedef NS_OPTIONS(NSInteger, OCVGemmFlags) { OCVGemmFlag1T = 1, //!< transposes src1 OCVGemmFlag2T = 2, //!< transposes src2 OCVGemmFlag3T = 4 //!< transposes src3 }; /*! * Reference type: cv::DftFlags */ typedef NS_OPTIONS(NSInteger, OCVTransformFlags) { OCVTransformInverse = 1, OCVTransformScale = 2, OCVTransformRows = 4, OCVTransformComplexOutput = 16, OCVTransformRealOutput = 32, }; #pragma mark - Types from core.hpp /*! * Reference type: cv::KmeansFlags */ typedef NS_OPTIONS(NSInteger, OCVKMeansTypes) { OCVKMeansTypeRandomCenters = 0, OCVKMeansPPCenters = 2, OCVKMeansUseInitialLabels = 1 }; /*! * Reference type: cv::LineTypes */ typedef NS_ENUM(NSInteger, OCVLineType) { OCVLineTypeFilled = -1, OCVLineTypeLine4 = 4, //!< 4-connected line OCVLineTypeLine8 = 8, //!< 8-connected line OCVLineTypeLineAA = 16 //!< antialiased line }; /*! * Reference type: cv::HersheyFonts */ typedef NS_ENUM(NSInteger, OCVHersheyFont) { OCVHersheyFontSimplex = 0, //!< normal size sans-serif font OCVHersheyFontPlain = 1, //!< small size sans-serif font OCVHersheyFontDuplex = 2, //!< normal size sans-serif font (more complex than FONT_HERSHEY_SIMPLEX) OCVHersheyFontComplex = 3, //!< normal size serif font OCVHersheyFontTriplex = 4, //!< normal size serif font (more complex than FONT_HERSHEY_COMPLEX) OCVHersheyFontComplexSmall = 5, //!< smaller version of FONT_HERSHEY_COMPLEX OCVHersheyFontScriptSimplex = 6, //!< hand-writing style font OCVHersheyFontScriptComplex = 7, //!< more complex variant of FONT_HERSHEY_SCRIPT_SIMPLEX OCVHersheyFontItalic = 16 //!< flag for italic font }; /*! * Reference type: cv::ReduceTypes */ typedef NS_ENUM(NSInteger, OCVReduceType) { OCVReduceTypeSum = 0, //!< the output is the sum of all rows/columns of the matrix. OCVReduceTypeAvg = 1, //!< the output is the mean vector of all rows/columns of the matrix. OCVReduceTypeMax = 2, //!< the output is the maximum (column/row-wise) of all rows/columns of the matrix. OCVReduceTypeMin = 3 //!< the output is the minimum (column/row-wise) of all rows/columns of the matrix. }; /*! * Reference type: core.hpp cv::flip() function codes */ typedef NS_ENUM(NSInteger, OCVFlipCode) { OCVFlipCodeXAxis = 0, OCVFlipCodeYAxis = 1, OCVFlipCodeBoth = -1 }; /*! * Reference type: cv::RotateFlags */ typedef NS_OPTIONS(NSInteger, OCVRotationTypes) { OCVRotationType90Clockwise = 0, //Rotate 90 degrees clockwise OCVRotationType180 = 1, //Rotate 180 degrees clockwise OCVRotationType90CounterClockwise = 2, //Rotate 270 degrees clockwise }; /*! * Reference type: cv::SortFlags */ typedef NS_OPTIONS(NSInteger, OCVSortTypes) { OCVSortTypeEveryRow = 0, //!< each matrix row is sorted independently OCVSortTypeEveryColumn = 1, //!< each matrix column is sorted //!< independently; this flag and the previous one are //!< mutually exclusive. OCVSortTypeAscending = 0, //!< each matrix row is sorted in the ascending //!< order. OCVSortTypeDescending = 16 //!< each matrix row is sorted in the //!< descending order; this flag and the previous one are also //!< mutually exclusive. }; /*! * Reference type: cv::CovarFlags */ typedef NS_OPTIONS(NSInteger, OCVCovarTypes) { OCVCovarTypeScrambled = 0, OCVCovarTypeNormal = 1, OCVCovarTypeUseAvg = 2, OCVCovarTypeScale = 4, OCVCovarTypeRows = 8, OCVCovarTypeCols = 16 }; ================================================ FILE: LegoCV/LegoCV/Wrapper/Core/Base/OCVVector.h ================================================ // // OCVVector.h // LegoCV // // Created by Dal Rupnik on 04/03/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" /*! * Custom OpenCV vector of data (wraps std::vector) */ @interface OCVVector : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Core/Base/OCVVector.m ================================================ // // OCVVector.m // LegoCV // // Created by Dal Rupnik on 04/03/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVVector.h" @implementation OCVVector @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Core/Mat/OCVMat.h ================================================ // // OCVMat.h // LegoCV // // Created by Dal Rupnik on 16/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVMatDataAllocator.h" #import "OCVTypes.h" #import "OCVGeometry.h" #import "OCVMatExpr.h" #import "OCVInputArrayable.h" #import "OCVOutputArrayable.h" #import "OCVInputOutputArrayable.h" NS_ASSUME_NONNULL_BEGIN /*! * OCVMat is a simple Objective-C wrapper around cv::Mat instance. */ @interface OCVMat : OCVMatDataAllocator #pragma mark - Public Properties @property (nonatomic, readonly) NSInteger rows; @property (nonatomic, readonly) NSInteger cols; @property (nonatomic, readonly) NSInteger dims; @property (nonatomic, readonly) BOOL isSubmatrix; @property (nonatomic, readonly) BOOL isContinuous; @property (nonatomic, readonly) BOOL isEmpty; @property (nonatomic, readonly) NSInteger total; @property (nonatomic, readonly) NSInteger elemSize; @property (nonatomic, readonly) NSInteger elemSize1; @property (nonatomic, readonly) OCVDepthType type; @property (nonatomic, readonly) NSInteger channels; @property (nonatomic, readonly) OCVSize size; #pragma mark - Initialization - (instancetype)initWithRows:(NSInteger)rows cols:(NSInteger)cols; - (instancetype)initWithRows:(NSInteger)rows cols:(NSInteger)cols type:(OCVDepthType)type channels:(NSInteger)channels; - (instancetype)initWithSize:(OCVSize)size type:(OCVDepthType)type channels:(NSInteger)channels; /*! * Creates a new deep copy of the matrix */ - (instancetype)initWithMat:(OCVMat *)mat; #pragma mark - Public Methods /*! * Creates a deep copy of the OCVMat underlying matrix, same as [self copy], as supported by NSCopying. */ - (OCVMat *)clone; /*! * Returns OCVMat with submatrix (data is not copied and remains in original matrix) */ - (OCVMat *)submatrixWithRect:(OCVRect)rect; #pragma mark - Operations - (OCVMat *)reshapeWithChannels:(NSInteger)channels; - (OCVMat *)reshapeWithChannels:(NSInteger)channels rows:(NSInteger)rows; - (OCVMat *)transpose; - (OCVMat *)inverse; - (OCVMat *)inverseWithMethod:(OCVDecompositionType)method; - (OCVMat *)multiplyWithArray:(id)inputArray; - (OCVMat *)multiplyWithArray:(id)inputArray scale:(double)scale; - (OCVMat *)crossWithArray:(id)inputArray; - (double)dotWithArray:(id)inputArray; #pragma mark - Public Factory Methods + (instancetype)zerosWithRows:(NSInteger)rows cols:(NSInteger)cols type:(OCVDepthType)type channels:(NSInteger)channels; + (instancetype)zerosWithSize:(OCVSize)size type:(OCVDepthType)type channels:(NSInteger)channels; + (instancetype)onesWithRows:(NSInteger)rows cols:(NSInteger)cols type:(OCVDepthType)type channels:(NSInteger)channels; + (instancetype)onesWithSize:(OCVSize)size type:(OCVDepthType)type channels:(NSInteger)channels; @end NS_ASSUME_NONNULL_END #pragma mark - iOS Extensions #import NS_ASSUME_NONNULL_BEGIN @interface OCVMat (UIKit) - (instancetype)initWithImage:(UIImage *)image; - (UIImage *)image; @end NS_ASSUME_NONNULL_END #import NS_ASSUME_NONNULL_BEGIN @interface OCVMat (CoreGraphics) - (instancetype)initWithImageRef:(CGImageRef)imageRef; - (instancetype)initWithCGSize:(CGSize)size; - (instancetype)initWithCGSize:(CGSize)size type:(OCVDepthType)type channels:(NSInteger)channels; /*! * Construct image reference and returns it */ - (CGImageRef)imageRef; NS_ASSUME_NONNULL_END @end #import NS_ASSUME_NONNULL_BEGIN @interface OCVMat (CoreVideo) - (instancetype)initWithPixelBuffer:(CVPixelBufferRef)buffer; @end NS_ASSUME_NONNULL_END ================================================ FILE: LegoCV/LegoCV/Wrapper/Core/Mat/OCVMat.mm ================================================ // // OCVMat.mm // LegoCV // // Created by Dal Rupnik on 16/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVGeometry+Private.h" #import "OCVMatDataAllocator+Private.h" #import "OCVInputArray+Private.h" #import "OCVOutputArray.h" #import "OCVInputOutputArray.h" #import "OCVMat.h" @interface OCVMat () // A reference to output array proxy, to guarantee a single one is passed. @property (nonatomic, strong) OCVInputOutputArray* inputOutput; @end @implementation OCVMat #pragma mark - Private Properties #pragma mark - Public Properties - (BOOL)isSubmatrix { return self.source->isSubmatrix(); } - (NSInteger)rows { return self.source->rows; } - (NSInteger)cols { return self.source->cols; } - (NSInteger)channels { return self.source->channels(); } - (OCVDepthType)type { return (OCVDepthType)self.source->depth(); } - (OCVSize)size { return convertSize(self.source->size()); } - (NSString *)description { return [NSString stringWithFormat:@"OCVMat: [%ld, %ld], channels: %ld, type: %ld]", (long)self.rows, (long)self.cols, (long)self.channels, (long)self.type]; } #pragma mark - Initialization - (instancetype)init { return [super initWithMatInstance:new cv::Mat()]; } - (instancetype)initWithSize:(OCVSize)size type:(OCVDepthType)type channels:(NSInteger)channels { return [self initWithRows:size.height cols:size.width type:type channels:channels]; } - (instancetype)initWithRows:(NSInteger)rows cols:(NSInteger)cols { return [self initWithRows:rows cols:cols type:OCVDepthTypeCv8U channels:4]; } - (instancetype)initWithRows:(NSInteger)rows cols:(NSInteger)cols type:(OCVDepthType)type channels:(NSInteger)channels { // Convert type to OpenCV type int cvType = (int)CV_MAKETYPE(type, channels); return [super initWithMatInstance:new cv::Mat((int)rows, (int)cols, cvType)]; } #pragma mark - Convenience Initialization - (instancetype)initWithMat:(OCVMat *)mat { cv::Mat *matSource = new cv::Mat(mat.source->clone()); return [self initWithMatInstance:matSource]; } - (instancetype)initWithPixelBuffer:(CVPixelBufferRef)buffer { cv::Mat mat = [self.class matFromBuffer:buffer]; return [self initWithMatInstance:&mat]; } - (instancetype)initWithImage:(UIImage *)image { cv::Mat mat = [self.class matFromImage:image]; return [self initWithMatInstance:&mat]; } - (instancetype)initWithImageRef:(CGImageRef)imageRef { cv::Mat mat = [self.class matFromImageRef:imageRef]; return [self initWithMatInstance:&mat]; } - (instancetype)initWithCGSize:(CGSize)size { return [self initWithCGSize:size type:OCVDepthTypeCv8U channels:4]; } - (instancetype)initWithCGSize:(CGSize)size type:(OCVDepthType)type channels:(NSInteger)channels { return [self initWithRows:(NSInteger)size.height cols:(NSInteger)size.width type:type channels:channels]; } #pragma mark - NSCopying - (instancetype)copyWithZone:(NSZone *)zone { return [[[self class] alloc] initWithMat:self]; } #pragma mark - Public Methods - (OCVMat *)clone { cv::Mat *mat = new cv::Mat(self.source->clone()); return [[OCVMat alloc] initWithMatInstance:mat]; } - (OCVMat *)submatrixWithRect:(OCVRect)rect { cv::Mat sourceMat = *self.source; cv::Mat mat = sourceMat(convertRect(rect)); return [[OCVMat alloc] initWithMatInstance:new cv::Mat(mat)]; } - (CGImageRef)imageRef { if (self.source == NULL) { return nil; } return [self.class imageRefFromMat:*(self.source)]; } - (UIImage *)image { CGImageRef imageRef = [self imageRef]; return [UIImage imageWithCGImage:imageRef]; } - (OCVMat *)reshapeWithChannels:(NSInteger)channels { return [self reshapeWithChannels:channels rows:0]; } - (OCVMat *)reshapeWithChannels:(NSInteger)channels rows:(NSInteger)rows { cv::Mat mat = self.source->reshape((int)channels, (int)rows); return [[OCVMat alloc] initWithMatInstance:new cv::Mat(mat)]; } - (OCVMat *)transpose { cv::Mat mat = self.source->t(); return [[OCVMat alloc] initWithMatInstance:new cv::Mat(mat)]; } - (OCVMat *)inverse { return [self inverseWithMethod:OCVDecompositionTypeLU]; } - (OCVMat *)inverseWithMethod:(OCVDecompositionType)method { cv::Mat mat = self.source->inv((int)method); return [[OCVMat alloc] initWithMatInstance:new cv::Mat(mat)]; } - (OCVMat *)multiplyWithArray:(id)inputArray { return [self multiplyWithArray:inputArray scale:1]; } - (OCVMat *)multiplyWithArray:(id)inputArray scale:(double)scale { cv::Mat mat = self.source->mul(*inputArray.input._input, scale); return [[OCVMat alloc] initWithMatInstance:new cv::Mat(mat)]; } - (OCVMat *)crossWithArray:(id)inputArray { cv::Mat mat = self.source->cross(*inputArray.input._input); return [[OCVMat alloc] initWithMatInstance:new cv::Mat(mat)]; } - (double)dotWithArray:(id)inputArray { return self.source->dot(*inputArray.input._input); } #pragma mark - OCVInputOutputArrayable - (OCVInputOutputArray *)inputOutput { if (!_inputOutput) { _inputOutput = [[OCVInputOutputArray alloc] initWithObject:self]; } return _inputOutput; } #pragma mark - OCVInputArrayable - (OCVInputArray *)input { return self.inputOutput; } #pragma mark - OCVOutputArrayable - (OCVOutputArray *)output { return self.inputOutput; } #pragma mark - Public Factory Methods + (instancetype)zerosWithSize:(OCVSize)size type:(OCVDepthType)type channels:(NSInteger)channels { return [self zerosWithRows:size.height cols:size.width type:type channels:channels]; } + (instancetype)zerosWithRows:(NSInteger)rows cols:(NSInteger)cols type:(OCVDepthType)type channels:(NSInteger)channels { int cvType = (int)CV_MAKETYPE(type, channels); cv::Mat mat = cv::Mat::zeros((int)rows, (int)cols, cvType); return [[OCVMat alloc] initWithMatInstance:new cv::Mat(mat)]; } + (instancetype)onesWithSize:(OCVSize)size type:(OCVDepthType)type channels:(NSInteger)channels { return [self onesWithRows:size.height cols:size.width type:type channels:channels]; } + (instancetype)onesWithRows:(NSInteger)rows cols:(NSInteger)cols type:(OCVDepthType)type channels:(NSInteger)channels { int cvType = (int)CV_MAKETYPE(type, channels); cv::Mat mat = cv::Mat::ones((int)rows, (int)cols, cvType); return [[OCVMat alloc] initWithMatInstance:new cv::Mat(mat)]; } #pragma mark - Private Utility Methods + (cv::Mat)matFromImageRef:(CGImageRef)imageRef { CGColorSpaceRef colorSpace = CGImageGetColorSpace(imageRef); size_t cols = CGImageGetWidth(imageRef); size_t rows = CGImageGetHeight(imageRef); cv::Mat cvMat((int)rows, (int)cols, CV_8UC4); CGContextRef contextRef = CGBitmapContextCreate( cvMat.data, // Pointer to data cols, // Width of bitmap rows, // Height of bitmap 8, // Bits per component cvMat.step[0], // Bytes per row colorSpace, // Colorspace kCGImageAlphaNoneSkipLast|kCGBitmapByteOrderDefault // Bitmap info flags ); CGContextDrawImage(contextRef, CGRectMake(0, 0, cols, rows), imageRef); CGContextRelease(contextRef); CGColorSpaceRelease(colorSpace); return cvMat; } + (cv::Mat)matFromImage:(UIImage *)image { CGColorSpaceRef colorSpace = CGImageGetColorSpace(image.CGImage); CGFloat cols = image.size.width; CGFloat rows = image.size.height; cv::Mat cvMat(rows, cols, CV_8UC4); CGContextRef contextRef = CGBitmapContextCreate( cvMat.data, // Pointer to data cols, // Width of bitmap rows, // Height of bitmap 8, // Bits per component cvMat.step[0], // Bytes per row colorSpace, // Colorspace kCGImageAlphaNoneSkipLast|kCGBitmapByteOrderDefault // Bitmap info flags ); CGContextDrawImage(contextRef, CGRectMake(0, 0, cols, rows), image.CGImage); CGContextRelease(contextRef); CGColorSpaceRelease(colorSpace); return cvMat; } + (cv::Mat)matFromBuffer:(CVPixelBufferRef)buffer { size_t cols = CVPixelBufferGetWidth(buffer); size_t rows = CVPixelBufferGetHeight(buffer); cv::Mat cvMat((int)rows, (int)cols, CV_8UC4); // 8 bits per component, 4 channels (color channels + alpha) CVPixelBufferLockBaseAddress(buffer, 0); void *baseAddress = CVPixelBufferGetBaseAddress(buffer); size_t dataSize = CVPixelBufferGetDataSize(buffer); size_t targetDataSize = rows * cols * 4; if (dataSize >= targetDataSize) { std::memcpy(cvMat.data, baseAddress, targetDataSize); } CVPixelBufferUnlockBaseAddress(buffer, 0); return cvMat; } + (CGImageRef)imageRefFromMat:(cv::Mat)cvMat { NSData *data = [NSData dataWithBytes:cvMat.data length:cvMat.elemSize()*cvMat.total()]; CGColorSpaceRef colorSpace; CGBitmapInfo bitmapInfo; if (cvMat.elemSize() == 1) { colorSpace = CGColorSpaceCreateDeviceGray(); bitmapInfo = kCGImageAlphaNone | kCGBitmapByteOrderDefault; } else { colorSpace = CGColorSpaceCreateDeviceRGB(); bitmapInfo = kCGImageAlphaLast | kCGBitmapByteOrderDefault; } CGDataProviderRef provider = CGDataProviderCreateWithCFData((__bridge CFDataRef)data); CGImageRef imageRef = CGImageCreate( cvMat.cols, //width cvMat.rows, //height 8, //bits per component 8 * cvMat.elemSize(), //bits per pixel cvMat.step[0], //bytesPerRow colorSpace, //colorspace bitmapInfo, // bitmap info provider, //CGDataProviderRef NULL, //decode false, //should interpolate kCGRenderingIntentDefault //intent ); CGDataProviderRelease(provider); CGColorSpaceRelease(colorSpace); return imageRef; } @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Core/Mat/OCVMatDataAllocator.h ================================================ // // OCVMatDataAllocator.h // LegoCV // // Created by Dal Rupnik on 24/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVMatDataAllocator : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Core/Mat/OCVMatDataAllocator.mm ================================================ // // OCVMatDataAllocator.mm // LegoCV // // Created by Dal Rupnik on 24/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import #import "OCVMatDataAllocator.h" @interface OCVMatDataAllocator () { cv::Mat *source; } @end @implementation OCVMatDataAllocator - (cv::Mat *)source { return source; } - (instancetype)initWithMatInstance:(cv::Mat *)mat { self = [super init]; if (self) { self->source = mat; } return self; } - (void)dealloc { if (source) { free(source); } source = NULL; } @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Core/Mat/OCVMatExpr.h ================================================ // // OCVMatExpr.h // LegoCV // // Created by Dal Rupnik on 16/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import @interface OCVMatExpr : NSObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Core/Mat/OCVMatExpr.mm ================================================ // // OCVMatExpr.m // LegoCV // // Created by Dal Rupnik on 16/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVMatExpr.h" @implementation OCVMatExpr @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Core/Mat/OCVUMat.h ================================================ // // OCVUMat.h // LegoCV // // Created by Dal Rupnik on 04/03/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVUMat : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Core/Mat/OCVUMat.m ================================================ // // OCVUMat.m // LegoCV // // Created by Dal Rupnik on 04/03/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVUMat.h" @implementation OCVUMat @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Core/OCVCore.h ================================================ // // OCVCore.h // LegoCV // // Created by Dal Rupnik on 23/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #ifndef OCVCore_h #define OCVCore_h #import "OCVMat.h" #import "OCVOperation.h" #import "OCVInputArrayable.h" #import "OCVOutputArrayable.h" #import "OCVInputOutputArray.h" #import "OCVInputOutputArrayable.h" #import "OCVCascadeClassifier.h" #endif /* OCVCore_h */ ================================================ FILE: LegoCV/LegoCV/Wrapper/Core/Operations/OCVMinimumMaximum.h ================================================ // // OCVMinimumMaximum.h // LegoCV // // Created by Dal Rupnik on 04/03/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVGeometry.h" #import "OCVObject.h" @interface OCVMinimumMaximumLocation : OCVObject @property (nonatomic, assign) double minimumValue; @property (nonatomic, assign) double maximumValue; @property (nonatomic, assign) OCVPoint minimumLocation; @property (nonatomic, assign) OCVPoint maximumLocation; @end @interface OCVMinimumMaximumIndex : OCVObject @property (nonatomic, assign) double minimumValue; @property (nonatomic, assign) double maximumValue; @property (nonatomic, assign) NSInteger minimumIndex; @property (nonatomic, assign) NSInteger maximumIndex; @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Core/Operations/OCVMinimumMaximum.m ================================================ // // OCVMinimumMaximum.m // LegoCV // // Created by Dal Rupnik on 04/03/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVMinimumMaximum.h" ================================================ FILE: LegoCV/LegoCV/Wrapper/Core/Operations/OCVOperation+Bitwise.h ================================================ // // OCVOperation+Bitwise.h // LegoCV // // Created by Dal Rupnik on 04/03/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" #import "OCVInputArrayable.h" #import "OCVOutputArrayable.h" #import "OCVInputOutputArrayable.h" #import "OCVGeometry.h" #import "OCVTypes.h" #import "OCVOperation.h" NS_ASSUME_NONNULL_BEGIN /*! * Wraps bitwise operations defined in core.hpp */ @interface OCVOperation (Bitwise) /*! * cv::bitwise_and() */ + (void)bitwiseAndWithSource:(id)source1 withSource:(id)source2 toDestination:(id)destination; + (void)bitwiseAndWithSource:(id)source1 withSource:(id)source2 toDestination:(id)destination withMask:(id)mask; /*! * cv::bitwise_or() */ + (void)bitwiseOrWithSource:(id)source1 withSource:(id)source2 toDestination:(id)destination; + (void)bitwiseOrWithSource:(id)source1 withSource:(id)source2 toDestination:(id)destination withMask:(id)mask; /*! * cv::bitwise_xor() */ + (void)bitwiseXorWithSource:(id)source1 withSource:(id)source2 toDestination:(id)destination; + (void)bitwiseXorWithSource:(id)source1 withSource:(id)source2 toDestination:(id)destination withMask:(id)mask; /*! * cv::bitwise_not() */ + (void)bitwiseNotWithSource:(id)source toDestination:(id)destination; + (void)bitwiseNotWithSource:(id)source toDestination:(id)destination withMask:(id)mask; @end NS_ASSUME_NONNULL_END ================================================ FILE: LegoCV/LegoCV/Wrapper/Core/Operations/OCVOperation+Bitwise.mm ================================================ // // OCVOperation+Bitwise.mm // LegoCV // // Created by Dal Rupnik on 04/03/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVOperation+Bitwise.h" ================================================ FILE: LegoCV/LegoCV/Wrapper/Core/Operations/OCVOperation+Transform.h ================================================ // // OCVOperation+Transform.h // LegoCV // // Created by Dal Rupnik on 04/03/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" #import "OCVInputArrayable.h" #import "OCVOutputArrayable.h" #import "OCVInputOutputArrayable.h" #import "OCVGeometry.h" #import "OCVTypes.h" #import "OCVOperation.h" NS_ASSUME_NONNULL_BEGIN /*! * Wraps transform operations defined in core.hpp such as DFT and DCT */ @interface OCVOperation (Transform) /*! * cv::dft() */ + (BOOL)dftWithSource:(id)source toDestination:(id)destinatio; + (BOOL)dftWithSource:(id)source toDestination:(id)destination flags:(OCVTransformFlags)flags; + (BOOL)dftWithSource:(id)source toDestination:(id)destination flags:(OCVTransformFlags)flags nonZeroRows:(NSInteger)nonZeroRows; /*! * cv::idft() */ + (BOOL)idftWithSource:(id)source toDestination:(id)destinatio; + (BOOL)idftWithSource:(id)source toDestination:(id)destination flags:(OCVTransformFlags)flags; + (BOOL)idftWithSource:(id)source toDestination:(id)destination flags:(OCVTransformFlags)flags nonZeroRows:(NSInteger)nonZeroRows; /*! * cv::dct() */ + (BOOL)dctWithSource:(id)source toDestination:(id)destinatio; + (BOOL)dctWithSource:(id)source toDestination:(id)destination flags:(OCVTransformFlags)flags; + (BOOL)dctWithSource:(id)source toDestination:(id)destination flags:(OCVTransformFlags)flags nonZeroRows:(NSInteger)nonZeroRows; /*! * cv::idct() */ + (BOOL)idctWithSource:(id)source toDestination:(id)destinatio; + (BOOL)idctWithSource:(id)source toDestination:(id)destination flags:(OCVTransformFlags)flags; + (BOOL)idctWithSource:(id)source toDestination:(id)destination flags:(OCVTransformFlags)flags nonZeroRows:(NSInteger)nonZeroRows; /*! * cv::mulSpectrums() */ + (BOOL)multiplySpectrumsWithSource:(id)source1 withSource:(id)source2 toDestination:(id)destinatio; + (BOOL)multiplySpectrumsWithSource:(id)source1 withSource:(id)source2 toDestination:(id)destination flags:(OCVTransformFlags)flags; + (BOOL)multiplySpectrumsWithSource:(id)source1 withSource:(id)source2 toDestination:(id)destination flags:(OCVTransformFlags)flags conjugateSecond:(BOOL)conjugateSecond; /*! * cv::getOptimalDFTSize() */ + (NSInteger)optimalDFTSizeForVectorSize:(NSInteger)vectorSize; @end NS_ASSUME_NONNULL_END ================================================ FILE: LegoCV/LegoCV/Wrapper/Core/Operations/OCVOperation+Transform.mm ================================================ // // OCVOperation+Transform.mm // LegoCV // // Created by Dal Rupnik on 04/03/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVOperation+Transform.h" ================================================ FILE: LegoCV/LegoCV/Wrapper/Core/Operations/OCVOperation.h ================================================ // // OCVOperation.h // LegoCV // // Created by Dal Rupnik on 23/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" #import "OCVInputArrayable.h" #import "OCVOutputArrayable.h" #import "OCVInputOutputArrayable.h" #import "OCVGeometry.h" #import "OCVTypes.h" #import "OCVVector.h" #import "OCVUMat.h" #import "OCVMinimumMaximum.h" #import "OCVTermCriteria.h" NS_ASSUME_NONNULL_BEGIN /*! * Wraps operations defined in core.hpp */ @interface OCVOperation : OCVObject + (void)swapMat:(OCVMat *)a toMat:(OCVMat *)b; + (void)swapUMat:(OCVUMat *)a toUMat:(OCVUMat *)b; + (NSInteger)borderInterpolateWithPixel:(NSInteger)pixel ofLength:(NSInteger)length withBorderType:(OCVBorderType)borderType; /*! * cv::copyMakeBorder() */ + (OCVScalar)copyMakeBorderFromSource:(id)source toDestination:(id)destination withTop:(NSInteger)top withBottom:(NSInteger)bottom withLeft:(NSInteger)left withRight:(NSInteger)right withBorderType:(OCVBorderType)borderType; /*! * cv::copyMakeBorder() - Convenience method with custom struct */ + (OCVScalar)copyMakeBorderFromSource:(id)source toDestination:(id)destination withEdges:(OCVEdges)edges withBorderType:(OCVBorderType)borderType; #pragma mark - Basic operations /*! * cv::add() */ + (void)addSource:(id)source1 toSource:(id)source2 toDestination:(id)destination; + (void)addSource:(id)source1 toSource:(id)source2 toDestination:(id)destination withMask:(id)mask; + (void)addSource:(id)source1 toSource:(id)source2 toDestination:(id)destination withMask:(id)mask ofDepthType:(NSInteger)depthType; /*! * cv::subtract() */ + (void)subtractSource:(id)source1 fromSource:(id)source2 toDestination:(id)destination; + (void)subtractSource:(id)source1 fromSource:(id)source2 toDestination:(id)destination withMask:(id)mask; + (void)subtractSource:(id)source1 fromSource:(id)source2 toDestination:(id)destination withMask:(id)mask ofDepthType:(NSInteger)depthType; /*! * cv::multiply() */ + (void)multiplySource:(id)source1 withSource:(id)source2 toDestination:(id)destination; + (void)multiplySource:(id)source1 withSource:(id)source2 toDestination:(id)destination withScale:(double)scale; + (void)multiplySource:(id)source1 withSource:(id)source2 toDestination:(id)destination withScale:(double)scale ofDepthType:(NSInteger)depthType; /*! * cv::divide() */ + (void)divideSource:(id)source1 withSource:(id)source2 toDestination:(id)destination; + (void)divideSource:(id)source1 withSource:(id)source2 toDestination:(id)destination withScale:(double)scale; + (void)divideSource:(id)source1 withSource:(id)source2 toDestination:(id)destination withScale:(double)scale ofDepthType:(NSInteger)depthType; + (void)divideScale:(double)scale withSource:(id)source2 toDestination:(id)destination; + (void)divideScale:(double)scale withSource:(id)source2 toDestination:(id)destination ofDepthType:(NSInteger)depthType; /*! * cv::scaleAdd() */ + (void)scaleAddSource:(id)source1 withAlpha:(double)alpha withSource:(id)source2 toDestination:(id)destination; /*! * cv::addWeighted() */ + (void)addWeightedSource:(id)source1 withAlpha:(double)alpha withSource:(id)source2 withBeta:(double)beta withGamma:(double)gamma toDestination:(id)destination; + (void)addWeightedSource:(id)source1 withAlpha:(double)alpha withSource:(id)source2 withBeta:(double)beta withGamma:(double)gamma toDestination:(id)destination ofDepthType:(NSInteger)depthType; /*! * cv::convertScaleAbs() */ + (void)convertScaleAbsoluteWithSource:(id)source toDestination:(id)destination; + (void)convertScaleAbsoluteWithSource:(id)source toDestination:(id)destination withAlpha:(double)alpha; + (void)convertScaleAbsoluteWithSource:(id)source toDestination:(id)destination withAlpha:(double)alpha withBeta:(double)beta; /*! * cv::convertFp16() */ + (void)convertFp16Source:(id)source toDestination:(id)destination; /*! * cv::LUT() */ + (void)lookupTableTransformWithSource:(id)source withLookupTable:(id)lookupTable toDestination:(id)destination; /*! * cv::sum() */ + (OCVScalar)sumOfSource:(id)source; /*! * cv::countNonZero() */ + (NSInteger)countNonZeroInSource:(id)source; /*! * cv::findNonZero() */ + (void)findNonZeroInSource:(id)source toDestination:(id)destination; /*! * cv::mean() */ + (OCVScalar)meanOfSource:(id)source; + (OCVScalar)meanOfSource:(id)source withMask:(id)mask; /*! * cv::meanStdDev() */ + (void)meanStandardDeviationOfSource:(id)source withMean:(id)mean withStandardDeviation:(id)standardDeviation; + (void)meanStandardDeviationOfSource:(id)source withMean:(id)mean withStandardDeviation:(id)standardDeviation withMask:(id)mask; /*! * cv::norm() */ + (double)normOfSource:(id)source; + (double)normOfSource:(id)source withType:(OCVNormType)normType; + (double)normOfSource:(id)source withType:(OCVNormType)normType withMask:(id)mask; /*! * cv::PSNR() */ + (double)PSNROfSource:(id)source1 withSource:(id)source2; /*! * cv::batchDistance() */ + (void)batchDistanceOfSource:(id)source1 toSource:(id)source2 toDestination:(id)destination ofDepthType:(NSInteger)depthType toIndex:(id)index; + (void)batchDistanceOfSource:(id)source1 toSource:(id)source2 toDestination:(id)destination ofDepthType:(NSInteger)depthType toIndex:(id)index withNormType:(OCVNormType)normType; + (void)batchDistanceOfSource:(id)source1 toSource:(id)source2 toDestination:(id)destination ofDepthType:(NSInteger)depthType toIndex:(id)index withNormType:(OCVNormType)normType withK:(NSInteger)k; + (void)batchDistanceOfSource:(id)source1 toSource:(id)source2 toDestination:(id)destination ofDepthType:(NSInteger)depthType toIndex:(id)index withNormType:(OCVNormType)normType withK:(NSInteger)k withMask:(id)mask; + (void)batchDistanceOfSource:(id)source1 toSource:(id)source2 toDestination:(id)destination ofDepthType:(NSInteger)depthType toIndex:(id)index withNormType:(OCVNormType)normType withK:(NSInteger)k withMask:(id)mask withUpdate:(NSInteger)update; + (void)batchDistanceOfSource:(id)source1 toSource:(id)source2 toDestination:(id)destination ofDepthType:(NSInteger)depthType toIndex:(id)index withNormType:(OCVNormType)normType withK:(NSInteger)k withMask:(id)mask withUpdate:(NSInteger)update withCrosscheck:(BOOL)crosscheck; /*! * cv::normalize() */ + (void)normalizeWithSource:(id)source toDestination:(id)destination; + (void)normalizeWithSource:(id)source toDestination:(id)destination withAlpha:(double)alpha; + (void)normalizeWithSource:(id)source toDestination:(id)destination withAlpha:(double)alpha withBeta:(double)beta; + (void)normalizeWithSource:(id)source toDestination:(id)destination withAlpha:(double)alpha withBeta:(double)beta withNormType:(OCVNormType)normType; + (void)normalizeWithSource:(id)source toDestination:(id)destination withAlpha:(double)alpha withBeta:(double)beta withNormType:(OCVNormType)normType ofDepthType:(NSInteger)depthType; + (void)normalizeWithSource:(id)source toDestination:(id)destination withAlpha:(double)alpha withBeta:(double)beta withNormType:(OCVNormType)normType ofDepthType:(NSInteger)depthType withMask:(id)mask; /*! * cv::minMaxLoc() */ + (void)minimumMaximumLocationInSource:(id)source withMinValue:(double *)minValue withMaxValue:(double *)maxValue withMinLocation:(OCVPoint *)minLocation withMaxLocation:(OCVPoint *)maxLocation withMask:(id)mask; // Convenience of LegoCV + (OCVMinimumMaximumLocation *)minimumMaximumLocationInSource:(id)source; + (OCVMinimumMaximumLocation *)minimumMaximumLocationInSource:(id)source withMask:(id)mask; /*! * cv::minMaxIdx() */ + (void)minimumMaximumIndexInSource:(id)source withMinValue:(double *)minValue withMaxValue:(double *)maxValue withMaxValue:(double *)maxValue withMinIndex:(NSInteger *)minIndex withMaxIndex:(NSInteger *)maxIndex withMask:(id)mask; // Convenience of LegoCV + (OCVMinimumMaximumIndex *)minimumMaximumIndexInSource:(id)source; + (OCVMinimumMaximumIndex *)minimumMaximumIndexInSource:(id)source withMask:(id)mask; /*! * cv::reduce() */ + (void)reduceWithSource:(id)source toDestination:(id)destination withDimenstion:(NSInteger)dimension withReduceType:(OCVReduceType)reduceType; + (void)reduceWithSource:(id)source toDestination:(id)destination withDimenstion:(NSInteger)dimension withReduceType:(OCVReduceType)reduceType ofDepthType:(NSInteger)depthType; /*! * cv::merge() */ + (void)mergeWithSource:(OCVMat *)source withCount:(NSInteger)count toDestination:(id)destination; + (void)mergeWithSource:(NSArray *)source toDestination:(id)destination; /*! * cv::split() */ + (void)splitWithMat:(OCVMat *)source toMat:(OCVMat *)destination; + (void)splitWithSource:(id)source toDestination:(NSArray *)destination; /*! * cv::mixChannels() * * TODO: Maybe implement an options class as a parameter instead of passing pointers and also a Swift compatible replacement for std::vector. */ + (void)mixChannelsWithSource:(OCVMat *)mat withNumberOfSources:(NSInteger)numberOfSources toMat:(OCVMat *)destination withNumberOfDestinations:(NSInteger)numberOfDestinations fromTo:(NSInteger *)fromTo withNumberOfPairs:(NSInteger)pairs; + (void)mixChannelsWithSource:(NSArray *)source toDestination:(NSArray *)destination fromTo:(NSInteger *)fromTo withNumberOfPairs:(NSInteger)pairs; + (void)mixChannelsWithSource:(NSArray *)source toDestination:(NSArray *)destination fromToIndexes:(OCVVector *)fromToIndexes; /*! * cv::extractChannel() */ + (void)extractChannelFromSource:(id)source toDestination:(id)destination atIndexOfChannel:(NSInteger)indexOfChannel; /*! * cv::insertChannel() */ + (void)insertChannelFromSource:(id)source toDestination:(id)destination atIndexOfChannel:(NSInteger)indexOfChannel; /*! * cv::flip() */ + (void)flipWithSource:(id)source toDestination:(id)destination withFlipCode:(OCVFlipCode)flipCode; /*! * cv::rotate() */ + (void)rotateWithSource:(id)source toDestination:(id)destination withTypes:(OCVRotationTypes)types; /*! * cv::repeat() */ + (void)repeatWithSource:(id)source toDestination:(id)destination withNumberOfYAxis:(NSInteger)ny withNumberOfXAxis:(NSInteger)nx; + (OCVMat *)repeatWithSource:(OCVMat *)source withNumberOfYAxis:(NSInteger)ny withNumberOfXAxis:(NSInteger)nx; /*! * cv::hconcat() */ + (void)horizontalConcatenationWithSource:(OCVMat *)mat withNumberOfSources:(NSInteger)numberOfSources toDestination:(id)destination; + (void)horizontalConcatenationWithSource:(id)source1 withSource:(id)source2 toDestination:(id)destination; + (void)horizontalConcatenationWithSource:(NSArray *)source toDestination:(id)destination; /*! * cv::vconcat() */ + (void)verticalConcatenationWithSource:(OCVMat *)mat withNumberOfSources:(NSInteger)numberOfSources toDestination:(id)destination; + (void)verticalConcatenationWithSource:(id)source1 withSource:(id)source2 toDestination:(id)destination; + (void)verticalConcatenationWithSource:(NSArray *)source toDestination:(id)destination; #pragma mark - Other operations /*! * cv::absdiff() */ + (void)absoluteDifferenceWithSource:(id)source1 withSource:(id)source2 toDestination:(id)destination; /*! * cv::inRange() */ + (void)absoluteDifferenceWithSource:(id)source1 withLowerBoundary:(id)lowerBoundary withUpperBoundary:(id)upperBoundary toDestination:(id)destination; /*! * cv::compare() */ + (void)compareSource:(id)source1 withSource:(id)source2 toDestination:(id)destination withType:(OCVCompareType)type; /*! * cv::min() * * @note: OpenCV has separate methods for Mat and UMat classes, but this is handled in the implementation. */ + (void)minWithSource:(id)source1 withSource:(id)source2 toDestination:(id)destination; /*! * cv::max() * * @note: OpenCV has separate methods for Mat and UMat classes, but this is handled in the implementation. */ + (void)maxWithSource:(id)source1 withSource:(id)source2 toDestination:(id)destination; /*! * cv::sqrt() */ + (void)sqrtWithSource:(id)source toDestination:(id)destination; /*! * cv::pow() */ + (void)powWithSource:(id)source toDestination:(id)destination withPower:(double)power; /*! * cv::exp() */ + (void)expWithSource:(id)source toDestination:(id)destination; /*! * cv::log() */ + (void)logWithSource:(id)source toDestination:(id)destination; /*! * cv::polarToCart() */ + (void)polarToCartWithMagnitude:(id)magintude withAngle:(id)angle toX:(id)x toY:(id)y; + (void)polarToCartWithMagnitude:(id)magintude withAngle:(id)angle toX:(id)x toY:(id)y withAngleInDegrees:(BOOL)angleInDegrees; /*! * cv::cartToPolar() */ + (void)cartToPolarWithX:(id)x withY:(id)y toMagnitude:(id)magnitude toAngle:(id)angle; + (void)cartToPolarWithX:(id)x withY:(id)y toMagnitude:(id)magnitude toAngle:(id)angle withAngleInDegrees:(BOOL)angleInDegrees; /*! * cv::phase() */ + (void)phaseWithX:(id)x withY:(id)y toAngle:(id)angle; + (void)phaseWithX:(id)x withY:(id)y toAngle:(id)angle withAngleInDegrees:(BOOL)angleInDegrees; /*! * cv::magnitude() */ + (void)magnitudeWithX:(id)x withY:(id)y toMagnitude:(id)magnitude; /*! * cv::checkRange() * * TODO: Should we add a result wrapper class? */ + (BOOL)checkRangeInSource:(id)source; + (BOOL)checkRangeInSource:(id)source quiet:(BOOL)quiet; + (BOOL)checkRangeInSource:(id)source quiet:(BOOL)quiet withPosition:(OCVPoint *)position; + (BOOL)checkRangeInSource:(id)source quiet:(BOOL)quiet withPosition:(OCVPoint *)position withMinValue:(double)minValue; + (BOOL)checkRangeInSource:(id)source quiet:(BOOL)quiet withPosition:(OCVPoint *)position withMinValue:(double)minValue withMaxValue:(double)maxValue; /*! * cv::magnitude() */ + (void)patchNansInSource:(id)source; + (void)patchNansInSource:(id)source withValue:(double)value; /*! * cv::gemm() */ + (void)gemmWithSource:(id)source1 withSource:(id)source2 withAlpha:(double)alpha withSource:(id)source3 withBeta:(double)beta toDestination:(id)destination; + (void)gemmWithSource:(id)source1 withSource:(id)source2 withAlpha:(double)alpha withSource:(id)source3 withBeta:(double)beta toDestination:(id)destination withFlags:(OCVGemmFlags)flags; /*! * cv::mulTransposed() */ + (void)multiplyTransposeWithSource:(id)source toDestination:(id)destination withOrdering:(BOOL)ordering; + (void)multiplyTransposeWithSource:(id)source toDestination:(id)destination withOrdering:(BOOL)ordering withDelta:(id)delta; + (void)multiplyTransposeWithSource:(id)source toDestination:(id)destination withOrdering:(BOOL)ordering withDelta:(id)delta withScale:(double)scale; + (void)multiplyTransposeWithSource:(id)source toDestination:(id)destination withOrdering:(BOOL)ordering withDelta:(id)delta withScale:(double)scale ofDepthType:(NSInteger)depthType; /*! * cv::transpose() */ + (void)transposeWithSource:(id)source toDestination:(id)destination; /*! * cv::transform() */ + (void)transformWithSource:(id)source toDestination:(id)destination withTransformation:(id)transformation; /*! * cv::perspectiveTransform() */ + (void)perspectiveTransformWithSource:(id)source toDestination:(id)destination withTransformation:(id)transformation; /*! * cv::completeSymm() */ + (void)completeSymmOfSource:(id)source; + (void)completeSymmOfSource:(id)source withLowerToUpper:(BOOL)lowerToUpper; /*! * cv::setIdentity() */ + (void)setIdentityOfSource:(id)source; + (void)setIdentityOfSource:(id)source withScalar:(OCVScalar)scalar; /*! * cv::determinant() */ + (double)determinantOfSource:(id)source; /*! * cv::trace() */ + (OCVScalar)traceOfSource:(id)source; /*! * cv::invert() */ + (void)invertSource:(id)source toDestination:(id)destination; + (void)invertSource:(id)source toDestination:(id)destination withType:(OCVDecompositionType)type; /*! * cv::solve() */ + (void)solveSource:(id)source1 withSource:(id)source2 toDestination:(id)destination; + (void)solveSource:(id)source1 withSource:(id)source2 toDestination:(id)destination withType:(OCVDecompositionType)type; /*! * cv::sort() */ + (void)sortSource:(id)source toDestination:(id)destination withTypes:(OCVSortTypes)types; /*! * cv::sortIdx() */ + (void)sortIndexSource:(id)source toDestination:(id)destination withTypes:(OCVSortTypes)types; /*! * cv::solveCubic() */ + (NSInteger)solveCubicWithCoefficients:(id)coefficients toRoots:(id)roots; /*! * cv::solvePoly() */ + (double)solvePolyWithCoefficients:(id)coefficients toRoots:(id)roots; + (double)solvePolyWithCoefficients:(id)coefficients toRoots:(id)roots maxIterations:(NSInteger)maxIterations; /*! * cv::eigen() */ + (BOOL)eigenWithSource:(id)source toEigenValues:(id)eigenValues; + (BOOL)eigenWithSource:(id)source toEigenValues:(id)eigenValues withEigenVectors:(id)eigenValues; /*! * cv::calcCovarMatrix() */ + (void)calcCovarMatrixWithSamples:(OCVMat *)samples numberOfSamples:(NSInteger)numberOfSamples covar:(OCVMat *)covar mean:(OCVMat *)mean flags:(OCVCovarTypes)flags; + (void)calcCovarMatrixWithSamples:(OCVMat *)samples numberOfSamples:(NSInteger)numberOfSamples covar:(OCVMat *)covar mean:(OCVMat *)mean flags:(OCVCovarTypes)flags depthType:(OCVDepthType)depthType; + (void)calcCovarMatrixWithSamples:(id)samples toCovar:(id)covar mean:(id)mean flags:(OCVCovarTypes)flags; + (void)calcCovarMatrixWithSamples:(id)samples toCovar:(id)covar mean:(id)mean flags:(OCVCovarTypes)flags depthType:(OCVDepthType)depthType; /*! TODO: Check if those methods should even be implemented on operation, but rather on specific PCA and SV classes? CV_EXPORTS_W void PCACompute(InputArray data, InputOutputArray mean, OutputArray eigenvectors, double retainedVariance); CV_EXPORTS_W void PCAProject(InputArray data, InputArray mean, InputArray eigenvectors, OutputArray result); CV_EXPORTS_W void PCABackProject(InputArray data, InputArray mean, InputArray eigenvectors, OutputArray result); CV_EXPORTS_W void SVDecomp( InputArray src, OutputArray w, OutputArray u, OutputArray vt, int flags = 0 ); CV_EXPORTS_W void SVBackSubst( InputArray w, InputArray u, InputArray vt, nputArray rhs, OutputArray dst ); */ /*! * cv::Mahalanobis() */ + (double)mahalanobisWithVector:(id)vector1 vector2:(id)vector2 inverseCovar:(id)inverseCovar; /*! * cv::kmeans() */ + (double)kmeansWithData:(id)data k:(NSInteger)k bestLabels:(id)bestLabels termCriteria:(OCVTermCriteria *)termCriteria attempts:(NSInteger)attempts flags:(OCVKMeansTypes)flags centers:(id)centers; @end NS_ASSUME_NONNULL_END ================================================ FILE: LegoCV/LegoCV/Wrapper/Core/Operations/OCVOperation.mm ================================================ // // OCVOperation.m // LegoCV // // Created by Dal Rupnik on 23/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import #import #import "OCVGeometry+Private.h" #import "OCVInputArray+Private.h" #import "OCVOutputArray+Private.h" #import "OCVInputOutputArray+Private.h" #import "OCVMatDataAllocator+Private.h" #import "OCVOperation.h" @implementation OCVOperation @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Core/Operations/OCVTermCriteria.h ================================================ // // OCVTermCriteria.h // LegoCV // // Created by Dal Rupnik on 04/03/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVTermCriteria : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Core/Operations/OCVTermCriteria.m ================================================ // // OCVTermCriteria.m // LegoCV // // Created by Dal Rupnik on 04/03/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVTermCriteria.h" @implementation OCVTermCriteria @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Core/Persistence/OCVFileNode.h ================================================ // // OCVFileNode.h // LegoCV // // Created by Dal Rupnik on 07/03/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" #import "OCVFileStorageFormatDescriptor.h" @class OCVMat; typedef NS_ENUM(NSInteger, OCVFileNodeType) { OCVFileNodeTypeNone = 0, //!< empty node OCVFileNodeTypeInteger = 1, //!< an integer OCVFileNodeTypeReal = 2, //!< floating-point number OCVFileNodeTypeString = 3, //!< text string in UTF-8 encoding OCVFileNodeTypeReference = 4, //!< integer of size size_t. Typically used for storing complex dynamic structures where some elements reference the others OCVFileNodeTypeSequence = 5, //!< sequence OCVFileNodeTypeMap = 6, //!< mapping OCVFileNodeTypeTypeMask = 7, OCVFileNodeTypeFlow = 8, //!< compact representation of a sequence or mapping. Used only by YAML writer OCVFileNodeTypeUser = 16, //!< a registered object (e.g. a matrix) OCVFileNodeTypeEmpty = 32, //!< empty structure (sequence or mapping) OCVFileNodeTypeNamed = 64 //!< the node has a name (i.e. it is element of a mapping)}; }; NS_ASSUME_NONNULL_BEGIN @interface OCVFileNode : OCVObject @property (nonatomic, readonly) OCVFileNodeType type; @property (nonatomic, readonly) BOOL isEmpty; @property (nullable, nonatomic, readonly) NSString* name; @property (nonatomic, readonly) NSInteger size; - (instancetype)initWithNode:(OCVFileNode *)node; // // MARK: Subscript // /*! * Only available if type == map */ - (nullable OCVFileNode *)objectAtIndexedSubscript:(NSString *)idx; /*! * Only available if type == sequence */ - (nullable OCVFileNode *)objectAtIndex:(NSInteger)index; // // TODO: Add File Node Iterator?? // #pragma mark - Read methods - (NSData *)readRawWithFormat:(NSString *)format; - (NSData *)readRawWithDescriptor:(OCVFileStorageFormatDescriptor *)descriptor; // // Following methods mimic Foundation NSNumber API. // - (nullable id)objectValue; - (int)intValue; - (NSInteger)integerValue; - (float)floatValue; - (double)doubleValue; - (nullable NSString *)stringValue; - (nullable OCVMat *)matValue; @end NS_ASSUME_NONNULL_END ================================================ FILE: LegoCV/LegoCV/Wrapper/Core/Persistence/OCVFileNode.mm ================================================ // // OCVFileNode.mm // LegoCV // // Created by Dal Rupnik on 07/03/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVFileNode.h" @implementation OCVFileNode @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Core/Persistence/OCVFileStorage.h ================================================ // // OCVFileStorage.h // LegoCV // // Created by Dal Rupnik on 07/03/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" #import "OCVSerializable.h" #import "OCVInputArrayable.h" #import "OCVFileNode.h" /*! * Reference type: cv::FileStorage Mode */ typedef NS_OPTIONS(NSInteger, OCVFileStorageModes) { OCVFileStorageModeRead = 0, //!< value, open the file for reading OCVFileStorageModeWrite = 1, //!< value, open the file for writing OCVFileStorageModeAppend = 2, //!< value, open the file for appending OCVFileStorageModeMemory = 4, //!< flag, read data from source or write data to the internal buffer (which is OCVFileStorageModeFormatMask = (7<<3), //!< mask for format flags OCVFileStorageModeFormatAuto = 0, //!< flag, auto format OCVFileStorageModeFormatXML = (1<<3), //!< flag, XML format OCVFileStorageModeFormatYAML = (2<<3), //!< flag, YAML format OCVFileStorageModeFormatJSON = (3<<3), //!< flag, JSON format OCVFileStorageModeBase64 = 64, //!< flag, write rawdata in Base64 by default. (consider using OCVFileStorageModeWriteBase64) OCVFileStorageModeWriteBase64 = OCVFileStorageModeBase64 | OCVFileStorageModeWrite, //!< flag, enable both Write and Base64 }; NS_ASSUME_NONNULL_BEGIN /*! * cv::FileStorage */ @interface OCVFileStorage : OCVObject #pragma mark - Public Properties @property (nonatomic, readonly) NSInteger state; @property (nonatomic, readonly) BOOL isOpened; @property (nullable, nonatomic, readonly) NSString *elementName; #pragma mark - Initialization - (instancetype)initWithPath:(NSString *)path mode:(OCVFileStorageModes)mode; - (instancetype)initWithPath:(NSString *)path mode:(OCVFileStorageModes)mode encoding:(NSStringEncoding)encoding; #pragma mark - Public Methods - (void)openWithPath:(NSString *)path mode:(OCVFileStorageModes)mode; - (void)openWithPath:(NSString *)path mode:(OCVFileStorageModes)mode encoding:(NSStringEncoding)encoding; - (nullable OCVFileNode *)firstTopLevelNode; - (nullable OCVFileNode *)root; - (nullable OCVFileNode *)rootWithStreamIndex:(NSInteger)streamIndex; // // MARK: Subscript // - (nullable OCVFileNode *)objectAtIndexedSubscript:(NSString *)idx; // Should do nothing, only allows access. //- (void)setObject:(id)obj atIndexedSubscript:(NSString *)idx; #pragma mark - Write Methods - (void)writeRawWithFormat:(NSString *)format data:(NSData *)data; - (void)writeRawWithFormat:(NSString *)format data:(void *)data length:(NSInteger)length; - (void)writeRawWithDescriptor:(OCVFileStorageFormatDescriptor *)descriptor data:(NSData *)data; - (void)writeRawWithDescriptor:(OCVFileStorageFormatDescriptor *)descriptor data:(void *)data length:(NSInteger)length; - (void)writeObject:(id)object withName:(NSString *)name; - (void)writeDouble:(double)value withName:(NSString *)name; - (void)writeString:(NSString *)string withName:(NSString *)name; - (void)writeSource:(id)source withName:(NSString *)name; - (void)writeComment:(NSString *)comment; - (void)writeComment:(NSString *)comment append:(BOOL)append; - (void)writeInt:(int)value; - (void)writeInteger:(NSInteger)value; - (void)writeFloat:(float)value; - (void)writeDouble:(double)value; - (void)writeString:(NSString *)value; #pragma mark - Class Methods + (NSString *)defaultObjectNameForFilename:(NSString *)filename; @end NS_ASSUME_NONNULL_END ================================================ FILE: LegoCV/LegoCV/Wrapper/Core/Persistence/OCVFileStorage.mm ================================================ // // OCVFileStorage.mm // LegoCV // // Created by Dal Rupnik on 07/03/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVFileStorage.h" @implementation OCVFileStorage @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Core/Persistence/OCVFileStorageFormatDescriptor.h ================================================ // // OCVFileStorageFormatDescriptor.h // LegoCV // // Created by Dal Rupnik on 07/03/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" typedef NS_ENUM(NSInteger, OCVFileStorageFormatType) { OCVFileStorageFormatType8BitUnsigned, OCVFileStorageFormatType8BitSigned, OCVFileStorageFormatType16BitUnsigned, OCVFileStorageFormatType16BitSigned, OCVFileStorageFormatType32BitSigned, OCVFileStorageFormatTypeSinglePrecisionFloat, OCVFileStorageFormatTypeDoublePrecisionFloat, OCVFileStorageFormatType32BitPointer }; NS_ASSUME_NONNULL_BEGIN /*! * See @format_spec in OpenCV * * Describes format of the array being written. */ @interface OCVFileStorageFormatDescriptor : OCVObject /*! * Converted format for OpenCV */ @property (nonatomic, readonly) NSString *format; - (void)addFormatOfType:(OCVFileStorageFormatType)type; - (void)addFormatOfType:(OCVFileStorageFormatType)type withCount:(NSInteger)count; @end NS_ASSUME_NONNULL_END ================================================ FILE: LegoCV/LegoCV/Wrapper/Core/Persistence/OCVFileStorageFormatDescriptor.m ================================================ // // OCVFileStorageFormatDescriptor.m // LegoCV // // Created by Dal Rupnik on 07/03/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVFileStorageFormatDescriptor.h" NSString* NSStringFromFileStorageFormatType(OCVFileStorageFormatType type) { switch (type) { case OCVFileStorageFormatType8BitUnsigned: return @"u"; case OCVFileStorageFormatType8BitSigned: return @"c"; case OCVFileStorageFormatType16BitUnsigned: return @"w"; case OCVFileStorageFormatType16BitSigned: return @"s"; case OCVFileStorageFormatType32BitSigned: return @"i"; case OCVFileStorageFormatTypeSinglePrecisionFloat: return @"f"; case OCVFileStorageFormatTypeDoublePrecisionFloat: return @"d"; case OCVFileStorageFormatType32BitPointer: return @"r"; default: return @""; } } @interface OCVFileStorageFormatDescriptor () @property (nonatomic, strong) NSMutableString *formatStore; @end @implementation OCVFileStorageFormatDescriptor #pragma mark - Properties - (NSMutableString *)formatStore { if (!_formatStore) { _formatStore = [[NSMutableString alloc] init]; } return _formatStore; } - (NSString *)format { return [self.formatStore copy]; } #pragma mark - Public Methods - (void)addFormatOfType:(OCVFileStorageFormatType)type { [self.formatStore appendString:NSStringFromFileStorageFormatType(type)]; } - (void)addFormatOfType:(OCVFileStorageFormatType)type withCount:(NSInteger)count { if (count > 1) { [self.formatStore appendFormat:@"%ldd", (long)count]; } [self.formatStore appendString:NSStringFromFileStorageFormatType(type)]; } @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Core/Persistence/OCVPersistence.h ================================================ // // OCVPersistence.h // LegoCV // // Created by Dal Rupnik on 07/03/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #ifndef OCVPersistence_h #define OCVPersistence_h #import "OCVFileStorage.h" #import "OCVFileNode.h" #import "OCVSerializable.h" #endif /* OCVPersistence_h */ ================================================ FILE: LegoCV/LegoCV/Wrapper/Core/Persistence/OCVSerializable.h ================================================ // // OCVSerializable.h // LegoCV // // Created by Dal Rupnik on 07/03/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #ifndef OCVSerializable_h #define OCVSerializable_h #import @protocol OCVSerializable @end #endif /* OCVSerializable_h */ ================================================ FILE: LegoCV/LegoCV/Wrapper/Core/Private/OCVGeometry+Private.h ================================================ // // OCVGeometry+Private.h // LegoCV // // Created by Dal Rupnik on 30/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #ifndef OCVGeometry_Private_h #define OCVGeometry_Private_h #import "OCVPoint+Private.h" #import "OCVSize+Private.h" #import "OCVRect+Private.h" #endif /* OCVGeometry_Private_h */ ================================================ FILE: LegoCV/LegoCV/Wrapper/Core/Private/OCVInputArray+Private.h ================================================ // // OCVInputArray+Private.h // LegoCV // // Created by Dal Rupnik on 24/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVInputArray.h" #import @interface OCVInputArray (OpenCV) @property (nonatomic, assign) cv::_InputArray *arrayReference; @property (nonatomic, readonly) cv::_InputArray *_input; @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Core/Private/OCVInputOutputArray+Private.h ================================================ // // OCVInputOutputArray+Private.h // LegoCV // // Created by Dal Rupnik on 24/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVInputOutputArray.h" #import @interface OCVInputOutputArray (OpenCV) @property (nonatomic, readonly) cv::_InputOutputArray *_inputOutput; @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Core/Private/OCVMatDataAllocator+Private.h ================================================ // // OCVMatDataAllocator+Private.h // LegoCV // // Created by Dal Rupnik on 24/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // // // MARK: Unavailable in Swift, convenience for OpenCV, should be private // #import "OCVMatDataAllocator.h" #import @interface OCVMatDataAllocator (OpenCV) @property (nonatomic, readonly) cv::Mat *source; - (instancetype)initWithMatInstance:(cv::Mat *)mat; @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Core/Private/OCVOutputArray+Private.h ================================================ // // OCVOutputArray+Private.h // LegoCV // // Created by Dal Rupnik on 24/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVOutputArray.h" #import @interface OCVOutputArray (OpenCV) @property (nonatomic, readonly) cv::_OutputArray *_output; @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Core/Private/OCVPoint+Private.h ================================================ // // OCVPoint+Private.h // LegoCV // // Created by Dal Rupnik on 30/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVPoint.h" #import cv::Point convertPoint(OCVPoint point); OCVPoint convertPoint(cv::Point point); ================================================ FILE: LegoCV/LegoCV/Wrapper/Core/Private/OCVPoint+Private.mm ================================================ // // OCVPoint+Private.m // LegoCV // // Created by Dal Rupnik on 30/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVPoint+Private.h" cv::Point convertPoint(OCVPoint point) { cv::Point finalPoint; finalPoint.x = (int)point.x; finalPoint.y = (int)point.y; return finalPoint; } OCVPoint convertPoint(cv::Point point) { OCVPoint finalPoint; finalPoint.x = point.x; finalPoint.y = point.y; return finalPoint; } ================================================ FILE: LegoCV/LegoCV/Wrapper/Core/Private/OCVRect+Private.h ================================================ // // OCVRect+Private.h // LegoCV // // Created by Dal Rupnik on 24/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVRect.h" #import cv::Rect convertRect(OCVRect rect); OCVRect convertRect(cv::Rect rect); ================================================ FILE: LegoCV/LegoCV/Wrapper/Core/Private/OCVRect+Private.mm ================================================ // // OCVRect+Private.m // LegoCV // // Created by Dal Rupnik on 30/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVRect+Private.h" #import cv::Rect convertRect(OCVRect rect) { cv::Rect finalRect; finalRect.x = (int)rect.origin.x; finalRect.y = (int)rect.origin.y; finalRect.width = (int)rect.size.width; finalRect.height = (int)rect.size.height; return finalRect; } OCVRect convertRect(cv::Rect rect) { OCVRect finalRect; finalRect.origin.x = rect.x; finalRect.origin.y = rect.y; finalRect.size.width = rect.width; finalRect.size.height = rect.height; return finalRect; } ================================================ FILE: LegoCV/LegoCV/Wrapper/Core/Private/OCVSize+Private.h ================================================ // // OCVSize+Private.h // LegoCV // // Created by Dal Rupnik on 24/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVSize.h" #import cv::Size convertSize(OCVSize size); OCVSize convertSize(cv::Size size); ================================================ FILE: LegoCV/LegoCV/Wrapper/Core/Private/OCVSize+Private.mm ================================================ // // OCVSize+Private.m // LegoCV // // Created by Dal Rupnik on 30/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVSize+Private.h" #import cv::Size convertSize(OCVSize size) { cv::Size finalSize; finalSize.width = (int)size.width; finalSize.height = (int)size.height; return finalSize; } OCVSize convertSize(cv::Size size) { OCVSize finalSize; finalSize.width = size.width; finalSize.height = size.height; return finalSize; } ================================================ FILE: LegoCV/LegoCV/Wrapper/Cuda/OCVGPUMat.h ================================================ // // OCVGPUMat.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVGPUMat : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Cuda/OCVGPUMat.m ================================================ // // OCVGPUMat.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVGPUMat.h" @implementation OCVGPUMat @end ================================================ FILE: LegoCV/LegoCV/Wrapper/CvEnum/OCVStorageOperationType.h ================================================ // // OCVStorageOperationType.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVStorageOperationType : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/CvEnum/OCVStorageOperationType.m ================================================ // // OCVStorageOperationType.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVStorageOperationType.h" @implementation OCVStorageOperationType @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Cvb/OCVBlob.h ================================================ // // OCVBlob.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVBlob : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Cvb/OCVBlob.m ================================================ // // OCVBlob.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVBlob.h" @implementation OCVBlob @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Dnn/OCVImporter.h ================================================ // // OCVImporter.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVImporter : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Dnn/OCVImporter.m ================================================ // // OCVImporter.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVImporter.h" @implementation OCVImporter @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Dnn/OCVNet.h ================================================ // // OCVNet.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVNet : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Dnn/OCVNet.m ================================================ // // OCVNet.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVNet.h" @implementation OCVNet @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Face/OCVEigenFaceRecognizer.h ================================================ // // OCVEigenFaceRecognizer.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVEigenFaceRecognizer : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Face/OCVEigenFaceRecognizer.m ================================================ // // OCVEigenFaceRecognizer.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVEigenFaceRecognizer.h" @implementation OCVEigenFaceRecognizer @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Face/OCVFaceRecognizer.h ================================================ // // OCVFaceRecognizer.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVFaceRecognizer : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Face/OCVFaceRecognizer.m ================================================ // // OCVFaceRecognizer.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVFaceRecognizer.h" @implementation OCVFaceRecognizer @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Face/OCVFisherFaceRecognizer.h ================================================ // // OCVFisherFaceRecognizer.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVFisherFaceRecognizer : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Face/OCVFisherFaceRecognizer.m ================================================ // // OCVFisherFaceRecognizer.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVFisherFaceRecognizer.h" @implementation OCVFisherFaceRecognizer @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Face/OCVLBPHFaceRecognizer.h ================================================ // // OCVLBPHFaceRecognizer.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVLBPHFaceRecognizer : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Face/OCVLBPHFaceRecognizer.m ================================================ // // OCVLBPHFaceRecognizer.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVLBPHFaceRecognizer.h" @implementation OCVLBPHFaceRecognizer @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Features2D/OCVFeature2D.h ================================================ // // OCVFeature2D.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVFeature2D : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Features2D/OCVFeature2D.m ================================================ // // OCVFeature2D.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVFeature2D.h" @implementation OCVFeature2D @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Flann/OCVIndex.h ================================================ // // OCVIndex.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVIndex : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Flann/OCVIndex.m ================================================ // // OCVIndex.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVIndex.h" @implementation OCVIndex @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Fuzzy/OCVFuzzyInvoke.h ================================================ // // OCVFuzzyInvoke.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVFuzzyInvoke : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Fuzzy/OCVFuzzyInvoke.m ================================================ // // OCVFuzzyInvoke.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVFuzzyInvoke.h" @implementation OCVFuzzyInvoke @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Geodetic/OCVGeodeticCoordinate.h ================================================ // // OCVGeodeticCoordinate.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVGeodeticCoordinate : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Geodetic/OCVGeodeticCoordinate.m ================================================ // // OCVGeodeticCoordinate.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVGeodeticCoordinate.h" @implementation OCVGeodeticCoordinate @end ================================================ FILE: LegoCV/LegoCV/Wrapper/ImageProcessing/OCVColorConversionType.h ================================================ // // OCVColorConversionType.h // LegoCV // // Created by Dal Rupnik on 23/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #ifndef OCVColorConversionType_h #define OCVColorConversionType_h /*! * Reference type: cv::ColorConversionCodes */ typedef NS_ENUM(NSInteger, OCVColorConversionType) { OCVColorConversionTypeBGR2BGRA = 0, OCVColorConversionTypeRGB2RGBA = OCVColorConversionTypeBGR2BGRA, OCVColorConversionTypeBGRA2BGR = 1, OCVColorConversionTypeRGBA2RGB = OCVColorConversionTypeBGRA2BGR, OCVColorConversionTypeBGR2RGBA = 2, OCVColorConversionTypeRGB2BGRA = OCVColorConversionTypeBGR2RGBA, OCVColorConversionTypeRGBA2BGR = 3, OCVColorConversionTypeBGRA2RGB = OCVColorConversionTypeRGBA2BGR, OCVColorConversionTypeBGR2RGB = 4, OCVColorConversionTypeRGB2BGR = OCVColorConversionTypeBGR2RGB, OCVColorConversionTypeBGRA2RGBA = 5, OCVColorConversionTypeRGBA2BGRA = OCVColorConversionTypeBGRA2RGBA, OCVColorConversionTypeBGR2GRAY = 6, OCVColorConversionTypeRGB2GRAY = 7, OCVColorConversionTypeGRAY2BGR = 8, OCVColorConversionTypeGRAY2RGB = OCVColorConversionTypeGRAY2BGR, OCVColorConversionTypeGRAY2BGRA = 9, OCVColorConversionTypeGRAY2RGBA = OCVColorConversionTypeGRAY2BGRA, OCVColorConversionTypeBGRA2GRAY = 10, OCVColorConversionTypeRGBA2GRAY = 11, OCVColorConversionTypeBGR2BGR565 = 12, OCVColorConversionTypeRGB2BGR565 = 13, OCVColorConversionTypeBGR5652BGR = 14, OCVColorConversionTypeBGR5652RGB = 15, OCVColorConversionTypeBGRA2BGR565 = 16, OCVColorConversionTypeRGBA2BGR565 = 17, OCVColorConversionTypeBGR5652BGRA = 18, OCVColorConversionTypeBGR5652RGBA = 19, OCVColorConversionTypeGRAY2BGR565 = 20, OCVColorConversionTypeBGR5652GRAY = 21, OCVColorConversionTypeBGR2BGR555 = 22, OCVColorConversionTypeRGB2BGR555 = 23, OCVColorConversionTypeBGR5552BGR = 24, OCVColorConversionTypeBGR5552RGB = 25, OCVColorConversionTypeBGRA2BGR555 = 26, OCVColorConversionTypeRGBA2BGR555 = 27, OCVColorConversionTypeBGR5552BGRA = 28, OCVColorConversionTypeBGR5552RGBA = 29, OCVColorConversionTypeGRAY2BGR555 = 30, OCVColorConversionTypeBGR5552GRAY = 31, OCVColorConversionTypeBGR2XYZ = 32, OCVColorConversionTypeRGB2XYZ = 33, OCVColorConversionTypeXYZ2BGR = 34, OCVColorConversionTypeXYZ2RGB = 35, OCVColorConversionTypeBGR2YCrCb = 36, OCVColorConversionTypeRGB2YCrCb = 37, OCVColorConversionTypeYCrCb2BGR = 38, OCVColorConversionTypeYCrCb2RGB = 39, OCVColorConversionTypeBGR2HSV = 40, OCVColorConversionTypeRGB2HSV = 41, OCVColorConversionTypeBGR2Lab = 44, OCVColorConversionTypeRGB2Lab = 45, OCVColorConversionTypeBayerBG2BGR = 46, OCVColorConversionTypeBayerGB2BGR = 47, OCVColorConversionTypeBayerRG2BGR = 48, OCVColorConversionTypeBayerGR2BGR = 49, OCVColorConversionTypeBayerBG2RGB = OCVColorConversionTypeBayerRG2BGR, OCVColorConversionTypeBayerGB2RGB = OCVColorConversionTypeBayerGR2BGR, OCVColorConversionTypeBayerRG2RGB = OCVColorConversionTypeBayerBG2BGR, OCVColorConversionTypeBayerGR2RGB = OCVColorConversionTypeBayerGB2BGR, OCVColorConversionTypeBGR2Luv = 50, OCVColorConversionTypeRGB2Luv = 51, OCVColorConversionTypeBGR2HLS = 52, OCVColorConversionTypeRGB2HLS = 53, OCVColorConversionTypeHSV2BGR = 54, OCVColorConversionTypeHSV2RGB = 55, OCVColorConversionTypeLab2BGR = 56, OCVColorConversionTypeLab2RGB = 57, OCVColorConversionTypeLuv2BGR = 58, OCVColorConversionTypeLuv2RGB = 59, OCVColorConversionTypeHLS2BGR = 60, OCVColorConversionTypeHLS2RGB = 61, OCVColorConversionTypeBayerBG2BGRVng = 62, OCVColorConversionTypeBayerGB2BGRVng = 63, OCVColorConversionTypeBayerRG2BGRVng = 64, OCVColorConversionTypeBayerGR2BGRVng = 65, OCVColorConversionTypeBayerBG2RGBVng = OCVColorConversionTypeBayerRG2BGRVng, OCVColorConversionTypeBayerGB2RGBVng = OCVColorConversionTypeBayerGR2BGRVng, OCVColorConversionTypeBayerRG2RGBVng = OCVColorConversionTypeBayerBG2BGRVng, OCVColorConversionTypeBayerGR2RGBVng = OCVColorConversionTypeBayerGB2BGRVng, OCVColorConversionTypeBGR2HSVFull = 66, OCVColorConversionTypeRGB2HSVFull = 67, OCVColorConversionTypeBGR2HLSFull = 68, OCVColorConversionTypeRGB2HLSFull = 69, OCVColorConversionTypeHSV2BGRFull = 70, OCVColorConversionTypeHSV2RGBFull = 71, OCVColorConversionTypeHLS2BGRFull = 72, OCVColorConversionTypeHLS2RGBFull = 73, OCVColorConversionTypeLBGR2Lab = 74, OCVColorConversionTypeLRGB2Lab = 75, OCVColorConversionTypeLBGR2Luv = 76, OCVColorConversionTypeLRGB2Luv = 77, OCVColorConversionTypeLab2LBGR = 78, OCVColorConversionTypeLab2LRGB = 79, OCVColorConversionTypeLuv2LBGR = 80, OCVColorConversionTypeLuv2LRGB = 81, OCVColorConversionTypeBGR2YUV = 82, OCVColorConversionTypeRGB2YUV = 83, OCVColorConversionTypeYUV2BGR = 84, OCVColorConversionTypeYUV2RGB = 85, OCVColorConversionTypeBayerBG2GRAY = 86, OCVColorConversionTypeBayerGB2GRAY = 87, OCVColorConversionTypeBayerRG2GRAY = 88, OCVColorConversionTypeBayerGR2GRAY = 89, //YUV 4:2:0 formats family OCVColorConversionTypeYUV2RGB_NV12 = 90, OCVColorConversionTypeYUV2BGR_NV12 = 91, OCVColorConversionTypeYUV2RGB_NV21 = 92, OCVColorConversionTypeYUV2BGR_NV21 = 93, OCVColorConversionTypeYUV420sp2RGB = OCVColorConversionTypeYUV2RGB_NV21, OCVColorConversionTypeYUV420sp2BGR = OCVColorConversionTypeYUV2BGR_NV21, OCVColorConversionTypeYUV2RGBA_NV12 = 94, OCVColorConversionTypeYUV2BGRA_NV12 = 95, OCVColorConversionTypeYUV2RGBA_NV21 = 96, OCVColorConversionTypeYUV2BGRA_NV21 = 97, OCVColorConversionTypeYUV420sp2RGBA = OCVColorConversionTypeYUV2RGBA_NV21, OCVColorConversionTypeYUV420sp2BGRA = OCVColorConversionTypeYUV2BGRA_NV21, OCVColorConversionTypeYUV2RGB_YV12 = 98, OCVColorConversionTypeYUV2BGR_YV12 = 99, OCVColorConversionTypeYUV2RGB_IYUV = 100, OCVColorConversionTypeYUV2BGR_IYUV = 101, OCVColorConversionTypeYUV2RGB_I420 = OCVColorConversionTypeYUV2RGB_IYUV, OCVColorConversionTypeYUV2BGR_I420 = OCVColorConversionTypeYUV2BGR_IYUV, OCVColorConversionTypeYUV420p2RGB = OCVColorConversionTypeYUV2RGB_YV12, OCVColorConversionTypeYUV420p2BGR = OCVColorConversionTypeYUV2BGR_YV12, OCVColorConversionTypeYUV2RGBA_YV12 = 102, OCVColorConversionTypeYUV2BGRA_YV12 = 103, OCVColorConversionTypeYUV2RGBA_IYUV = 104, OCVColorConversionTypeYUV2BGRA_IYUV = 105, OCVColorConversionTypeYUV2RGBA_I420 = OCVColorConversionTypeYUV2RGBA_IYUV, OCVColorConversionTypeYUV2BGRA_I420 = OCVColorConversionTypeYUV2BGRA_IYUV, OCVColorConversionTypeYUV420p2RGBA = OCVColorConversionTypeYUV2RGBA_YV12, OCVColorConversionTypeYUV420p2BGRA = OCVColorConversionTypeYUV2BGRA_YV12, OCVColorConversionTypeYUV2GRAY_420 = 106, OCVColorConversionTypeYUV2GRAY_NV21 = OCVColorConversionTypeYUV2GRAY_420, OCVColorConversionTypeYUV2GRAY_NV12 = OCVColorConversionTypeYUV2GRAY_420, OCVColorConversionTypeYUV2GRAY_YV12 = OCVColorConversionTypeYUV2GRAY_420, OCVColorConversionTypeYUV2GRAY_IYUV = OCVColorConversionTypeYUV2GRAY_420, OCVColorConversionTypeYUV2GRAY_I420 = OCVColorConversionTypeYUV2GRAY_420, OCVColorConversionTypeYUV420sp2GRAY = OCVColorConversionTypeYUV2GRAY_420, OCVColorConversionTypeYUV420p2GRAY = OCVColorConversionTypeYUV2GRAY_420, //YUV 4:2:2 formats family OCVColorConversionTypeYUV2RGB_UYVY = 107, OCVColorConversionTypeYUV2BGR_UYVY = 108, //OCVColorConversionTypeYUV2RGB_VYUY = 109, //OCVColorConversionTypeYUV2BGR_VYUY = 110, OCVColorConversionTypeYUV2RGB_Y422 = OCVColorConversionTypeYUV2RGB_UYVY, OCVColorConversionTypeYUV2BGR_Y422 = OCVColorConversionTypeYUV2BGR_UYVY, OCVColorConversionTypeYUV2RGB_UYNV = OCVColorConversionTypeYUV2RGB_UYVY, OCVColorConversionTypeYUV2BGR_UYNV = OCVColorConversionTypeYUV2BGR_UYVY, OCVColorConversionTypeYUV2RGBA_UYVY = 111, OCVColorConversionTypeYUV2BGRA_UYVY = 112, //OCVColorConversionTypeYUV2RGBA_VYUY = 113, //OCVColorConversionTypeYUV2BGRA_VYUY = 114, OCVColorConversionTypeYUV2RGBA_Y422 = OCVColorConversionTypeYUV2RGBA_UYVY, OCVColorConversionTypeYUV2BGRA_Y422 = OCVColorConversionTypeYUV2BGRA_UYVY, OCVColorConversionTypeYUV2RGBA_UYNV = OCVColorConversionTypeYUV2RGBA_UYVY, OCVColorConversionTypeYUV2BGRA_UYNV = OCVColorConversionTypeYUV2BGRA_UYVY, OCVColorConversionTypeYUV2RGB_YUY2 = 115, OCVColorConversionTypeYUV2BGR_YUY2 = 116, OCVColorConversionTypeYUV2RGB_YVYU = 117, OCVColorConversionTypeYUV2BGR_YVYU = 118, OCVColorConversionTypeYUV2RGB_YUYV = OCVColorConversionTypeYUV2RGB_YUY2, OCVColorConversionTypeYUV2BGR_YUYV = OCVColorConversionTypeYUV2BGR_YUY2, OCVColorConversionTypeYUV2RGB_YUNV = OCVColorConversionTypeYUV2RGB_YUY2, OCVColorConversionTypeYUV2BGR_YUNV = OCVColorConversionTypeYUV2BGR_YUY2, OCVColorConversionTypeYUV2RGBA_YUY2 = 119, OCVColorConversionTypeYUV2BGRA_YUY2 = 120, OCVColorConversionTypeYUV2RGBA_YVYU = 121, OCVColorConversionTypeYUV2BGRA_YVYU = 122, OCVColorConversionTypeYUV2RGBA_YUYV = OCVColorConversionTypeYUV2RGBA_YUY2, OCVColorConversionTypeYUV2BGRA_YUYV = OCVColorConversionTypeYUV2BGRA_YUY2, OCVColorConversionTypeYUV2RGBA_YUNV = OCVColorConversionTypeYUV2RGBA_YUY2, OCVColorConversionTypeYUV2BGRA_YUNV = OCVColorConversionTypeYUV2BGRA_YUY2, OCVColorConversionTypeYUV2GRAY_UYVY = 123, OCVColorConversionTypeYUV2GRAY_YUY2 = 124, //OCVColorConversionTypeYUV2GRAY_VYUY = OCVColorConversionTypeYUV2GRAY_UYVY, OCVColorConversionTypeYUV2GRAY_Y422 = OCVColorConversionTypeYUV2GRAY_UYVY, OCVColorConversionTypeYUV2GRAY_UYNV = OCVColorConversionTypeYUV2GRAY_UYVY, OCVColorConversionTypeYUV2GRAY_YVYU = OCVColorConversionTypeYUV2GRAY_YUY2, OCVColorConversionTypeYUV2GRAY_YUYV = OCVColorConversionTypeYUV2GRAY_YUY2, OCVColorConversionTypeYUV2GRAY_YUNV = OCVColorConversionTypeYUV2GRAY_YUY2, // alpha premultiplication OCVColorConversionTypeRGBA2mRGBA = 125, OCVColorConversionTypemRGBA2RGBA = 126, OCVColorConversionTypeRGB2YUV_I420 = 127, OCVColorConversionTypeBGR2YUV_I420 = 128, OCVColorConversionTypeRGB2YUV_IYUV = OCVColorConversionTypeRGB2YUV_I420, OCVColorConversionTypeBGR2YUV_IYUV = OCVColorConversionTypeBGR2YUV_I420, OCVColorConversionTypeRGBA2YUV_I420 = 129, OCVColorConversionTypeBGRA2YUV_I420 = 130, OCVColorConversionTypeRGBA2YUV_IYUV = OCVColorConversionTypeRGBA2YUV_I420, OCVColorConversionTypeBGRA2YUV_IYUV = OCVColorConversionTypeBGRA2YUV_I420, OCVColorConversionTypeRGB2YUV_YV12 = 131, OCVColorConversionTypeBGR2YUV_YV12 = 132, OCVColorConversionTypeRGBA2YUV_YV12 = 133, OCVColorConversionTypeBGRA2YUV_YV12 = 134, OCVColorConversionTypeColorConversionMax = 135 }; #endif /* OCVColorConversionType_h */ ================================================ FILE: LegoCV/LegoCV/Wrapper/ImageProcessing/OCVContrastLimitedAdaptiveHistogramEqualization.h ================================================ // // OCVContrastLimitedAdaptiveHistogramEqualization.h // LegoCV // // Created by Dal Rupnik on 18/03/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVGeometry.h" #import "OCVAlgorithm.h" #import "OCVArrayables.h" /*! * Reference type: cv::CLAHE */ @interface OCVContrastLimitedAdaptiveHistogramEqualization : OCVAlgorithm @property (nonatomic, assign) double clipLimit; @property (nonatomic, assign) OCVSize tileGridSize; - (void)applyWithSource:(id)source toDestination:(id)destination; - (void)collectGarbage; @end ================================================ FILE: LegoCV/LegoCV/Wrapper/ImageProcessing/OCVContrastLimitedAdaptiveHistogramEqualization.m ================================================ // // OCVContrastLimitedAdaptiveHistogramEqualization.m // LegoCV // // Created by Dal Rupnik on 18/03/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVContrastLimitedAdaptiveHistogramEqualization.h" @implementation OCVContrastLimitedAdaptiveHistogramEqualization @end ================================================ FILE: LegoCV/LegoCV/Wrapper/ImageProcessing/OCVGeneralizedHough.h ================================================ // // OCVGeneralizedHough.h // LegoCV // // Created by Dal Rupnik on 18/03/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVGeometry.h" #import "OCVArrayables.h" #import "OCVAlgorithm.h" /*! * Reference type: cv::GeneralizedHough */ @interface OCVGeneralizedHough : OCVAlgorithm @property (nonatomic, assign) NSInteger cannyLowThreshold; @property (nonatomic, assign) NSInteger cannyHighThreshold; @property (nonatomic, assign) double minimumDistance; @property (nonatomic, assign) double dp; @property (nonatomic, assign) NSInteger maxBufferSize; - (void)setTemplateWithTemplate:(id)template; - (void)setTemplateWithTemplate:(id)template withTemplateCenter:(OCVPoint)templateCenter; - (void)detectOnImage:(id)image toPositions:(id)positions; - (void)detectOnImage:(id)image toPositions:(id)positions withVotes:(id)votes; - (void)detectEdges:(id)edges withDx:(id)dx withDy:(id)dy toPositions:(id)positions; - (void)detectEdges:(id)edges withDx:(id)dx withDy:(id)dy toPositions:(id)positions withVotes:(id)votes; @end ================================================ FILE: LegoCV/LegoCV/Wrapper/ImageProcessing/OCVGeneralizedHough.m ================================================ // // OCVGeneralizedHough.m // LegoCV // // Created by Dal Rupnik on 18/03/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVGeneralizedHough.h" @implementation OCVGeneralizedHough @end ================================================ FILE: LegoCV/LegoCV/Wrapper/ImageProcessing/OCVGeneralizedHoughBallard.h ================================================ // // OCVGeneralizedHoughBallard.h // LegoCV // // Created by Dal Rupnik on 18/03/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVGeneralizedHough.h" /*! * Reference type: cv::GeneralizedHoughBallard */ @interface OCVGeneralizedHoughBallard : OCVGeneralizedHough @property (nonatomic, assign) NSInteger levels; @property (nonatomic, assign) NSInteger voteThreshold; @end ================================================ FILE: LegoCV/LegoCV/Wrapper/ImageProcessing/OCVGeneralizedHoughBallard.m ================================================ // // OCVGeneralizedHoughBallard.m // LegoCV // // Created by Dal Rupnik on 18/03/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVGeneralizedHoughBallard.h" @implementation OCVGeneralizedHoughBallard @end ================================================ FILE: LegoCV/LegoCV/Wrapper/ImageProcessing/OCVGeneralizedHoughGuil.h ================================================ // // OCVGeneralizedHoughGuil.h // LegoCV // // Created by Dal Rupnik on 18/03/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVGeneralizedHough.h" /*! * Reference type: cv::GeneralizedHoughGuil */ @interface OCVGeneralizedHoughGuil : OCVGeneralizedHough @property (nonatomic, assign) double xi; @property (nonatomic, assign) NSInteger levels; @property (nonatomic, assign) double angleEpsilon; @property (nonatomic, assign) double minAngle; @property (nonatomic, assign) double maxAngle; @property (nonatomic, assign) double angleStep; @property (nonatomic, assign) NSInteger angleThreshold; @property (nonatomic, assign) double maxScale; @property (nonatomic, assign) double scaleStep; @property (nonatomic, assign) NSInteger scaleThreshold; @property (nonatomic, assign) NSInteger positionThreshold; @end ================================================ FILE: LegoCV/LegoCV/Wrapper/ImageProcessing/OCVGeneralizedHoughGuil.m ================================================ // // OCVGeneralizedHoughGuil.m // LegoCV // // Created by Dal Rupnik on 18/03/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVGeneralizedHoughGuil.h" @implementation OCVGeneralizedHoughGuil @end ================================================ FILE: LegoCV/LegoCV/Wrapper/ImageProcessing/OCVImage.h ================================================ // // OCVImage.h // LegoCV // // Created by Dal Rupnik on 16/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import @interface OCVImage : NSObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/ImageProcessing/OCVImage.m ================================================ // // OCVImage.m // LegoCV // // Created by Dal Rupnik on 16/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVImage.h" @implementation OCVImage @end ================================================ FILE: LegoCV/LegoCV/Wrapper/ImageProcessing/OCVImageOperation.h ================================================ // // OCVImageOperation.h // LegoCV // // Created by Dal Rupnik on 04/03/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVTypes.h" #import "OCVImageTypes.h" #import "OCVObject.h" #import "OCVArrayables.h" #import "OCVGeometry.h" #import "OCVColorConversionType.h" #import "OCVInterpolationType.h" /*! * Common Image Operations as defined in imgproc.hpp */ @interface OCVImageOperation : OCVObject /*! * Reference type: cv::getGaussianKernel() */ + (OCVMat *)gaussianKernelForApertureSize:(NSInteger)size sigma:(double)sigma; + (OCVMat *)gaussianKernelForApertureSize:(NSInteger)size sigma:(double)sigma coefficientDepthType:(OCVDepthType)depthType; /*! * Reference type: cv::getDerivKernels() */ + (void)derivKernelsWithKx:(id)kx ky:(id)ky dx:(NSInteger)dx dy:(NSInteger)dy apertureSize:(NSInteger)size; + (void)derivKernelsWithKx:(id)kx ky:(id)ky dx:(NSInteger)dx dy:(NSInteger)dy apertureSize:(NSInteger)size normalize:(BOOL)normalize; + (void)derivKernelsWithKx:(id)kx ky:(id)ky dx:(NSInteger)dx dy:(NSInteger)dy apertureSize:(NSInteger)size normalize:(BOOL)normalize coefficientDepthType:(OCVDepthType)depthType; /*! * Reference type: cv::getGaborKernel() */ + (OCVMat *)gaborKernelForSize:(OCVSize)size sigma:(double)sigma theta:(double)theta waveLength:(double)lambd gamma:(double)gamma; + (OCVMat *)gaborKernelForSize:(OCVSize)size sigma:(double)sigma theta:(double)theta waveLength:(double)lambd gamma:(double)gamma phaseOffset:(double)phaseOffset; + (OCVMat *)gaborKernelForSize:(OCVSize)size sigma:(double)sigma theta:(double)theta waveLength:(double)lambd gamma:(double)gamma phaseOffset:(double)phaseOffset coefficientDepthType:(OCVDepthType)depthType; /*! * Reference type: cv::morphologyDefaultBorderValue() */ + (OCVScalar)morphologyDefaultBorderValue; /*! * Reference type: cv::getStructuringElement() */ + (OCVMat *)structuringElementWithShape:(OCVMorphShape)shape size:(OCVSize)size; + (OCVMat *)structuringElementWithShape:(OCVMorphShape)shape size:(OCVSize)size anchorPoint:(OCVPoint)anchorPoint; /*! * Reference type: cv::medianBlur() */ + (void)medianBlurWithSource:(id)source toDestination:(id)destination size:(NSInteger)size; /*! * Reference type: cv::GaussianBlur() */ + (void)gaussianBlurWithSource:(id)source toDestination:(id)destination size:(NSInteger)size sigmaX:(double)sigmaX; + (void)gaussianBlurWithSource:(id)source toDestination:(id)destination size:(NSInteger)size sigmaX:(double)sigmaX sigmaY:(double)sigmaY; + (void)gaussianBlurWithSource:(id)source toDestination:(id)destination size:(NSInteger)size sigmaX:(double)sigmaX sigmaY:(double)sigmaY borderType:(OCVBorderType)borderType; /*! * Reference type: cv::bilateralFilter() */ + (void)bilateralFilterWithSource:(id)source toDestination:(id)destination diameter:(NSInteger)diameter sigmaColor:(double)sigmaColor sigmaSpace:(double)sigmaSpace; + (void)bilateralFilterWithSource:(id)source toDestination:(id)destination diameter:(NSInteger)diameter sigmaColor:(double)sigmaColor sigmaSpace:(double)sigmaSpace borderType:(OCVBorderType)borderType; /*! * Reference type: cv::boxFilter() */ + (void)boxFilterWithSource:(id)source toDestination:(id)destination depth:(NSInteger)depth size:(NSInteger)size; + (void)boxFilterWithSource:(id)source toDestination:(id)destination depth:(NSInteger)depth size:(NSInteger)size anchorPoint:(OCVPoint)anchorPoint; + (void)boxFilterWithSource:(id)source toDestination:(id)destination depth:(NSInteger)depth size:(NSInteger)size anchorPoint:(OCVPoint)anchorPoint normalize:(BOOL)normalize; + (void)boxFilterWithSource:(id)source toDestination:(id)destination depth:(NSInteger)depth size:(NSInteger)size anchorPoint:(OCVPoint)anchorPoint normalize:(BOOL)normalize borderType:(OCVBorderType)borderType; /*! * Reference type: cv::sqrBoxFilter() */ + (void)squareBoxFilterWithSource:(id)source toDestination:(id)destination depth:(NSInteger)depth size:(NSInteger)size; + (void)squareBoxFilterWithSource:(id)source toDestination:(id)destination depth:(NSInteger)depth size:(NSInteger)size anchorPoint:(OCVPoint)anchorPoint; + (void)squareBoxFilterWithSource:(id)source toDestination:(id)destination depth:(NSInteger)depth size:(NSInteger)size anchorPoint:(OCVPoint)anchorPoint normalize:(BOOL)normalize; + (void)squareBoxFilterWithSource:(id)source toDestination:(id)destination depth:(NSInteger)depth size:(NSInteger)size anchorPoint:(OCVPoint)anchorPoint normalize:(BOOL)normalize borderType:(OCVBorderType)borderType; /*! * Reference type: cv::blur() */ + (void)blurWithSource:(id)source toDestination:(id)destination size:(NSInteger)size; + (void)blurWithSource:(id)source toDestination:(id)destination size:(NSInteger)size anchorPoint:(OCVPoint)anchorPoint; + (void)blurWithSource:(id)source toDestination:(id)destination size:(NSInteger)size anchorPoint:(OCVPoint)anchorPoint borderType:(OCVBorderType)borderType; /*! * Reference type: cv::filter2D() */ + (void)filter2DWithSource:(id)source toDestination:(id)destination depth:(NSInteger)depth kernel:(id)kernel; + (void)filter2DWithSource:(id)source toDestination:(id)destination depth:(NSInteger)depth kernel:(id)kernel anchorPoint:(OCVPoint)anchorPoint; + (void)filter2DWithSource:(id)source toDestination:(id)destination depth:(NSInteger)depth kernel:(id)kernel anchorPoint:(OCVPoint)anchorPoint delta:(double)delta; + (void)filter2DWithSource:(id)source toDestination:(id)destination depth:(NSInteger)depth kernel:(id)kernel anchorPoint:(OCVPoint)anchorPoint delta:(double)delta borderType:(OCVBorderType)borderType; /*! * Reference type: cv::sepFilter2D() */ + (void)separableFilter2DWithSource:(id)source toDestination:(id)destination depth:(NSInteger)depth kernelX:(id)kernelX kernelY:(id)kernelY; + (void)separableFilter2DWithSource:(id)source toDestination:(id)destination depth:(NSInteger)depth kernelX:(id)kernelX kernelY:(id)kernelY anchorPoint:(OCVPoint)anchorPoint; + (void)separableFilter2DWithSource:(id)source toDestination:(id)destination depth:(NSInteger)depth kernelX:(id)kernelX kernelY:(id)kernelY anchorPoint:(OCVPoint)anchorPoint delta:(double)delta; + (void)separableFilter2DWithSource:(id)source toDestination:(id)destination depth:(NSInteger)depth kernelX:(id)kernelX kernelY:(id)kernelY anchorPoint:(OCVPoint)anchorPoint delta:(double)delta borderType:(OCVBorderType)borderType; /*! * Reference type: cv::Sobel() */ + (void)sobelWithSource:(id)source toDestination:(id)destination depth:(NSInteger)depth dx:(NSInteger)dx dy:(NSInteger)dy; + (void)sobelWithSource:(id)source toDestination:(id)destination depth:(NSInteger)depth dx:(NSInteger)dx dy:(NSInteger)dy size:(NSInteger)size; + (void)sobelWithSource:(id)source toDestination:(id)destination depth:(NSInteger)depth dx:(NSInteger)dx dy:(NSInteger)dy size:(NSInteger)size scale:(double)scale; + (void)sobelWithSource:(id)source toDestination:(id)destination depth:(NSInteger)depth dx:(NSInteger)dx dy:(NSInteger)dy size:(NSInteger)size scale:(double)scale delta:(double)delta; + (void)sobelWithSource:(id)source toDestination:(id)destination depth:(NSInteger)depth dx:(NSInteger)dx dy:(NSInteger)dy size:(NSInteger)size scale:(double)scale delta:(double)delta borderType:(OCVBorderType)borderType; /*! * Reference type: cv::spatialGradient() */ + (void)spatialGradientWithSource:(id)source dx:(id)dx dy:(id)dy; + (void)spatialGradientWithSource:(id)source dx:(id)dx dy:(id)dy size:(NSInteger)size; + (void)spatialGradientWithSource:(id)source dx:(id)dx dy:(id)dy size:(NSInteger)size borderType:(OCVBorderType)borderType; /*! * Reference type: cv::Scharr() */ + (void)scharrWithSource:(id)source toDestination:(id)destination depth:(NSInteger)depth dx:(NSInteger)dx dy:(NSInteger)dy; + (void)scharrWithSource:(id)source toDestination:(id)destination depth:(NSInteger)depth dx:(NSInteger)dx dy:(NSInteger)dy scale:(double)scale; + (void)scharrWithSource:(id)source toDestination:(id)destination depth:(NSInteger)depth dx:(NSInteger)dx dy:(NSInteger)dy scale:(double)scale delta:(double)delta; + (void)scharrWithSource:(id)source toDestination:(id)destination depth:(NSInteger)depth dx:(NSInteger)dx dy:(NSInteger)dy scale:(double)scale delta:(double)delta borderType:(OCVBorderType)borderType; /*! * Reference type: cv::Laplacian() */ + (void)laplacianWithSource:(id)source toDestination:(id)destination depth:(NSInteger)depth; + (void)laplacianWithSource:(id)source toDestination:(id)destination depth:(NSInteger)depth size:(NSInteger)size; + (void)laplacianWithSource:(id)source toDestination:(id)destination depth:(NSInteger)depth size:(NSInteger)size scale:(double)scale; + (void)laplacianWithSource:(id)source toDestination:(id)destination depth:(NSInteger)depth size:(NSInteger)size scale:(double)scale delta:(double)delta; + (void)laplacianWithSource:(id)source toDestination:(id)destination depth:(NSInteger)depth size:(NSInteger)size scale:(double)scale delta:(double)delta borderType:(OCVBorderType)borderType; + (void)convertColorFromSource:(id)source toDestination:(id)destination withType:(OCVColorConversionType)type; + (void)convertColorFromSource:(id)source toDestination:(id)destination withType:(OCVColorConversionType)type withDestinationCn:(NSInteger)destinationCn; + (void)resizeFromSource:(id)source toDestination:(id)destination size:(OCVSize)size fx:(double)fx fy:(double)fy interpolation:(OCVInterpolationType)interpolation; + (void)equalizeHistogramFromSource:(id)source toDestination:(id)destination; + (void)rectangleOnSource:(id)source fromPoint:(OCVPoint)point1 toPoint:(OCVPoint)point2 withColor:(OCVScalar)color thickness:(NSInteger)thickness lineType:(NSInteger)lineType shift:(NSInteger)shift; + (void)rectangleOnSource:(id)source fromRect:(OCVRect)rect withColor:(OCVScalar)color thickness:(NSInteger)thickness lineType:(NSInteger)lineType shift:(NSInteger)shift; @end ================================================ FILE: LegoCV/LegoCV/Wrapper/ImageProcessing/OCVImageOperation.mm ================================================ // // OCVImageOperation.m // LegoCV // // Created by Dal Rupnik on 04/03/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import #import #import "OCVGeometry+Private.h" #import "OCVInputArray+Private.h" #import "OCVOutputArray+Private.h" #import "OCVInputOutputArray+Private.h" #import "OCVMatDataAllocator+Private.h" #import "OCVImageOperation.h" @implementation OCVImageOperation + (void)convertColorFromSource:(id)source toDestination:(id)destination withType:(OCVColorConversionType)type { [self convertColorFromSource:source toDestination:destination withType:type withDestinationCn:0]; } + (void)convertColorFromSource:(id)source toDestination:(id)destination withType:(OCVColorConversionType)type withDestinationCn:(NSInteger)destinationCn { cv::cvtColor(*source.input._input, *destination.output._output, (int)type, (int)destinationCn); } + (void)equalizeHistogramFromSource:(id)source toDestination:(id)destination { cv::equalizeHist(*source.input._input, *destination.output._output); } + (void)resizeFromSource:(id)source toDestination:(id)destination size:(OCVSize)size fx:(double)fx fy:(double)fy interpolation:(OCVInterpolationType)interpolation { cv::resize(*source.input._input, *destination.output._output, convertSize(size), fx, fy, (int)interpolation); } #pragma mark - Drawing + (void)rectangleOnSource:(id)source fromPoint:(OCVPoint)point1 toPoint:(OCVPoint)point2 withColor:(OCVScalar)color thickness:(NSInteger)thickness lineType:(NSInteger)lineType shift:(NSInteger)shift { #warning FIX THIS //cv::rectangle(*source.inputOutput._inputOutput, convertPoint(point1), convertPoint(point2), convertScalar(color), (int)thickness, (int)lineType, (int)shift); } + (void)rectangleOnSource:(id)source fromRect:(OCVRect)rect withColor:(OCVScalar)color thickness:(NSInteger)thickness lineType:(NSInteger)lineType shift:(NSInteger)shift { OCVPoint point1; point1.x = rect.origin.x; point1.y = rect.origin.y; OCVPoint point2; point2.x = rect.origin.x + rect.size.width; point2.y = rect.origin.y + rect.size.height; #warning FIX THIS //cv::rectangle(*source.inputOutput._inputOutput, convertPoint(point1), convertPoint(point2), convertScalar(color), (int)thickness, (int)lineType, (int)shift); } @end ================================================ FILE: LegoCV/LegoCV/Wrapper/ImageProcessing/OCVImageProcessing.h ================================================ // // OCVImageProcessing.h // LegoCV // // Created by Dal Rupnik on 07/03/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #ifndef OCVImageProcessing_h #define OCVImageProcessing_h #import "OCVImageOperation.h" #endif /* OCVImageProcessing_h */ ================================================ FILE: LegoCV/LegoCV/Wrapper/ImageProcessing/OCVImageTypes.h ================================================ // // OCVImageTypes.h // LegoCV // // Created by Dal Rupnik on 18/03/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #ifndef OCVImageTypes_h #define OCVImageTypes_h /*! * Reference type: cv::MorphTypes */ typedef NS_ENUM(NSInteger, OCVMorphType) { OCVMorphTypeErode = 0, OCVMorphTypeDilate = 1, OCVMorphTypeOpen = 2, OCVMorphTypeClose = 3, OCVMorphTypeGradient = 4, OCVMorphTypeTopHat = 5, OCVMorphTypeBlackHat = 6, OCVMorphTypeHitOrMiss = 7 }; /*! * Reference type: cv::MorphShapes */ typedef NS_ENUM(NSInteger, OCVMorphShape) { OCVMorphShapeRect = 0, OCVMorphShapeCross = 1, OCVMorphShapeEllipse = 2 }; /*! * Reference type: cv::DistanceTypes */ typedef NS_ENUM(NSInteger, OCVDistanceType) { OCVDistanceTypeUser = -1, //!< User defined distance OCVDistanceTypeL1 = 1, //!< distance = |x1-x2| + |y1-y2| OCVDistanceTypeL2 = 2, //!< the simple euclidean distance OCVDistanceTypeC = 3, //!< distance = max(|x1-x2|,|y1-y2|) OCVDistanceTypeL12 = 4, //!< L1-L2 metric: distance = 2(sqrt(1+x*x/2) - 1)) OCVDistanceTypeFair = 5, //!< distance = c^2(|x|/c-log(1+|x|/c)), c = 1.3998 OCVDistanceTypeWelsch = 6, //!< distance = c^2/2(1-exp(-(x/c)^2)), c = 2.9846 OCVDistanceTypeHubar = 7 //!< distance = |x|)image toLines:(id)lines; - (void)detectOnImage:(id)image toLines:(id)lines widthRegions:(id)widthRegions; - (void)detectOnImage:(id)image toLines:(id)lines widthRegions:(id)widthRegions precisions:(id)precisions; - (void)detectOnImage:(id)image toLines:(id)lines widthRegions:(id)widthRegions precisions:(id)precisions falseAlarms:(id)falseAlarms; - (void)drawSegmentsOnImage:(id)image lines:(id)lines; - (NSInteger)compareSegmentsInSize:(OCVSize)size lines1:(id)lines1 lines2:(id)lines2; - (NSInteger)compareSegmentsInSize:(OCVSize)size lines1:(id)lines1 lines2:(id)lines2 onImage:(id)image; @end ================================================ FILE: LegoCV/LegoCV/Wrapper/ImageProcessing/OCVLineSegmentDetector.m ================================================ // // OCVLineSegmentDetector.m // LegoCV // // Created by Dal Rupnik on 18/03/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVLineSegmentDetector.h" @implementation OCVLineSegmentDetector @end ================================================ FILE: LegoCV/LegoCV/Wrapper/ImageProcessing/OCVSubdiv2D.h ================================================ // // OCVSubdiv2D.h // LegoCV // // Created by Dal Rupnik on 18/03/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" #import "OCVGeometry.h" /*! * Reference type: cv::Subdiv2D::Point location cases */ typedef NS_ENUM(NSInteger, OCVSubdiv2DPointLocationType) { OCVSubdiv2DPointLocationTypeError = -2, //!< Point location error OCVSubdiv2DPointLocationTypeOutsideRect = -1, //!< Point outside the subdivision bounding rect OCVSubdiv2DPointLocationTypeInside = 0, //!< Point inside some facet OCVSubdiv2DPointLocationTypeVertex = 1, //!< Point coincides with one of the subdivision vertices OCVSubdiv2DPointLocationTypeOnEdge = 2 //!< Point on some edge }; /*! * Reference type: cv::Subdiv2D::Edge type navigation */ typedef NS_ENUM(NSInteger, OCVSubdiv2DEdgeType) { OCVSubdiv2DEdgeTypeNextAroundOrg = 0x00, OCVSubdiv2DEdgeTypeNextAroundDst = 0x22, OCVSubdiv2DEdgeTypePreviousAroundOrg = 0x11, OCVSubdiv2DEdgeTypePreviousAroundDst = 0x33, OCVSubdiv2DEdgeTypeNextAroundLeft = 0x13, OCVSubdiv2DEdgeTypeNextAroundRight = 0x31, OCVSubdiv2DEdgeTypePreviousAroundLeft = 0x20, OCVSubdiv2DEdgeTypePreviousAroundRight = 0x02 }; typedef NS_ENUM(NSInteger, OCVSubdiv2DRotationType) { OCVSubdiv2DRotationTypeInputEdge = 0, OCVSubdiv2DRotationTypeRotatedEdge = 1, OCVSubdiv2DRotationTypeReversedEdge = 2, OCVSubdiv2DRotationTypeReversedRotatedEdge = 3 }; // // MARK: Utility classes and structs to improve API design // /*! * Used with locating point methods */ typedef struct OCVSubdiv2DLocateResult { OCVSubdiv2DEdgeType edgeType; NSInteger edge; NSInteger vertex; } OCVSubdiv2DLocateResult; typedef struct OCVSubdiv2DNearestResult { OCVPoint2f nearestPoint; NSInteger vertex; } OCVSubdiv2DNearestResult; typedef struct OCVSubdiv2DVertexResult { OCVPoint2f vertex; NSInteger firstEdge; } OCVSubdiv2DVertexResult; typedef struct OCVSubdiv2DEdgePointResult { NSInteger edge; OCVPoint2f point; } OCVSubdiv2DEdgePointResult; NS_ASSUME_NONNULL_BEGIN @interface OCVVoronoiFacetResult : OCVObject // // TODO: Implement type here, array of arrays of OCVPoint2f // @property (nonatomic, strong) NSArray * facets; // // TODO: Implement type here, array of OCVPoint2f // @property (nonatomic, strong) NSArray* facetCenters; @end /*! * Reference type: cv::Subdiv2D */ @interface OCVSubdiv2D : OCVObject // // TODO: Implement type here, an array of Vec4f elements // @property (nonatomic, readonly) NSArray* edges; // // TODO: Implement Swift wrapper, numbers are all integers // @property (nonatomic, readonly) NSArray* leadingEdges; // // TODO: Implement type here, an array of Vec6f elements // @property (nonatomic, readonly) NSArray* triangles; - (instancetype)initWithRect:(OCVRect)rect; - (void)setupDelaunayWithRect:(OCVRect)rect; - (NSInteger)insertPoint:(OCVPoint2f)point; /*! * Inserts vector of OCVPoint2f structs * * TODO: Add Swift wrapper for this */ - (NSInteger)insertArray:(NSArray *)array; - (OCVSubdiv2DLocateResult)locatePoint:(OCVPoint2f)point; - (OCVSubdiv2DNearestResult)findNearestWithPoint:(OCVPoint2f)point; - (OCVVoronoiFacetResult *)voronoiFacetListWithIndexes:(NSArray *)indexes; - (OCVSubdiv2DVertexResult)vertexResultWithId:(NSInteger)vertex; - (NSInteger)edgeWithEdge:(NSInteger)edge nextEdgeType:(OCVSubdiv2DEdgeType)nextEdgeType; - (NSInteger)nextEdgeWithEdge:(NSInteger)edge; - (NSInteger)rotateEdgeWithEdge:(NSInteger)edge rotationType:(OCVSubdiv2DRotationType)rotationType; - (NSInteger)symEdgeWithEdge:(NSInteger)edge; - (OCVSubdiv2DEdgePointResult)edgeOriginWithEdge:(NSInteger)edge; - (OCVSubdiv2DEdgePointResult)edgeDistanceToEdge:(NSInteger)edge; @end NS_ASSUME_NONNULL_END ================================================ FILE: LegoCV/LegoCV/Wrapper/ImageProcessing/OCVSubdiv2D.m ================================================ // // OCVSubdiv2D.m // LegoCV // // Created by Dal Rupnik on 18/03/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVSubdiv2D.h" @implementation OCVSubdiv2D @end ================================================ FILE: LegoCV/LegoCV/Wrapper/LineDescriptor/OCVLSDDetector.h ================================================ // // OCVLSDDetector.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVLSDDetector : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/LineDescriptor/OCVLSDDetector.m ================================================ // // OCVLSDDetector.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVLSDDetector.h" @implementation OCVLSDDetector @end ================================================ FILE: LegoCV/LegoCV/Wrapper/ML/Enum/OCVBoostType.h ================================================ // // OCVBoostType.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVBoostType : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/ML/Enum/OCVBoostType.m ================================================ // // OCVBoostType.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVBoostType.h" @implementation OCVBoostType @end ================================================ FILE: LegoCV/LegoCV/Wrapper/ML/Enum/OCVVarType.h ================================================ // // OCVVarType.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVVarType : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/ML/Enum/OCVVarType.m ================================================ // // OCVVarType.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVVarType.h" @implementation OCVVarType @end ================================================ FILE: LegoCV/LegoCV/Wrapper/ML/OCVANNMLP.h ================================================ // // OCVANNMLP.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVANNMLP : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/ML/OCVANNMLP.m ================================================ // // OCVANNMLP.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVANNMLP.h" @implementation OCVANNMLP @end ================================================ FILE: LegoCV/LegoCV/Wrapper/ML/OCVBoost.h ================================================ // // OCVBoost.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVBoost : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/ML/OCVBoost.m ================================================ // // OCVBoost.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVBoost.h" @implementation OCVBoost @end ================================================ FILE: LegoCV/LegoCV/Wrapper/ML/OCVDTree.h ================================================ // // OCVDTree.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVDTree : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/ML/OCVDTree.m ================================================ // // OCVDTree.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVDTree.h" @implementation OCVDTree @end ================================================ FILE: LegoCV/LegoCV/Wrapper/ML/OCVEM.h ================================================ // // OCVEM.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVEM : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/ML/OCVEM.m ================================================ // // OCVEM.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVEM.h" @implementation OCVEM @end ================================================ FILE: LegoCV/LegoCV/Wrapper/ML/OCVKNearest.h ================================================ // // OCVKNearest.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVKNearest : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/ML/OCVKNearest.m ================================================ // // OCVKNearest.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVKNearest.h" @implementation OCVKNearest @end ================================================ FILE: LegoCV/LegoCV/Wrapper/ML/OCVLogisticRegression.h ================================================ // // OCVLogisticRegression.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVLogisticRegression : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/ML/OCVLogisticRegression.m ================================================ // // OCVLogisticRegression.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVLogisticRegression.h" @implementation OCVLogisticRegression @end ================================================ FILE: LegoCV/LegoCV/Wrapper/ML/OCVNormalBayesClassifier.h ================================================ // // OCVNormalBayesClassifier.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVNormalBayesClassifier : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/ML/OCVNormalBayesClassifier.m ================================================ // // OCVNormalBayesClassifier.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVNormalBayesClassifier.h" @implementation OCVNormalBayesClassifier @end ================================================ FILE: LegoCV/LegoCV/Wrapper/ML/OCVRTree.h ================================================ // // OCVRTree.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVRTree : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/ML/OCVRTree.m ================================================ // // OCVRTree.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVRTree.h" @implementation OCVRTree @end ================================================ FILE: LegoCV/LegoCV/Wrapper/ML/OCVSVM.h ================================================ // // OCVSVM.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVSVM : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/ML/OCVSVM.m ================================================ // // OCVSVM.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVSVM.h" @implementation OCVSVM @end ================================================ FILE: LegoCV/LegoCV/Wrapper/ML/OCVStatModelExtensions.h ================================================ // // OCVStatModelExtensions.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVStatModelExtensions : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/ML/OCVStatModelExtensions.m ================================================ // // OCVStatModelExtensions.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVStatModelExtensions.h" @implementation OCVStatModelExtensions @end ================================================ FILE: LegoCV/LegoCV/Wrapper/ML/OCVTrainData.h ================================================ // // OCVTrainData.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVTrainData : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/ML/OCVTrainData.m ================================================ // // OCVTrainData.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVTrainData.h" @implementation OCVTrainData @end ================================================ FILE: LegoCV/LegoCV/Wrapper/ML/Structure/OCVMCvDTreeNode.h ================================================ // // OCVMCvDTreeNode.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVMCvDTreeNode : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/ML/Structure/OCVMCvDTreeNode.m ================================================ // // OCVMCvDTreeNode.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVMCvDTreeNode.h" @implementation OCVMCvDTreeNode @end ================================================ FILE: LegoCV/LegoCV/Wrapper/ML/Structure/OCVMCvDTreeSplit.h ================================================ // // OCVMCvDTreeSplit.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVMCvDTreeSplit : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/ML/Structure/OCVMCvDTreeSplit.m ================================================ // // OCVMCvDTreeSplit.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVMCvDTreeSplit.h" @implementation OCVMCvDTreeSplit @end ================================================ FILE: LegoCV/LegoCV/Wrapper/ML/Structure/OCVMCvDTreeSplitMOrder.h ================================================ // // OCVMCvDTreeSplitMOrder.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVMCvDTreeSplitMOrder : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/ML/Structure/OCVMCvDTreeSplitMOrder.m ================================================ // // OCVMCvDTreeSplitMOrder.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVMCvDTreeSplitMOrder.h" @implementation OCVMCvDTreeSplitMOrder @end ================================================ FILE: LegoCV/LegoCV/Wrapper/ML/Structure/OCVMCvParamGrid.h ================================================ // // OCVMCvParamGrid.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVMCvParamGrid : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/ML/Structure/OCVMCvParamGrid.m ================================================ // // OCVMCvParamGrid.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVMCvParamGrid.h" @implementation OCVMCvParamGrid @end ================================================ FILE: LegoCV/LegoCV/Wrapper/OCR/OCVOrientation.h ================================================ // // OCVOrientation.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVOrientation : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/OCR/OCVOrientation.m ================================================ // // OCVOrientation.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVOrientation.h" @implementation OCVOrientation @end ================================================ FILE: LegoCV/LegoCV/Wrapper/OCR/OCVPageIterator.h ================================================ // // OCVPageIterator.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVPageIterator : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/OCR/OCVPageIterator.m ================================================ // // OCVPageIterator.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVPageIterator.h" @implementation OCVPageIterator @end ================================================ FILE: LegoCV/LegoCV/Wrapper/OCR/OCVTesseract.h ================================================ // // OCVTesseract.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVTesseract : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/OCR/OCVTesseract.m ================================================ // // OCVTesseract.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVTesseract.h" @implementation OCVTesseract @end ================================================ FILE: LegoCV/LegoCV/Wrapper/OCR/OCVTesseractResult.h ================================================ // // OCVTesseractResult.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVTesseractResult : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/OCR/OCVTesseractResult.m ================================================ // // OCVTesseractResult.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVTesseractResult.h" @implementation OCVTesseractResult @end ================================================ FILE: LegoCV/LegoCV/Wrapper/ObjectDetection/OCVBaseCascadeClassifier.h ================================================ // // OCVBaseCascadeClassifier.h // LegoCV // // Created by Dal Rupnik on 18/03/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVPointerObject.h" #import "OCVArrayables.h" #import "OCVSize.h" #import "OCVRect.h" #import "OCVCascadeClassifierResult.h" #import "OCVCascadeClassifierOptions.h" NS_ASSUME_NONNULL_BEGIN @interface OCVMaskGenerator : OCVObject - (instancetype)initWithSource:(OCVMat *)source; - (OCVMat *)generateMaskWithSource:(OCVMat *)source; @end @interface OCVBaseCascadeClassifier : OCVPointerObject @property (nonatomic, readonly) BOOL isEmpty; @property (nonatomic, readonly) NSInteger featureType; @property (nullable, nonatomic, strong) OCVMaskGenerator *maskGenerator; @property (nonatomic, readonly) BOOL isOldFormatCascade; @property (nonatomic, readonly) OCVSize originalWindowSize; - (instancetype)initWithURL:(NSURL *)url; - (instancetype)initWithPath:(NSString *)path; /*! * Needs to be absolute path to the XML model for classifier: Bundle.main.bundlePath + relativePath */ - (void)loadPath:(NSString *)path; - (void)loadURL:(NSURL *)url; // // TODO: Add Swift wrapper method to return OCVRect directly. // - (NSArray*)detectMultiScaleOnImage:(id)image scaleFactor:(double)scaleFactor; - (NSArray*)detectMultiScaleOnImage:(id)image scaleFactor:(double)scaleFactor minNeighbours:(NSInteger)minNeighbours; - (NSArray*)detectMultiScaleOnImage:(id)image scaleFactor:(double)scaleFactor minNeighbours:(NSInteger)minNeighbours flags:(NSInteger)flags; - (NSArray*)detectMultiScaleOnImage:(id)image scaleFactor:(double)scaleFactor minNeighbours:(NSInteger)minNeighbours flags:(NSInteger)flags minSize:(OCVSize)minSize; - (NSArray*)detectMultiScaleOnImage:(id)image scaleFactor:(double)scaleFactor minNeighbours:(NSInteger)minNeighbours flags:(NSInteger)flags minSize:(OCVSize)minSize maxSize:(OCVSize)maxSize; /*! * Objective wrapper call by specifying options. */ - (OCVCascadeClassifierResult *)detectMultiScaleOnImage:(id)image; - (OCVCascadeClassifierResult *)detectMultiScaleOnImage:(id)image withOptions:(OCVCascadeClassifierOptions *)options; @end NS_ASSUME_NONNULL_END ================================================ FILE: LegoCV/LegoCV/Wrapper/ObjectDetection/OCVBaseCascadeClassifier.m ================================================ // // OCVBaseCascadeClassifier.m // LegoCV // // Created by Dal Rupnik on 18/03/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVBaseCascadeClassifier.h" @implementation OCVBaseCascadeClassifier @end ================================================ FILE: LegoCV/LegoCV/Wrapper/ObjectDetection/OCVCascadeClassifier.h ================================================ // // OCVCascadeClassifier.h // LegoCV // // Created by Dal Rupnik on 24/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVBaseCascadeClassifier.h" #import "OCVInputArrayable.h" #import "OCVSize.h" #import "OCVRect.h" #import "OCVPersistence.h" NS_ASSUME_NONNULL_BEGIN @interface OCVCascadeClassifier : OCVBaseCascadeClassifier - (void)readWithNode:(OCVFileNode *)node; @end NS_ASSUME_NONNULL_END ================================================ FILE: LegoCV/LegoCV/Wrapper/ObjectDetection/OCVCascadeClassifier.mm ================================================ // // OCVCascadeClassifier.mm // LegoCV // // Created by Dal Rupnik on 24/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import #import #import "OCVCascadeClassifier.h" #import "OCVInputArray+Private.h" #import "OCVRect+Private.h" #import "OCVSize+Private.h" @interface OCVCascadeClassifier () @property (nonatomic, readonly) cv::CascadeClassifier* classifier; @end @implementation OCVCascadeClassifier - (BOOL)isOldFormatCascade { return self.classifier->isOldFormatCascade(); } - (OCVSize)originalWindowSize { return convertSize(self.classifier->getOriginalWindowSize()); } - (cv::CascadeClassifier *)classifier { return (cv::CascadeClassifier *)pointer; } - (instancetype)init { cv::CascadeClassifier* classifier = new cv::CascadeClassifier(); self = [super initWithPointer:classifier]; return self; } - (instancetype)initWithPath:(NSString *)path { self = [self init]; if (self) { [self loadPath:path]; } return self; } - (instancetype)initWithURL:(NSURL *)url { return [self initWithPath:[self.class convertUrlToPath:url]]; } #pragma mark - Public Methods - (void)loadURL:(NSURL *)url { [self loadPath:[self.class convertUrlToPath:url]]; } - (void)loadPath:(NSString *)path { self.classifier->load(path.UTF8String); } - (NSArray*)detectMultiscaleWith:(id)image { return [self detectMultiscaleWith:image scaleFactor:1.1]; } - (NSArray*)detectMultiscaleWith:(id)image scaleFactor:(double)scaleFactor { return [self detectMultiscaleWith:image scaleFactor:scaleFactor minNeighbours:3]; } - (NSArray*)detectMultiscaleWith:(id)image scaleFactor:(double)scaleFactor minNeighbours:(NSInteger)minNeighbours { return [self detectMultiscaleWith:image scaleFactor:scaleFactor minNeighbours:minNeighbours flags:0]; } - (NSArray*)detectMultiscaleWith:(id)image scaleFactor:(double)scaleFactor minNeighbours:(NSInteger)minNeighbours flags:(NSInteger)flags { return [self detectMultiscaleWith:image scaleFactor:scaleFactor minNeighbours:minNeighbours flags:flags minSize:OCVSize()]; } - (NSArray*)detectMultiscaleWith:(id)image scaleFactor:(double)scaleFactor minNeighbours:(NSInteger)minNeighbours flags:(NSInteger)flags minSize:(OCVSize)minSize { return [self detectMultiscaleWith:image scaleFactor:scaleFactor minNeighbours:minNeighbours flags:flags minSize:minSize maxSize:OCVSize()]; } - (NSArray*)detectMultiscaleWith:(id)image scaleFactor:(double)scaleFactor minNeighbours:(NSInteger)minNeighbours flags:(NSInteger)flags minSize:(OCVSize)minSize maxSize:(OCVSize)maxSize { std::vector faceRects; self.classifier->detectMultiScale(*image.input._input, faceRects, scaleFactor, (int)minNeighbours, (int)flags, convertSize(minSize), convertSize(maxSize)); return [self convertRects:faceRects]; } #pragma mark - Private Methods - (NSArray*)convertRects:(std::vector)rects { NSMutableArray *values = [NSMutableArray array]; int i = 0; // // Convert Face Rects into OCVRectValue wrappers to return correctly. // for (std::vector::const_iterator r = rects.begin(); r != rects.end(); r++, i++) { OCVRect rect = convertRect(rects[i]); [values addObject:[[OCVRectValue alloc] initWithRect:rect]]; } return values.copy; } #pragma mark - Private Class Methods + (NSString *)convertUrlToPath:(NSURL *)url { // // TODO: Correctly handle all path variants, such as file:// // return [url absoluteString]; } @end ================================================ FILE: LegoCV/LegoCV/Wrapper/ObjectDetection/OCVCascadeClassifierOptions.h ================================================ // // OCVCascadeClassifierOptions.h // LegoCV // // Created by Dal Rupnik on 18/03/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVSize.h" #import "OCVObject.h" /*! * Reference type: cv::BaseCascadeClassifier enum */ typedef NS_OPTIONS(NSInteger, OCVCascadeClassifierFlags) { OCVCascadeClassifierFlagDoCannyPruning = 1, OCVCascadeClassifierFlagScaleImage = 2, OCVCascadeClassifierFlagFindBiggestObject = 4, OCVCascadeClassifierFlagDoRoughSearch = 8 }; /*! * Simple object wrapper around options for cv::BaseCascadeClassifier::detectMultiScale() function. * Options effectively affect the contents of the returned result object. * * @note: If outputLevelWeights property is set to YES, outputNumberOfDetections property is ignored, * if set to NO (default), outputRejectLevels property is ignored. */ @interface OCVCascadeClassifierOptions : OCVObject @property (nonatomic, assign) BOOL outputNumberOfDetections; @property (nonatomic, assign) BOOL outputLevelWeights; @property (nonatomic, assign) BOOL outputRejectLevels; @property (nonatomic, assign) double scaleFactor; @property (nonatomic, assign) NSInteger minNeighbors; @property (nonatomic, assign) OCVCascadeClassifierFlags flags; @property (nonatomic, assign) OCVSize minSize; @property (nonatomic, assign) OCVSize maxSize; /*! * Default options will only return objects. */ + (nonnull instancetype)defaultOptions; @end ================================================ FILE: LegoCV/LegoCV/Wrapper/ObjectDetection/OCVCascadeClassifierOptions.m ================================================ // // OCVCascadeClassifierOptions.m // LegoCV // // Created by Dal Rupnik on 18/03/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVCascadeClassifierOptions.h" @implementation OCVCascadeClassifierOptions @end ================================================ FILE: LegoCV/LegoCV/Wrapper/ObjectDetection/OCVCascadeClassifierResult.h ================================================ // // OCVCascadeClassifierResult.h // LegoCV // // Created by Dal Rupnik on 18/03/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" #import "OCVRect.h" NS_ASSUME_NONNULL_BEGIN @interface OCVCascadeClassifierResult : OCVObject @property (nonatomic, strong) NSArray * objects; @property (nullable, nonatomic, strong) NSArray * numberOfDetections; @property (nullable, nonatomic, strong) NSArray * rejectLevels; @property (nullable, nonatomic, strong) NSArray * levelWeights; @end NS_ASSUME_NONNULL_END ================================================ FILE: LegoCV/LegoCV/Wrapper/ObjectDetection/OCVCascadeClassifierResult.m ================================================ // // OCVCascadeClassifierResult.m // LegoCV // // Created by Dal Rupnik on 18/03/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVCascadeClassifierResult.h" @implementation OCVCascadeClassifierResult @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Ocl/OCVDevice.h ================================================ // // OCVDevice.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVDevice : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Ocl/OCVDevice.m ================================================ // // OCVDevice.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVDevice.h" @implementation OCVDevice @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Ocl/OCVImage2D.h ================================================ // // OCVImage2D.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVImage2D : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Ocl/OCVImage2D.m ================================================ // // OCVImage2D.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVImage2D.h" @implementation OCVImage2D @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Ocl/OCVKernel.h ================================================ // // OCVKernel.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVKernel : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Ocl/OCVKernel.m ================================================ // // OCVKernel.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVKernel.h" @implementation OCVKernel @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Ocl/OCVKernelConfiguration.h ================================================ // // OCVKernelConfiguration.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVKernelConfiguration : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Ocl/OCVKernelConfiguration.m ================================================ // // OCVKernelConfiguration.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVKernelConfiguration.h" @implementation OCVKernelConfiguration @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Ocl/OCVPlatformInfo.h ================================================ // // OCVPlatformInfo.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVPlatformInfo : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Ocl/OCVPlatformInfo.m ================================================ // // OCVPlatformInfo.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVPlatformInfo.h" @implementation OCVPlatformInfo @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Ocl/OCVProgramSource.h ================================================ // // OCVProgramSource.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVProgramSource : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Ocl/OCVProgramSource.m ================================================ // // OCVProgramSource.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVProgramSource.h" @implementation OCVProgramSource @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Ocl/OCVQueue.h ================================================ // // OCVQueue.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVQueue : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Ocl/OCVQueue.m ================================================ // // OCVQueue.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVQueue.h" @implementation OCVQueue @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Plot/OCVPlot.h ================================================ // // OCVPlot.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVPlot : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Plot/OCVPlot.m ================================================ // // OCVPlot.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVPlot.h" @implementation OCVPlot @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Reflection/OCVReflectImage.h ================================================ // // OCVReflectImage.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVReflectImage : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Reflection/OCVReflectImage.m ================================================ // // OCVReflectImage.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVReflectImage.h" @implementation OCVReflectImage @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Shape/OCVAffineTransformer.h ================================================ // // OCVAffineTransformer.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVAffineTransformer : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Shape/OCVAffineTransformer.m ================================================ // // OCVAffineTransformer.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVAffineTransformer.h" @implementation OCVAffineTransformer @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Shape/OCVChiHistogramCostExtractor.h ================================================ // // OCVChiHistogramCostExtractor.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVChiHistogramCostExtractor : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Shape/OCVChiHistogramCostExtractor.m ================================================ // // OCVChiHistogramCostExtractor.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVChiHistogramCostExtractor.h" @implementation OCVChiHistogramCostExtractor @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Shape/OCVEMDHistogramCostExtractor.h ================================================ // // OCVEMDHistogramCostExtractor.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVEMDHistogramCostExtractor : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Shape/OCVEMDHistogramCostExtractor.m ================================================ // // OCVEMDHistogramCostExtractor.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVEMDHistogramCostExtractor.h" @implementation OCVEMDHistogramCostExtractor @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Shape/OCVEMDL1HistogramCostExtractor.h ================================================ // // OCVEMDL1HistogramCostExtractor.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVEMDL1HistogramCostExtractor : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Shape/OCVEMDL1HistogramCostExtractor.m ================================================ // // OCVEMDL1HistogramCostExtractor.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVEMDL1HistogramCostExtractor.h" @implementation OCVEMDL1HistogramCostExtractor @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Shape/OCVHausdorffDistanceExtractor.h ================================================ // // OCVHausdorffDistanceExtractor.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVHausdorffDistanceExtractor : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Shape/OCVHausdorffDistanceExtractor.m ================================================ // // OCVHausdorffDistanceExtractor.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVHausdorffDistanceExtractor.h" @implementation OCVHausdorffDistanceExtractor @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Shape/OCVHistogramCostExtractor.h ================================================ // // OCVHistogramCostExtractor.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVHistogramCostExtractor : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Shape/OCVHistogramCostExtractor.m ================================================ // // OCVHistogramCostExtractor.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVHistogramCostExtractor.h" @implementation OCVHistogramCostExtractor @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Shape/OCVNormHistogramCostExtractor.h ================================================ // // OCVNormHistogramCostExtractor.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVNormHistogramCostExtractor : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Shape/OCVNormHistogramCostExtractor.m ================================================ // // OCVNormHistogramCostExtractor.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVNormHistogramCostExtractor.h" @implementation OCVNormHistogramCostExtractor @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Shape/OCVShapeContextDistanceExtractor.h ================================================ // // OCVShapeContextDistanceExtractor.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVShapeContextDistanceExtractor : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Shape/OCVShapeContextDistanceExtractor.m ================================================ // // OCVShapeContextDistanceExtractor.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVShapeContextDistanceExtractor.h" @implementation OCVShapeContextDistanceExtractor @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Shape/OCVShapeDistanceExtractor.h ================================================ // // OCVShapeDistanceExtractor.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVShapeDistanceExtractor : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Shape/OCVShapeDistanceExtractor.m ================================================ // // OCVShapeDistanceExtractor.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVShapeDistanceExtractor.h" @implementation OCVShapeDistanceExtractor @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Shape/OCVThinPlateSplineShapeTransformer.h ================================================ // // OCVThinPlateSplineShapeTransformer.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVThinPlateSplineShapeTransformer : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Shape/OCVThinPlateSplineShapeTransformer.m ================================================ // // OCVThinPlateSplineShapeTransformer.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVThinPlateSplineShapeTransformer.h" @implementation OCVThinPlateSplineShapeTransformer @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Stitching/OCVCompressedRectilinearWarper.h ================================================ // // OCVCompressedRectilinearWarper.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVCompressedRectilinearWarper : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Stitching/OCVCompressedRectilinearWarper.m ================================================ // // OCVCompressedRectilinearWarper.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVCompressedRectilinearWarper.h" @implementation OCVCompressedRectilinearWarper @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Stitching/OCVFeaturesFinder.h ================================================ // // OCVFeaturesFinder.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVFeaturesFinder : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Stitching/OCVFeaturesFinder.m ================================================ // // OCVFeaturesFinder.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVFeaturesFinder.h" @implementation OCVFeaturesFinder @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Stitching/OCVFisheyeWarper.h ================================================ // // OCVFisheyeWarper.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVFisheyeWarper : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Stitching/OCVFisheyeWarper.m ================================================ // // OCVFisheyeWarper.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVFisheyeWarper.h" @implementation OCVFisheyeWarper @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Stitching/OCVMercatorWarper.h ================================================ // // OCVMercatorWarper.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVMercatorWarper : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Stitching/OCVMercatorWarper.m ================================================ // // OCVMercatorWarper.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVMercatorWarper.h" @implementation OCVMercatorWarper @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Stitching/OCVOrbFeaturesFinder.h ================================================ // // OCVOrbFeaturesFinder.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVOrbFeaturesFinder : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Stitching/OCVOrbFeaturesFinder.m ================================================ // // OCVOrbFeaturesFinder.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVOrbFeaturesFinder.h" @implementation OCVOrbFeaturesFinder @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Stitching/OCVPaniniPortraitWarper.h ================================================ // // OCVPaniniPortraitWarper.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVPaniniPortraitWarper : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Stitching/OCVPaniniPortraitWarper.m ================================================ // // OCVPaniniPortraitWarper.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVPaniniPortraitWarper.h" @implementation OCVPaniniPortraitWarper @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Stitching/OCVPaniniWarper.h ================================================ // // OCVPaniniWarper.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVPaniniWarper : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Stitching/OCVPaniniWarper.m ================================================ // // OCVPaniniWarper.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVPaniniWarper.h" @implementation OCVPaniniWarper @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Stitching/OCVPlaneWarper.h ================================================ // // OCVPlaneWarper.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVPlaneWarper : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Stitching/OCVPlaneWarper.m ================================================ // // OCVPlaneWarper.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVPlaneWarper.h" @implementation OCVPlaneWarper @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Stitching/OCVSphericalWarper.h ================================================ // // OCVSphericalWarper.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVSphericalWarper : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Stitching/OCVSphericalWarper.m ================================================ // // OCVSphericalWarper.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVSphericalWarper.h" @implementation OCVSphericalWarper @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Stitching/OCVStereographicWarper.h ================================================ // // OCVStereographicWarper.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVStereographicWarper : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Stitching/OCVStereographicWarper.m ================================================ // // OCVStereographicWarper.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVStereographicWarper.h" @implementation OCVStereographicWarper @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Stitching/OCVSticher.h ================================================ // // OCVSticher.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVSticher : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Stitching/OCVSticher.m ================================================ // // OCVSticher.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVSticher.h" @implementation OCVSticher @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Stitching/OCVTransverseMercatorWarper.h ================================================ // // OCVTransverseMercatorWarper.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVTransverseMercatorWarper : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Stitching/OCVTransverseMercatorWarper.m ================================================ // // OCVTransverseMercatorWarper.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVTransverseMercatorWarper.h" @implementation OCVTransverseMercatorWarper @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Stitching/OCVWarperCreator.h ================================================ // // OCVWarperCreator.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVWarperCreator : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Stitching/OCVWarperCreator.m ================================================ // // OCVWarperCreator.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVWarperCreator.h" @implementation OCVWarperCreator @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Structure/OCVRgb.h ================================================ // // OCVRgb.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVRgb : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Structure/OCVRgb.m ================================================ // // OCVRgb.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVRgb.h" @implementation OCVRgb @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Structure/OCVRgba.h ================================================ // // OCVRgba.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVRgba : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Structure/OCVRgba.m ================================================ // // OCVRgba.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVRgba.h" @implementation OCVRgba @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Superres/OCVFrameSource.h ================================================ // // OCVFrameSource.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVFrameSource : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Superres/OCVFrameSource.m ================================================ // // OCVFrameSource.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVFrameSource.h" @implementation OCVFrameSource @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Superres/OCVSuperResolution.h ================================================ // // OCVSuperResolution.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVSuperResolution : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Superres/OCVSuperResolution.m ================================================ // // OCVSuperResolution.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVSuperResolution.h" @implementation OCVSuperResolution @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Text/OCVERFilter.h ================================================ // // OCVERFilter.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVERFilter : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Text/OCVERFilter.m ================================================ // // OCVERFilter.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVERFilter.h" @implementation OCVERFilter @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Text/OCVERFilterNM1.h ================================================ // // OCVERFilterNM1.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVERFilterNM1 : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Text/OCVERFilterNM1.m ================================================ // // OCVERFilterNM1.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVERFilterNM1.h" @implementation OCVERFilterNM1 @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Text/OCVERFilterNM2.h ================================================ // // OCVERFilterNM2.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVERFilterNM2 : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Text/OCVERFilterNM2.m ================================================ // // OCVERFilterNM2.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVERFilterNM2.h" @implementation OCVERFilterNM2 @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Text/OCVERStat.h ================================================ // // OCVERStat.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVERStat : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Text/OCVERStat.m ================================================ // // OCVERStat.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVERStat.h" @implementation OCVERStat @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Tiff/OCVTiffWriter.h ================================================ // // OCVTiffWriter.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVTiffWriter : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Tiff/OCVTiffWriter.m ================================================ // // OCVTiffWriter.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVTiffWriter.h" @implementation OCVTiffWriter @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Tiff/OCVTileTiffWriter.h ================================================ // // OCVTileTiffWriter.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVTileTiffWriter : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Tiff/OCVTileTiffWriter.m ================================================ // // OCVTileTiffWriter.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVTileTiffWriter.h" @implementation OCVTileTiffWriter @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Tracking/OCVMultiTracker.h ================================================ // // OCVMultiTracker.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVMultiTracker : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Tracking/OCVMultiTracker.m ================================================ // // OCVMultiTracker.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVMultiTracker.h" @implementation OCVMultiTracker @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Tracking/OCVTracker.h ================================================ // // OCVTracker.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVTracker : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Tracking/OCVTracker.m ================================================ // // OCVTracker.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVTracker.h" @implementation OCVTracker @end ================================================ FILE: LegoCV/LegoCV/Wrapper/UI/OCVHistogramBox.h ================================================ // // OCVHistogramBox.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVHistogramBox : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/UI/OCVHistogramBox.m ================================================ // // OCVHistogramBox.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVHistogramBox.h" @implementation OCVHistogramBox @end ================================================ FILE: LegoCV/LegoCV/Wrapper/UI/OCVHistogramViewer.h ================================================ // // OCVHistogramViewer.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVHistogramViewer : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/UI/OCVHistogramViewer.m ================================================ // // OCVHistogramViewer.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVHistogramViewer.h" @implementation OCVHistogramViewer @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Utilities/OCVObject.h ================================================ // // OCVObject.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import @interface OCVObject : NSObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Utilities/OCVObject.m ================================================ // // OCVObject.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @implementation OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Utilities/OCVPointerObject.h ================================================ // // OCVPointerObject.h // LegoCV // // Created by Dal Rupnik on 22/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVPointerObject : OCVObject { @public void *pointer; } - (instancetype)initWithPointer:(void *)unsafePointer; @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Utilities/OCVPointerObject.m ================================================ // // OCVPointerObject.m // LegoCV // // Created by Dal Rupnik on 22/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVPointerObject.h" @implementation OCVPointerObject - (instancetype)initWithPointer:(void *)unsafePointer { self = [super init]; if (self) { pointer = unsafePointer; } return self; } - (void)dealloc { if (pointer != NULL) { free(pointer); } } @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Utilities/OCVReferenceObject.h ================================================ // // OCVReferenceObject.h // LegoCV // // Created by Dal Rupnik on 23/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVReferenceObject : OCVObject @property (nonatomic, strong) id object; - (instancetype)initWithObject:(id)object; @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Utilities/OCVReferenceObject.m ================================================ // // OCVReferenceObject.m // LegoCV // // Created by Dal Rupnik on 23/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVReferenceObject.h" @implementation OCVReferenceObject - (NSString *)description { return [NSString stringWithFormat:@"[OCVReferencedObject]: %@", [self.object description]]; } - (instancetype)initWithObject:(id)object { self = [super init]; if (self) { self.object = object; } return self; } @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Video/OCVCamera+Private.h ================================================ // // OCVCamera+Private.h // LegoCV // // Created by Dal Rupnik on 23/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVCamera.h" #import @interface OCVCamera (OpenCV) @property (nonatomic, strong) CvAbstractCamera *source; @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Video/OCVCamera.h ================================================ // // OCVCamera.h // LegoCV // // Created by Dal Rupnik on 23/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import #import #import "OCVReferenceObject.h" /*! * Abstract camera, do not use directly */ @interface OCVCamera : OCVReferenceObject @property (nonatomic, strong) AVCaptureSession* captureSession; @property (nonatomic, strong) AVCaptureConnection* videoCaptureConnection; @property (nonatomic, readonly) BOOL running; @property (nonatomic, readonly) BOOL captureSessionLoaded; @property (nonatomic, assign) NSInteger defaultFPS; @property (nonatomic, readonly) AVCaptureVideoPreviewLayer *captureVideoPreviewLayer; @property (nonatomic, assign) AVCaptureDevicePosition defaultAVCaptureDevicePosition; @property (nonatomic, assign) AVCaptureVideoOrientation defaultAVCaptureVideoOrientation; @property (nonatomic, assign) BOOL useAVCaptureVideoPreviewLayer; @property (nonatomic, strong) AVCaptureSessionPreset defaultAVCaptureSessionPreset; @property (nonatomic, assign) NSInteger imageWidth; @property (nonatomic, assign) NSInteger imageHeight; @property (nonatomic, strong) UIView* parentView; /*! * Used by subclasses */ - (instancetype)initWithParentView:(UIView*)parent; - (void)start; - (void)stop; - (void)switchCameras; - (void)createCaptureOutput; - (void)createVideoPreviewLayer; - (void)updateOrientation; - (void)lockFocus; - (void)unlockFocus; - (void)lockExposure; - (void)unlockExposure; - (void)lockBalance; - (void)unlockBalance; @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Video/OCVCamera.mm ================================================ // // OCVCamera.m // LegoCV // // Created by Dal Rupnik on 23/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVCamera.h" #import "OCVCamera+Private.h" @implementation OCVCamera #pragma mark - Private Properties - (CvAbstractCamera *)source { return (CvAbstractCamera *)self.object; } #pragma mark - Public Properties - (AVCaptureSession *)captureSession { return self.source.captureSession; } - (void)setCaptureSession:(AVCaptureSession *)captureSession { self.source.captureSession = captureSession; } - (AVCaptureConnection *)videoCaptureConnection { return self.source.videoCaptureConnection; } - (void)setVideoCaptureConnection:(AVCaptureConnection *)videoCaptureConnection { self.source.videoCaptureConnection = videoCaptureConnection; } - (BOOL)running { return self.source.running; } - (BOOL)captureSessionLoaded { return self.source.captureSessionLoaded; } - (NSInteger)defaultFPS { return self.source.defaultFPS; } - (void)setDefaultFPS:(NSInteger)defaultFPS { self.source.defaultFPS = (int)defaultFPS; } - (AVCaptureVideoPreviewLayer *)captureVideoPreviewLayer { return self.source.captureVideoPreviewLayer; } - (AVCaptureDevicePosition)defaultAVCaptureDevicePosition { return self.source.defaultAVCaptureDevicePosition; } - (void)setDefaultAVCaptureDevicePosition:(AVCaptureDevicePosition)defaultAVCaptureDevicePosition { self.source.defaultAVCaptureDevicePosition = defaultAVCaptureDevicePosition; } - (AVCaptureVideoOrientation)defaultAVCaptureVideoOrientation { return self.source.defaultAVCaptureVideoOrientation; } - (void)setDefaultAVCaptureVideoOrientation:(AVCaptureVideoOrientation)defaultAVCaptureVideoOrientation { self.source.defaultAVCaptureVideoOrientation = defaultAVCaptureVideoOrientation; } - (BOOL)useAVCaptureVideoPreviewLayer { return self.source.useAVCaptureVideoPreviewLayer; } - (void)setUseAVCaptureVideoPreviewLayer:(BOOL)useAVCaptureVideoPreviewLayer { self.source.useAVCaptureVideoPreviewLayer = useAVCaptureVideoPreviewLayer; } - (AVCaptureSessionPreset)defaultAVCaptureSessionPreset { return (AVCaptureSessionPreset)self.source.defaultAVCaptureSessionPreset; } - (void)setDefaultAVCaptureSessionPreset:(AVCaptureSessionPreset)defaultAVCaptureSessionPreset { self.source.defaultAVCaptureSessionPreset = defaultAVCaptureSessionPreset; } - (NSInteger)imageWidth { return self.source.imageWidth; } - (void)setImageWidth:(NSInteger)imageWidth { self.source.imageWidth = (int)imageWidth; } - (NSInteger)imageHeight { return self.source.imageHeight; } - (void)setImageHeight:(NSInteger)imageHeight { self.source.imageHeight = (int)imageHeight; } - (UIView *)parentView { return self.source.parentView; } - (void)setParentView:(UIView *)parentView { self.source.parentView = parentView; } #pragma mark - Initialization - (instancetype)initWithParentView:(UIView *)parent { [NSException raise:@"InitNotImplemented" format:@"This method is abstract and is not implemented."]; return nil; } #pragma mark - Public Methods - (void)start { [self.source start]; } - (void)stop { [self.source stop]; } - (void)switchCameras { [self.source switchCameras]; } - (void)createCaptureOutput { [self.source createCaptureOutput]; } - (void)createVideoPreviewLayer { [self.source createVideoPreviewLayer]; } - (void)updateOrientation { [self.source updateOrientation]; } - (void)lockFocus { [self.source lockFocus]; } - (void)unlockFocus { [self.source unlockFocus]; } - (void)lockExposure { [self.source lockExposure]; } - (void)unlockExposure { [self.source unlockExposure]; } - (void)lockBalance { [self.source lockBalance]; } - (void)unlockBalance { [self.source unlockBalance]; } @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Video/OCVPhotoCamera.h ================================================ // // OCVPhotoCamera.h // LegoCV // // Created by Dal Rupnik on 23/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVCamera.h" @class OCVPhotoCamera; @protocol OCVPhotoCameraDelegate - (void)photoCamera:(OCVPhotoCamera *)photoCamera capturedImage:(UIImage *)image; - (void)photoCameraCancel:(OCVPhotoCamera *)photoCamera; @end @interface OCVPhotoCamera : OCVCamera @property (nonatomic, weak) id delegate; - (void)takePicture; @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Video/OCVPhotoCamera.mm ================================================ // // OCVPhotoCamera.m // LegoCV // // Created by Dal Rupnik on 23/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVCamera+Private.h" #import "OCVPhotoCamera.h" @interface OCVPhotoCamera () @property (nonatomic, readonly) CvPhotoCamera *cameraSource; @end @implementation OCVPhotoCamera - (CvPhotoCamera *)cameraSource { return (CvPhotoCamera *)self.source; } - (void)setDelegate:(id)delegate { _delegate = delegate; self.cameraSource.delegate = self; } - (instancetype)initWithParentView:(UIView *)parent { self = [super initWithObject:[[CvPhotoCamera alloc] initWithParentView:parent]]; return self; } - (void)takePicture { [self.cameraSource takePicture]; } #pragma mark - CvPhotoCameraDelegate - (void)photoCamera:(CvPhotoCamera*)photoCamera capturedImage:(UIImage *)image { [self.delegate photoCamera:self capturedImage:image]; } - (void)photoCameraCancel:(CvPhotoCamera*)photoCamera { [self.delegate photoCameraCancel:self]; } @end ================================================ FILE: LegoCV/LegoCV/Wrapper/Video/OCVVideo.h ================================================ // // OCVVideo.h // LegoCV // // Created by Dal Rupnik on 23/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #ifndef OCVVideo_h #define OCVVideo_h #import "OCVCamera.h" #import "OCVPhotoCamera.h" #import "OCVVideoCamera.h" #endif /* OCVVideo_h */ ================================================ FILE: LegoCV/LegoCV/Wrapper/Video/OCVVideoCamera.h ================================================ // // OCVVideoCamera.h // LegoCV // // Created by Dal Rupnik on 23/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import #import "OCVCamera.h" @class OCVMat; NS_ASSUME_NONNULL_BEGIN @protocol OCVVideoCameraDelegate - (void)processImage:(OCVMat *)image; @end @interface OCVVideoCamera : OCVCamera @property (nullable, nonatomic, weak) id delegate; @property (nonatomic, assign) BOOL grayscaleMode; @property (nonatomic, assign) BOOL recordVideo; @property (nonatomic, assign) BOOL rotateVideo; @property (nullable, nonatomic, strong) AVAssetWriterInput* recordAssetWriterInput; @property (nullable, nonatomic, strong) AVAssetWriterInputPixelBufferAdaptor* recordPixelBufferAdaptor; @property (nullable, nonatomic, strong) AVAssetWriter* recordAssetWriter; - (void)adjustLayoutToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation; - (void)layoutPreviewLayer; - (void)saveVideo; - (NSURL * _Nullable)videoFileURL; - (NSString * _Nullable)videoFileString; @end NS_ASSUME_NONNULL_END ================================================ FILE: LegoCV/LegoCV/Wrapper/Video/OCVVideoCamera.mm ================================================ // // OCVVideoCamera.m // LegoCV // // Created by Dal Rupnik on 23/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVCamera+Private.h" #import "OCVMatDataAllocator+Private.h" #import "OCVMat.h" #import "OCVVideoCamera.h" @interface OCVVideoCamera () @property (nonatomic, readonly) CvVideoCamera *cameraSource; @end @implementation OCVVideoCamera - (CvVideoCamera *)cameraSource { return (CvVideoCamera *)self.source; } #pragma mark - Public Properties - (void)setDelegate:(id)delegate { _delegate = delegate; self.cameraSource.delegate = self; } - (BOOL)grayscaleMode { return self.cameraSource.grayscaleMode; } - (void)setGrayscaleMode:(BOOL)grayscaleMode { self.cameraSource.grayscaleMode = grayscaleMode; } - (BOOL)recordVideo { return self.cameraSource.recordVideo; } - (void)setRecordVideo:(BOOL)recordVideo { self.cameraSource.recordVideo = recordVideo; } - (BOOL)rotateVideo { return self.cameraSource.rotateVideo; } - (void)setRotateVideo:(BOOL)rotateVideo { self.cameraSource.rotateVideo = rotateVideo; } - (AVAssetWriterInput *)recordAssetWriterInput { return self.cameraSource.recordAssetWriterInput; } - (void)setRecordAssetWriterInput:(AVAssetWriterInput *)recordAssetWriterInput { self.cameraSource.recordAssetWriterInput = recordAssetWriterInput; } - (AVAssetWriterInputPixelBufferAdaptor *)recordPixelBufferAdaptor { return self.cameraSource.recordPixelBufferAdaptor; } - (void)setRecordPixelBufferAdaptor:(AVAssetWriterInputPixelBufferAdaptor *)recordPixelBufferAdaptor { self.cameraSource.recordPixelBufferAdaptor = recordPixelBufferAdaptor; } - (AVAssetWriter *)recordAssetWriter { return self.cameraSource.recordAssetWriter; } - (void)setRecordAssetWriter:(AVAssetWriter *)recordAssetWriter { self.cameraSource.recordAssetWriter = recordAssetWriter; } #pragma mark - Initialization - (instancetype)initWithParentView:(UIView *)parent { self = [super initWithObject:[[CvVideoCamera alloc] initWithParentView:parent]]; return self; } #pragma mark - Public Methods - (void)adjustLayoutToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { [self.cameraSource adjustLayoutToInterfaceOrientation:interfaceOrientation]; } - (void)layoutPreviewLayer { [self.cameraSource layoutPreviewLayer]; } - (void)saveVideo { [self.cameraSource saveVideo]; } - (NSURL *)videoFileURL { return [self.cameraSource videoFileURL]; } - (NSString *)videoFileString { return [self.cameraSource videoFileString]; } #pragma mark - CvVideoCameraDelegate - (void)processImage:(cv::Mat &)image { [self.delegate processImage:[[OCVMat alloc] initWithMatInstance:&image]]; } @end ================================================ FILE: LegoCV/LegoCV/Wrapper/VideoStab/OCVGaussianMotionFilter.h ================================================ // // OCVGaussianMotionFilter.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVGaussianMotionFilter : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/VideoStab/OCVGaussianMotionFilter.m ================================================ // // OCVGaussianMotionFilter.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVGaussianMotionFilter.h" @implementation OCVGaussianMotionFilter @end ================================================ FILE: LegoCV/LegoCV/Wrapper/VideoStab/OCVOnePassStabilizer.h ================================================ // // OCVOnePassStabilizer.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVOnePassStabilizer : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/VideoStab/OCVOnePassStabilizer.m ================================================ // // OCVOnePassStabilizer.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVOnePassStabilizer.h" @implementation OCVOnePassStabilizer @end ================================================ FILE: LegoCV/LegoCV/Wrapper/VideoStab/OCVTwoPassStabilizer.h ================================================ // // OCVTwoPassStabilizer.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVTwoPassStabilizer : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/VideoStab/OCVTwoPassStabilizer.m ================================================ // // OCVTwoPassStabilizer.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVTwoPassStabilizer.h" @implementation OCVTwoPassStabilizer @end ================================================ FILE: LegoCV/LegoCV/Wrapper/VideoStab/OCVVideoCaptureFrameSource.h ================================================ // // OCVVideoCaptureFrameSource.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVVideoCaptureFrameSource : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/VideoStab/OCVVideoCaptureFrameSource.m ================================================ // // OCVVideoCaptureFrameSource.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVVideoCaptureFrameSource.h" @implementation OCVVideoCaptureFrameSource @end ================================================ FILE: LegoCV/LegoCV/Wrapper/VideoStab/OCVVideoFrameSource.h ================================================ // // OCVVideoFrameSource.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVVideoFrameSource : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/VideoStab/OCVVideoFrameSource.m ================================================ // // OCVVideoFrameSource.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVVideoFrameSource.h" @implementation OCVVideoFrameSource @end ================================================ FILE: LegoCV/LegoCV/Wrapper/VideoSurveillance/OCVBackgroundSubtractor.h ================================================ // // OCVBackgroundSubtractor.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVBackgroundSubtractor : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/VideoSurveillance/OCVBackgroundSubtractor.m ================================================ // // OCVBackgroundSubtractor.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVBackgroundSubtractor.h" @implementation OCVBackgroundSubtractor @end ================================================ FILE: LegoCV/LegoCV/Wrapper/VideoSurveillance/OCVBackgroundSubtractorKNN.h ================================================ // // OCVBackgroundSubtractorKNN.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVBackgroundSubtractorKNN : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/VideoSurveillance/OCVBackgroundSubtractorKNN.m ================================================ // // OCVBackgroundSubtractorKNN.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVBackgroundSubtractorKNN.h" @implementation OCVBackgroundSubtractorKNN @end ================================================ FILE: LegoCV/LegoCV/Wrapper/VideoSurveillance/OCVBackgroundSubtractorMOG2.h ================================================ // // OCVBackgroundSubtractorMOG2.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVBackgroundSubtractorMOG2 : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/VideoSurveillance/OCVBackgroundSubtractorMOG2.m ================================================ // // OCVBackgroundSubtractorMOG2.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVBackgroundSubtractorMOG2.h" @implementation OCVBackgroundSubtractorMOG2 @end ================================================ FILE: LegoCV/LegoCV/Wrapper/XFeatures2D/OCVBriefDescriptorExtractor.h ================================================ // // OCVBriefDescriptorExtractor.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVBriefDescriptorExtractor : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/XFeatures2D/OCVBriefDescriptorExtractor.m ================================================ // // OCVBriefDescriptorExtractor.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVBriefDescriptorExtractor.h" @implementation OCVBriefDescriptorExtractor @end ================================================ FILE: LegoCV/LegoCV/Wrapper/XFeatures2D/OCVCudaSURF.h ================================================ // // OCVCudaSURF.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVCudaSURF : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/XFeatures2D/OCVCudaSURF.m ================================================ // // OCVCudaSURF.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVCudaSURF.h" @implementation OCVCudaSURF @end ================================================ FILE: LegoCV/LegoCV/Wrapper/XFeatures2D/OCVDAISY.h ================================================ // // OCVDAISY.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVDAISY : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/XFeatures2D/OCVDAISY.m ================================================ // // OCVDAISY.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVDAISY.h" @implementation OCVDAISY @end ================================================ FILE: LegoCV/LegoCV/Wrapper/XFeatures2D/OCVFreak.h ================================================ // // OCVFreak.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVFreak : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/XFeatures2D/OCVFreak.m ================================================ // // OCVFreak.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVFreak.h" @implementation OCVFreak @end ================================================ FILE: LegoCV/LegoCV/Wrapper/XFeatures2D/OCVLATCH.h ================================================ // // OCVLATCH.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVLATCH : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/XFeatures2D/OCVLATCH.m ================================================ // // OCVLATCH.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVLATCH.h" @implementation OCVLATCH @end ================================================ FILE: LegoCV/LegoCV/Wrapper/XFeatures2D/OCVLUCID.h ================================================ // // OCVLUCID.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVLUCID : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/XFeatures2D/OCVLUCID.m ================================================ // // OCVLUCID.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVLUCID.h" @implementation OCVLUCID @end ================================================ FILE: LegoCV/LegoCV/Wrapper/XFeatures2D/OCVSIFT.h ================================================ // // OCVSIFT.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVSIFT : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/XFeatures2D/OCVSIFT.m ================================================ // // OCVSIFT.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVSIFT.h" @implementation OCVSIFT @end ================================================ FILE: LegoCV/LegoCV/Wrapper/XFeatures2D/OCVSURF.h ================================================ // // OCVSURF.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVSURF : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/XFeatures2D/OCVSURF.m ================================================ // // OCVSURF.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVSURF.h" @implementation OCVSURF @end ================================================ FILE: LegoCV/LegoCV/Wrapper/XFeatures2D/OCVStarDetector.h ================================================ // // OCVStarDetector.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVStarDetector : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/XFeatures2D/OCVStarDetector.m ================================================ // // OCVStarDetector.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVStarDetector.h" @implementation OCVStarDetector @end ================================================ FILE: LegoCV/LegoCV/Wrapper/XImgproc/OCVDTFilter.h ================================================ // // OCVDTFilter.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVDTFilter : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/XImgproc/OCVDTFilter.m ================================================ // // OCVDTFilter.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVDTFilter.h" @implementation OCVDTFilter @end ================================================ FILE: LegoCV/LegoCV/Wrapper/XPhoto/OCVXPhoto.h ================================================ // // OCVXPhoto.h // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVObject.h" @interface OCVXPhoto : OCVObject @end ================================================ FILE: LegoCV/LegoCV/Wrapper/XPhoto/OCVXPhoto.m ================================================ // // OCVXPhoto.m // LegoCV // // Created by Dal Rupnik on 18/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // #import "OCVXPhoto.h" @implementation OCVXPhoto @end ================================================ FILE: LegoCV/LegoCV.xcodeproj/project.pbxproj ================================================ // !$*UTF8*$! { archiveVersion = 1; classes = { }; objectVersion = 46; objects = { /* Begin PBXBuildFile section */ 381F15091E2AA1D50072F870 /* opencv2.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 381F15081E2AA1D50072F870 /* opencv2.framework */; }; 381F150B1E2AA22A0072F870 /* LegoCV.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 38B4D4B01E2AA01F008AAAB0 /* LegoCV.framework */; }; 381F150C1E2AA22A0072F870 /* LegoCV.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 38B4D4B01E2AA01F008AAAB0 /* LegoCV.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 383BC4101E2FF974002EA7A1 /* OCVObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC40E1E2FF974002EA7A1 /* OCVObject.h */; settings = {ATTRIBUTES = (Public, ); }; }; 383BC4111E2FF974002EA7A1 /* OCVObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC40F1E2FF974002EA7A1 /* OCVObject.m */; }; 383BC4181E2FFAC2002EA7A1 /* OCVBlob.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC4161E2FFAC2002EA7A1 /* OCVBlob.h */; }; 383BC4191E2FFAC2002EA7A1 /* OCVBlob.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC4171E2FFAC2002EA7A1 /* OCVBlob.m */; }; 383BC41C1E2FFAD4002EA7A1 /* OCVGPUMat.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC41A1E2FFAD4002EA7A1 /* OCVGPUMat.h */; }; 383BC41D1E2FFAD4002EA7A1 /* OCVGPUMat.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC41B1E2FFAD4002EA7A1 /* OCVGPUMat.m */; }; 383BC4201E2FFB1D002EA7A1 /* OCVStorageOperationType.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC41E1E2FFB1D002EA7A1 /* OCVStorageOperationType.h */; }; 383BC4211E2FFB1D002EA7A1 /* OCVStorageOperationType.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC41F1E2FFB1D002EA7A1 /* OCVStorageOperationType.m */; }; 383BC4241E2FFB32002EA7A1 /* OCVCharucoBoard.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC4221E2FFB32002EA7A1 /* OCVCharucoBoard.h */; }; 383BC4251E2FFB32002EA7A1 /* OCVCharucoBoard.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC4231E2FFB32002EA7A1 /* OCVCharucoBoard.m */; }; 383BC4281E2FFB47002EA7A1 /* OCVBackgroundSubtractorGMG.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC4261E2FFB47002EA7A1 /* OCVBackgroundSubtractorGMG.h */; }; 383BC4291E2FFB47002EA7A1 /* OCVBackgroundSubtractorGMG.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC4271E2FFB47002EA7A1 /* OCVBackgroundSubtractorGMG.m */; }; 383BC42C1E2FFB56002EA7A1 /* OCVBackgroundSubtractorMOG.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC42A1E2FFB56002EA7A1 /* OCVBackgroundSubtractorMOG.h */; }; 383BC42D1E2FFB56002EA7A1 /* OCVBackgroundSubtractorMOG.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC42B1E2FFB56002EA7A1 /* OCVBackgroundSubtractorMOG.m */; }; 383BC4301E2FFB78002EA7A1 /* OCVNet.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC42E1E2FFB78002EA7A1 /* OCVNet.h */; }; 383BC4311E2FFB78002EA7A1 /* OCVNet.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC42F1E2FFB78002EA7A1 /* OCVNet.m */; }; 383BC4341E2FFB89002EA7A1 /* OCVImporter.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC4321E2FFB89002EA7A1 /* OCVImporter.h */; }; 383BC4351E2FFB89002EA7A1 /* OCVImporter.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC4331E2FFB89002EA7A1 /* OCVImporter.m */; }; 383BC4381E2FFB9A002EA7A1 /* OCVEigenFaceRecognizer.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC4361E2FFB9A002EA7A1 /* OCVEigenFaceRecognizer.h */; }; 383BC4391E2FFB9A002EA7A1 /* OCVEigenFaceRecognizer.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC4371E2FFB9A002EA7A1 /* OCVEigenFaceRecognizer.m */; }; 383BC43C1E2FFBA6002EA7A1 /* OCVFaceRecognizer.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC43A1E2FFBA6002EA7A1 /* OCVFaceRecognizer.h */; }; 383BC43D1E2FFBA6002EA7A1 /* OCVFaceRecognizer.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC43B1E2FFBA6002EA7A1 /* OCVFaceRecognizer.m */; }; 383BC4401E2FFBB3002EA7A1 /* OCVFisherFaceRecognizer.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC43E1E2FFBB3002EA7A1 /* OCVFisherFaceRecognizer.h */; }; 383BC4411E2FFBB3002EA7A1 /* OCVFisherFaceRecognizer.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC43F1E2FFBB3002EA7A1 /* OCVFisherFaceRecognizer.m */; }; 383BC4441E2FFBBF002EA7A1 /* OCVLBPHFaceRecognizer.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC4421E2FFBBF002EA7A1 /* OCVLBPHFaceRecognizer.h */; }; 383BC4451E2FFBBF002EA7A1 /* OCVLBPHFaceRecognizer.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC4431E2FFBBF002EA7A1 /* OCVLBPHFaceRecognizer.m */; }; 383BC4481E2FFBD5002EA7A1 /* OCVFeature2D.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC4461E2FFBD5002EA7A1 /* OCVFeature2D.h */; }; 383BC4491E2FFBD5002EA7A1 /* OCVFeature2D.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC4471E2FFBD5002EA7A1 /* OCVFeature2D.m */; }; 383BC44C1E2FFBE4002EA7A1 /* OCVIndex.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC44A1E2FFBE4002EA7A1 /* OCVIndex.h */; }; 383BC44D1E2FFBE4002EA7A1 /* OCVIndex.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC44B1E2FFBE4002EA7A1 /* OCVIndex.m */; }; 383BC4541E2FFC18002EA7A1 /* OCVGeodeticCoordinate.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC4521E2FFC18002EA7A1 /* OCVGeodeticCoordinate.h */; }; 383BC4551E2FFC18002EA7A1 /* OCVGeodeticCoordinate.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC4531E2FFC18002EA7A1 /* OCVGeodeticCoordinate.m */; }; 383BC4581E2FFC2E002EA7A1 /* OCVFuzzyInvoke.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC4561E2FFC2E002EA7A1 /* OCVFuzzyInvoke.h */; }; 383BC4591E2FFC2E002EA7A1 /* OCVFuzzyInvoke.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC4571E2FFC2E002EA7A1 /* OCVFuzzyInvoke.m */; }; 383BC45C1E2FFC5C002EA7A1 /* OCVLSDDetector.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC45A1E2FFC5C002EA7A1 /* OCVLSDDetector.h */; }; 383BC45D1E2FFC5C002EA7A1 /* OCVLSDDetector.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC45B1E2FFC5C002EA7A1 /* OCVLSDDetector.m */; }; 383BC4601E2FFC6F002EA7A1 /* OCVBoost.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC45E1E2FFC6F002EA7A1 /* OCVBoost.h */; }; 383BC4611E2FFC6F002EA7A1 /* OCVBoost.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC45F1E2FFC6F002EA7A1 /* OCVBoost.m */; }; 383BC4641E2FFC7B002EA7A1 /* OCVANNMLP.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC4621E2FFC7B002EA7A1 /* OCVANNMLP.h */; }; 383BC4651E2FFC7B002EA7A1 /* OCVANNMLP.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC4631E2FFC7B002EA7A1 /* OCVANNMLP.m */; }; 383BC4681E2FFC8F002EA7A1 /* OCVDTree.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC4661E2FFC8F002EA7A1 /* OCVDTree.h */; }; 383BC4691E2FFC8F002EA7A1 /* OCVDTree.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC4671E2FFC8F002EA7A1 /* OCVDTree.m */; }; 383BC46C1E2FFCA2002EA7A1 /* OCVEM.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC46A1E2FFCA2002EA7A1 /* OCVEM.h */; }; 383BC46D1E2FFCA2002EA7A1 /* OCVEM.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC46B1E2FFCA2002EA7A1 /* OCVEM.m */; }; 383BC4701E2FFCAC002EA7A1 /* OCVKNearest.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC46E1E2FFCAC002EA7A1 /* OCVKNearest.h */; }; 383BC4711E2FFCAC002EA7A1 /* OCVKNearest.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC46F1E2FFCAC002EA7A1 /* OCVKNearest.m */; }; 383BC4741E2FFCB5002EA7A1 /* OCVLogisticRegression.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC4721E2FFCB5002EA7A1 /* OCVLogisticRegression.h */; }; 383BC4751E2FFCB5002EA7A1 /* OCVLogisticRegression.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC4731E2FFCB5002EA7A1 /* OCVLogisticRegression.m */; }; 383BC4781E2FFCC9002EA7A1 /* OCVNormalBayesClassifier.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC4761E2FFCC9002EA7A1 /* OCVNormalBayesClassifier.h */; }; 383BC4791E2FFCC9002EA7A1 /* OCVNormalBayesClassifier.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC4771E2FFCC9002EA7A1 /* OCVNormalBayesClassifier.m */; }; 383BC47C1E2FFCD3002EA7A1 /* OCVRTree.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC47A1E2FFCD3002EA7A1 /* OCVRTree.h */; }; 383BC47D1E2FFCD3002EA7A1 /* OCVRTree.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC47B1E2FFCD3002EA7A1 /* OCVRTree.m */; }; 383BC4801E2FFCE1002EA7A1 /* OCVStatModelExtensions.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC47E1E2FFCE1002EA7A1 /* OCVStatModelExtensions.h */; }; 383BC4811E2FFCE1002EA7A1 /* OCVStatModelExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC47F1E2FFCE1002EA7A1 /* OCVStatModelExtensions.m */; }; 383BC4841E2FFCEA002EA7A1 /* OCVSVM.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC4821E2FFCEA002EA7A1 /* OCVSVM.h */; }; 383BC4851E2FFCEA002EA7A1 /* OCVSVM.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC4831E2FFCEA002EA7A1 /* OCVSVM.m */; }; 383BC4881E2FFCF2002EA7A1 /* OCVTrainData.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC4861E2FFCF2002EA7A1 /* OCVTrainData.h */; }; 383BC4891E2FFCF2002EA7A1 /* OCVTrainData.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC4871E2FFCF2002EA7A1 /* OCVTrainData.m */; }; 383BC48C1E2FFD0A002EA7A1 /* OCVBoostType.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC48A1E2FFD0A002EA7A1 /* OCVBoostType.h */; }; 383BC48D1E2FFD0A002EA7A1 /* OCVBoostType.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC48B1E2FFD0A002EA7A1 /* OCVBoostType.m */; }; 383BC4901E2FFD13002EA7A1 /* OCVVarType.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC48E1E2FFD13002EA7A1 /* OCVVarType.h */; }; 383BC4911E2FFD13002EA7A1 /* OCVVarType.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC48F1E2FFD13002EA7A1 /* OCVVarType.m */; }; 383BC4941E2FFD2C002EA7A1 /* OCVMCvDTreeNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC4921E2FFD2C002EA7A1 /* OCVMCvDTreeNode.h */; }; 383BC4951E2FFD2C002EA7A1 /* OCVMCvDTreeNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC4931E2FFD2C002EA7A1 /* OCVMCvDTreeNode.m */; }; 383BC4981E2FFD39002EA7A1 /* OCVMCvDTreeSplit.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC4961E2FFD39002EA7A1 /* OCVMCvDTreeSplit.h */; }; 383BC4991E2FFD39002EA7A1 /* OCVMCvDTreeSplit.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC4971E2FFD39002EA7A1 /* OCVMCvDTreeSplit.m */; }; 383BC49C1E2FFD4B002EA7A1 /* OCVMCvDTreeSplitMOrder.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC49A1E2FFD4B002EA7A1 /* OCVMCvDTreeSplitMOrder.h */; }; 383BC49D1E2FFD4B002EA7A1 /* OCVMCvDTreeSplitMOrder.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC49B1E2FFD4B002EA7A1 /* OCVMCvDTreeSplitMOrder.m */; }; 383BC4A01E2FFD56002EA7A1 /* OCVMCvParamGrid.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC49E1E2FFD56002EA7A1 /* OCVMCvParamGrid.h */; }; 383BC4A11E2FFD56002EA7A1 /* OCVMCvParamGrid.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC49F1E2FFD56002EA7A1 /* OCVMCvParamGrid.m */; }; 383BC4A41E2FFDDA002EA7A1 /* OCVDevice.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC4A21E2FFDDA002EA7A1 /* OCVDevice.h */; }; 383BC4A51E2FFDDA002EA7A1 /* OCVDevice.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC4A31E2FFDDA002EA7A1 /* OCVDevice.m */; }; 383BC4A81E2FFDE5002EA7A1 /* OCVQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC4A61E2FFDE5002EA7A1 /* OCVQueue.h */; }; 383BC4A91E2FFDE5002EA7A1 /* OCVQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC4A71E2FFDE5002EA7A1 /* OCVQueue.m */; }; 383BC4AC1E2FFDEC002EA7A1 /* OCVKernel.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC4AA1E2FFDEC002EA7A1 /* OCVKernel.h */; }; 383BC4AD1E2FFDEC002EA7A1 /* OCVKernel.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC4AB1E2FFDEC002EA7A1 /* OCVKernel.m */; }; 383BC4B01E2FFDF6002EA7A1 /* OCVImage2D.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC4AE1E2FFDF6002EA7A1 /* OCVImage2D.h */; }; 383BC4B11E2FFDF6002EA7A1 /* OCVImage2D.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC4AF1E2FFDF6002EA7A1 /* OCVImage2D.m */; }; 383BC4B41E2FFE06002EA7A1 /* OCVKernelConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC4B21E2FFE06002EA7A1 /* OCVKernelConfiguration.h */; }; 383BC4B51E2FFE06002EA7A1 /* OCVKernelConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC4B31E2FFE06002EA7A1 /* OCVKernelConfiguration.m */; }; 383BC4B81E2FFE13002EA7A1 /* OCVPlatformInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC4B61E2FFE13002EA7A1 /* OCVPlatformInfo.h */; }; 383BC4B91E2FFE13002EA7A1 /* OCVPlatformInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC4B71E2FFE13002EA7A1 /* OCVPlatformInfo.m */; }; 383BC4BC1E2FFE1C002EA7A1 /* OCVProgramSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC4BA1E2FFE1C002EA7A1 /* OCVProgramSource.h */; }; 383BC4BD1E2FFE1C002EA7A1 /* OCVProgramSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC4BB1E2FFE1C002EA7A1 /* OCVProgramSource.m */; }; 383BC4C01E2FFE4E002EA7A1 /* OCVPageIterator.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC4BE1E2FFE4E002EA7A1 /* OCVPageIterator.h */; }; 383BC4C11E2FFE4E002EA7A1 /* OCVPageIterator.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC4BF1E2FFE4E002EA7A1 /* OCVPageIterator.m */; }; 383BC4C41E2FFE63002EA7A1 /* OCVTesseract.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC4C21E2FFE63002EA7A1 /* OCVTesseract.h */; }; 383BC4C51E2FFE63002EA7A1 /* OCVTesseract.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC4C31E2FFE63002EA7A1 /* OCVTesseract.m */; }; 383BC4C81E2FFE6C002EA7A1 /* OCVTesseractResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC4C61E2FFE6C002EA7A1 /* OCVTesseractResult.h */; }; 383BC4C91E2FFE6C002EA7A1 /* OCVTesseractResult.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC4C71E2FFE6C002EA7A1 /* OCVTesseractResult.m */; }; 383BC4CC1E2FFE7C002EA7A1 /* OCVOrientation.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC4CA1E2FFE7C002EA7A1 /* OCVOrientation.h */; }; 383BC4CD1E2FFE7C002EA7A1 /* OCVOrientation.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC4CB1E2FFE7C002EA7A1 /* OCVOrientation.m */; }; 383BC4D01E2FFE90002EA7A1 /* OCVPlot.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC4CE1E2FFE90002EA7A1 /* OCVPlot.h */; }; 383BC4D11E2FFE90002EA7A1 /* OCVPlot.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC4CF1E2FFE90002EA7A1 /* OCVPlot.m */; }; 383BC4D41E2FFEAE002EA7A1 /* OCVReflectImage.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC4D21E2FFEAE002EA7A1 /* OCVReflectImage.h */; }; 383BC4D51E2FFEAE002EA7A1 /* OCVReflectImage.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC4D31E2FFEAE002EA7A1 /* OCVReflectImage.m */; }; 383BC4D81E2FFEC0002EA7A1 /* OCVAffineTransformer.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC4D61E2FFEC0002EA7A1 /* OCVAffineTransformer.h */; }; 383BC4D91E2FFEC0002EA7A1 /* OCVAffineTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC4D71E2FFEC0002EA7A1 /* OCVAffineTransformer.m */; }; 383BC4DC1E2FFED0002EA7A1 /* OCVChiHistogramCostExtractor.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC4DA1E2FFED0002EA7A1 /* OCVChiHistogramCostExtractor.h */; }; 383BC4DD1E2FFED0002EA7A1 /* OCVChiHistogramCostExtractor.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC4DB1E2FFED0002EA7A1 /* OCVChiHistogramCostExtractor.m */; }; 383BC4E01E2FFEDE002EA7A1 /* OCVEMDHistogramCostExtractor.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC4DE1E2FFEDE002EA7A1 /* OCVEMDHistogramCostExtractor.h */; }; 383BC4E11E2FFEDE002EA7A1 /* OCVEMDHistogramCostExtractor.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC4DF1E2FFEDE002EA7A1 /* OCVEMDHistogramCostExtractor.m */; }; 383BC4E41E2FFEEC002EA7A1 /* OCVEMDL1HistogramCostExtractor.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC4E21E2FFEEC002EA7A1 /* OCVEMDL1HistogramCostExtractor.h */; }; 383BC4E51E2FFEEC002EA7A1 /* OCVEMDL1HistogramCostExtractor.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC4E31E2FFEEC002EA7A1 /* OCVEMDL1HistogramCostExtractor.m */; }; 383BC4E81E2FFEF8002EA7A1 /* OCVHausdorffDistanceExtractor.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC4E61E2FFEF8002EA7A1 /* OCVHausdorffDistanceExtractor.h */; }; 383BC4E91E2FFEF8002EA7A1 /* OCVHausdorffDistanceExtractor.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC4E71E2FFEF8002EA7A1 /* OCVHausdorffDistanceExtractor.m */; }; 383BC4EC1E2FFF08002EA7A1 /* OCVHistogramCostExtractor.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC4EA1E2FFF08002EA7A1 /* OCVHistogramCostExtractor.h */; }; 383BC4ED1E2FFF08002EA7A1 /* OCVHistogramCostExtractor.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC4EB1E2FFF08002EA7A1 /* OCVHistogramCostExtractor.m */; }; 383BC4F01E2FFF14002EA7A1 /* OCVNormHistogramCostExtractor.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC4EE1E2FFF14002EA7A1 /* OCVNormHistogramCostExtractor.h */; }; 383BC4F11E2FFF14002EA7A1 /* OCVNormHistogramCostExtractor.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC4EF1E2FFF14002EA7A1 /* OCVNormHistogramCostExtractor.m */; }; 383BC4F41E2FFF23002EA7A1 /* OCVShapeContextDistanceExtractor.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC4F21E2FFF23002EA7A1 /* OCVShapeContextDistanceExtractor.h */; }; 383BC4F51E2FFF23002EA7A1 /* OCVShapeContextDistanceExtractor.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC4F31E2FFF23002EA7A1 /* OCVShapeContextDistanceExtractor.m */; }; 383BC4F81E2FFF39002EA7A1 /* OCVShapeDistanceExtractor.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC4F61E2FFF39002EA7A1 /* OCVShapeDistanceExtractor.h */; }; 383BC4F91E2FFF39002EA7A1 /* OCVShapeDistanceExtractor.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC4F71E2FFF39002EA7A1 /* OCVShapeDistanceExtractor.m */; }; 383BC4FC1E2FFF44002EA7A1 /* OCVThinPlateSplineShapeTransformer.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC4FA1E2FFF44002EA7A1 /* OCVThinPlateSplineShapeTransformer.h */; }; 383BC4FD1E2FFF44002EA7A1 /* OCVThinPlateSplineShapeTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC4FB1E2FFF44002EA7A1 /* OCVThinPlateSplineShapeTransformer.m */; }; 383BC5001E2FFF5A002EA7A1 /* OCVFeaturesFinder.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC4FE1E2FFF5A002EA7A1 /* OCVFeaturesFinder.h */; }; 383BC5011E2FFF5A002EA7A1 /* OCVFeaturesFinder.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC4FF1E2FFF5A002EA7A1 /* OCVFeaturesFinder.m */; }; 383BC5041E2FFF66002EA7A1 /* OCVCompressedRectilinearWarper.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC5021E2FFF66002EA7A1 /* OCVCompressedRectilinearWarper.h */; }; 383BC5051E2FFF66002EA7A1 /* OCVCompressedRectilinearWarper.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC5031E2FFF66002EA7A1 /* OCVCompressedRectilinearWarper.m */; }; 383BC5081E2FFF6F002EA7A1 /* OCVFisheyeWarper.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC5061E2FFF6F002EA7A1 /* OCVFisheyeWarper.h */; }; 383BC5091E2FFF6F002EA7A1 /* OCVFisheyeWarper.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC5071E2FFF6F002EA7A1 /* OCVFisheyeWarper.m */; }; 383BC50C1E2FFF77002EA7A1 /* OCVMercatorWarper.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC50A1E2FFF77002EA7A1 /* OCVMercatorWarper.h */; }; 383BC50D1E2FFF77002EA7A1 /* OCVMercatorWarper.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC50B1E2FFF77002EA7A1 /* OCVMercatorWarper.m */; }; 383BC5101E2FFF82002EA7A1 /* OCVOrbFeaturesFinder.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC50E1E2FFF82002EA7A1 /* OCVOrbFeaturesFinder.h */; }; 383BC5111E2FFF82002EA7A1 /* OCVOrbFeaturesFinder.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC50F1E2FFF82002EA7A1 /* OCVOrbFeaturesFinder.m */; }; 383BC5141E2FFF8F002EA7A1 /* OCVPaniniPortraitWarper.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC5121E2FFF8F002EA7A1 /* OCVPaniniPortraitWarper.h */; }; 383BC5151E2FFF8F002EA7A1 /* OCVPaniniPortraitWarper.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC5131E2FFF8F002EA7A1 /* OCVPaniniPortraitWarper.m */; }; 383BC5181E2FFF99002EA7A1 /* OCVPaniniWarper.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC5161E2FFF99002EA7A1 /* OCVPaniniWarper.h */; }; 383BC5191E2FFF99002EA7A1 /* OCVPaniniWarper.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC5171E2FFF99002EA7A1 /* OCVPaniniWarper.m */; }; 383BC51C1E2FFFA0002EA7A1 /* OCVPlaneWarper.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC51A1E2FFFA0002EA7A1 /* OCVPlaneWarper.h */; }; 383BC51D1E2FFFA0002EA7A1 /* OCVPlaneWarper.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC51B1E2FFFA0002EA7A1 /* OCVPlaneWarper.m */; }; 383BC5201E2FFFAA002EA7A1 /* OCVSphericalWarper.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC51E1E2FFFAA002EA7A1 /* OCVSphericalWarper.h */; }; 383BC5211E2FFFAA002EA7A1 /* OCVSphericalWarper.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC51F1E2FFFAA002EA7A1 /* OCVSphericalWarper.m */; }; 383BC5241E2FFFB5002EA7A1 /* OCVStereographicWarper.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC5221E2FFFB5002EA7A1 /* OCVStereographicWarper.h */; }; 383BC5251E2FFFB5002EA7A1 /* OCVStereographicWarper.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC5231E2FFFB5002EA7A1 /* OCVStereographicWarper.m */; }; 383BC5281E2FFFBD002EA7A1 /* OCVSticher.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC5261E2FFFBD002EA7A1 /* OCVSticher.h */; }; 383BC5291E2FFFBD002EA7A1 /* OCVSticher.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC5271E2FFFBD002EA7A1 /* OCVSticher.m */; }; 383BC52C1E2FFFCE002EA7A1 /* OCVTransverseMercatorWarper.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC52A1E2FFFCE002EA7A1 /* OCVTransverseMercatorWarper.h */; }; 383BC52D1E2FFFCE002EA7A1 /* OCVTransverseMercatorWarper.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC52B1E2FFFCE002EA7A1 /* OCVTransverseMercatorWarper.m */; }; 383BC5301E2FFFD9002EA7A1 /* OCVWarperCreator.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC52E1E2FFFD9002EA7A1 /* OCVWarperCreator.h */; }; 383BC5311E2FFFD9002EA7A1 /* OCVWarperCreator.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC52F1E2FFFD9002EA7A1 /* OCVWarperCreator.m */; }; 383BC5341E2FFFF6002EA7A1 /* OCVRgb.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC5321E2FFFF6002EA7A1 /* OCVRgb.h */; }; 383BC5351E2FFFF6002EA7A1 /* OCVRgb.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC5331E2FFFF6002EA7A1 /* OCVRgb.m */; }; 383BC5381E2FFFFC002EA7A1 /* OCVRgba.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC5361E2FFFFC002EA7A1 /* OCVRgba.h */; }; 383BC5391E2FFFFC002EA7A1 /* OCVRgba.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC5371E2FFFFC002EA7A1 /* OCVRgba.m */; }; 383BC53C1E300015002EA7A1 /* OCVFrameSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC53A1E300015002EA7A1 /* OCVFrameSource.h */; }; 383BC53D1E300015002EA7A1 /* OCVFrameSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC53B1E300015002EA7A1 /* OCVFrameSource.m */; }; 383BC5401E30001E002EA7A1 /* OCVSuperResolution.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC53E1E30001E002EA7A1 /* OCVSuperResolution.h */; }; 383BC5411E30001E002EA7A1 /* OCVSuperResolution.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC53F1E30001E002EA7A1 /* OCVSuperResolution.m */; }; 383BC5441E300033002EA7A1 /* OCVERFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC5421E300033002EA7A1 /* OCVERFilter.h */; }; 383BC5451E300033002EA7A1 /* OCVERFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC5431E300033002EA7A1 /* OCVERFilter.m */; }; 383BC5481E30003C002EA7A1 /* OCVERFilterNM1.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC5461E30003C002EA7A1 /* OCVERFilterNM1.h */; }; 383BC5491E30003C002EA7A1 /* OCVERFilterNM1.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC5471E30003C002EA7A1 /* OCVERFilterNM1.m */; }; 383BC54C1E300044002EA7A1 /* OCVERFilterNM2.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC54A1E300044002EA7A1 /* OCVERFilterNM2.h */; }; 383BC54D1E300044002EA7A1 /* OCVERFilterNM2.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC54B1E300044002EA7A1 /* OCVERFilterNM2.m */; }; 383BC5501E30004F002EA7A1 /* OCVERStat.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC54E1E30004F002EA7A1 /* OCVERStat.h */; }; 383BC5511E30004F002EA7A1 /* OCVERStat.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC54F1E30004F002EA7A1 /* OCVERStat.m */; }; 383BC5541E300062002EA7A1 /* OCVTiffWriter.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC5521E300062002EA7A1 /* OCVTiffWriter.h */; }; 383BC5551E300062002EA7A1 /* OCVTiffWriter.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC5531E300062002EA7A1 /* OCVTiffWriter.m */; }; 383BC5581E30006B002EA7A1 /* OCVTileTiffWriter.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC5561E30006B002EA7A1 /* OCVTileTiffWriter.h */; }; 383BC5591E30006B002EA7A1 /* OCVTileTiffWriter.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC5571E30006B002EA7A1 /* OCVTileTiffWriter.m */; }; 383BC55C1E300078002EA7A1 /* OCVMultiTracker.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC55A1E300078002EA7A1 /* OCVMultiTracker.h */; }; 383BC55D1E300078002EA7A1 /* OCVMultiTracker.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC55B1E300078002EA7A1 /* OCVMultiTracker.m */; }; 383BC5601E30007F002EA7A1 /* OCVTracker.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC55E1E30007F002EA7A1 /* OCVTracker.h */; }; 383BC5611E30007F002EA7A1 /* OCVTracker.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC55F1E30007F002EA7A1 /* OCVTracker.m */; }; 383BC5641E30009D002EA7A1 /* OCVVideoCaptureFrameSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC5621E30009D002EA7A1 /* OCVVideoCaptureFrameSource.h */; }; 383BC5651E30009D002EA7A1 /* OCVVideoCaptureFrameSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC5631E30009D002EA7A1 /* OCVVideoCaptureFrameSource.m */; }; 383BC5681E3000A4002EA7A1 /* OCVVideoFrameSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC5661E3000A4002EA7A1 /* OCVVideoFrameSource.h */; }; 383BC5691E3000A4002EA7A1 /* OCVVideoFrameSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC5671E3000A4002EA7A1 /* OCVVideoFrameSource.m */; }; 383BC56C1E3000AD002EA7A1 /* OCVGaussianMotionFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC56A1E3000AD002EA7A1 /* OCVGaussianMotionFilter.h */; }; 383BC56D1E3000AD002EA7A1 /* OCVGaussianMotionFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC56B1E3000AD002EA7A1 /* OCVGaussianMotionFilter.m */; }; 383BC5701E3000B6002EA7A1 /* OCVOnePassStabilizer.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC56E1E3000B6002EA7A1 /* OCVOnePassStabilizer.h */; }; 383BC5711E3000B6002EA7A1 /* OCVOnePassStabilizer.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC56F1E3000B6002EA7A1 /* OCVOnePassStabilizer.m */; }; 383BC5741E3000BE002EA7A1 /* OCVTwoPassStabilizer.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC5721E3000BE002EA7A1 /* OCVTwoPassStabilizer.h */; }; 383BC5751E3000BE002EA7A1 /* OCVTwoPassStabilizer.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC5731E3000BE002EA7A1 /* OCVTwoPassStabilizer.m */; }; 383BC5781E3000D0002EA7A1 /* OCVBackgroundSubtractor.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC5761E3000D0002EA7A1 /* OCVBackgroundSubtractor.h */; }; 383BC5791E3000D0002EA7A1 /* OCVBackgroundSubtractor.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC5771E3000D0002EA7A1 /* OCVBackgroundSubtractor.m */; }; 383BC57C1E3000DA002EA7A1 /* OCVBackgroundSubtractorKNN.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC57A1E3000DA002EA7A1 /* OCVBackgroundSubtractorKNN.h */; }; 383BC57D1E3000DA002EA7A1 /* OCVBackgroundSubtractorKNN.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC57B1E3000DA002EA7A1 /* OCVBackgroundSubtractorKNN.m */; }; 383BC5801E3000E3002EA7A1 /* OCVBackgroundSubtractorMOG2.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC57E1E3000E3002EA7A1 /* OCVBackgroundSubtractorMOG2.h */; }; 383BC5811E3000E3002EA7A1 /* OCVBackgroundSubtractorMOG2.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC57F1E3000E3002EA7A1 /* OCVBackgroundSubtractorMOG2.m */; }; 383BC5841E3000F7002EA7A1 /* OCVHistogramBox.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC5821E3000F7002EA7A1 /* OCVHistogramBox.h */; }; 383BC5851E3000F7002EA7A1 /* OCVHistogramBox.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC5831E3000F7002EA7A1 /* OCVHistogramBox.m */; }; 383BC5881E3000FF002EA7A1 /* OCVHistogramViewer.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC5861E3000FF002EA7A1 /* OCVHistogramViewer.h */; }; 383BC5891E3000FF002EA7A1 /* OCVHistogramViewer.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC5871E3000FF002EA7A1 /* OCVHistogramViewer.m */; }; 383BC5901E300134002EA7A1 /* OCVBriefDescriptorExtractor.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC58E1E300134002EA7A1 /* OCVBriefDescriptorExtractor.h */; }; 383BC5911E300134002EA7A1 /* OCVBriefDescriptorExtractor.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC58F1E300134002EA7A1 /* OCVBriefDescriptorExtractor.m */; }; 383BC5941E30013C002EA7A1 /* OCVCudaSURF.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC5921E30013C002EA7A1 /* OCVCudaSURF.h */; }; 383BC5951E30013C002EA7A1 /* OCVCudaSURF.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC5931E30013C002EA7A1 /* OCVCudaSURF.m */; }; 383BC5981E300142002EA7A1 /* OCVDAISY.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC5961E300142002EA7A1 /* OCVDAISY.h */; }; 383BC5991E300142002EA7A1 /* OCVDAISY.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC5971E300142002EA7A1 /* OCVDAISY.m */; }; 383BC59C1E300149002EA7A1 /* OCVFreak.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC59A1E300149002EA7A1 /* OCVFreak.h */; }; 383BC59D1E300149002EA7A1 /* OCVFreak.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC59B1E300149002EA7A1 /* OCVFreak.m */; }; 383BC5A01E300150002EA7A1 /* OCVLATCH.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC59E1E300150002EA7A1 /* OCVLATCH.h */; }; 383BC5A11E300150002EA7A1 /* OCVLATCH.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC59F1E300150002EA7A1 /* OCVLATCH.m */; }; 383BC5A41E300157002EA7A1 /* OCVLUCID.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC5A21E300157002EA7A1 /* OCVLUCID.h */; }; 383BC5A51E300157002EA7A1 /* OCVLUCID.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC5A31E300157002EA7A1 /* OCVLUCID.m */; }; 383BC5A81E30015E002EA7A1 /* OCVSIFT.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC5A61E30015E002EA7A1 /* OCVSIFT.h */; }; 383BC5A91E30015E002EA7A1 /* OCVSIFT.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC5A71E30015E002EA7A1 /* OCVSIFT.m */; }; 383BC5AC1E300165002EA7A1 /* OCVStarDetector.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC5AA1E300165002EA7A1 /* OCVStarDetector.h */; }; 383BC5AD1E300165002EA7A1 /* OCVStarDetector.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC5AB1E300165002EA7A1 /* OCVStarDetector.m */; }; 383BC5B01E30016B002EA7A1 /* OCVSURF.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC5AE1E30016B002EA7A1 /* OCVSURF.h */; }; 383BC5B11E30016B002EA7A1 /* OCVSURF.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC5AF1E30016B002EA7A1 /* OCVSURF.m */; }; 383BC5B41E30017C002EA7A1 /* OCVDTFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC5B21E30017C002EA7A1 /* OCVDTFilter.h */; }; 383BC5B51E30017C002EA7A1 /* OCVDTFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC5B31E30017C002EA7A1 /* OCVDTFilter.m */; }; 383BC5B81E30018A002EA7A1 /* OCVXPhoto.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC5B61E30018A002EA7A1 /* OCVXPhoto.h */; }; 383BC5B91E30018A002EA7A1 /* OCVXPhoto.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC5B71E30018A002EA7A1 /* OCVXPhoto.m */; }; 3848D3371E3F973A00379F4F /* opencv2.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 381F15081E2AA1D50072F870 /* opencv2.framework */; }; 3848D3381E3F973A00379F4F /* opencv2.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 381F15081E2AA1D50072F870 /* opencv2.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 386F2B821E3524D300320AEB /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 386F2B7F1E3524D300320AEB /* CoreGraphics.framework */; }; 386F2B831E3524D300320AEB /* CoreVideo.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 386F2B801E3524D300320AEB /* CoreVideo.framework */; }; 386F2B841E3524D300320AEB /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 386F2B811E3524D300320AEB /* UIKit.framework */; }; 386F2B871E352A4800320AEB /* OCVPointerObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 386F2B851E352A4800320AEB /* OCVPointerObject.h */; settings = {ATTRIBUTES = (Public, ); }; }; 386F2B881E352A4800320AEB /* OCVPointerObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 386F2B861E352A4800320AEB /* OCVPointerObject.m */; }; 388B229421863CF000F24D45 /* LegoSwiftCV.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 388B228B21863CF000F24D45 /* LegoSwiftCV.framework */; }; 388B229B21863CF000F24D45 /* LegoSwiftCVTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 388B229A21863CF000F24D45 /* LegoSwiftCVTests.swift */; }; 388B229D21863CF000F24D45 /* LegoSwiftCV.h in Headers */ = {isa = PBXBuildFile; fileRef = 388B228D21863CF000F24D45 /* LegoSwiftCV.h */; settings = {ATTRIBUTES = (Public, ); }; }; 388B22A021863CF000F24D45 /* LegoSwiftCV.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 388B228B21863CF000F24D45 /* LegoSwiftCV.framework */; }; 388B22A121863CF000F24D45 /* LegoSwiftCV.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 388B228B21863CF000F24D45 /* LegoSwiftCV.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 388B22A821863E0200F24D45 /* Matrix.swift in Sources */ = {isa = PBXBuildFile; fileRef = 388B228421863CB500F24D45 /* Matrix.swift */; }; 389718691E36175E00CB02B4 /* LiveCameraVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 389718681E36175E00CB02B4 /* LiveCameraVC.swift */; }; 3897186B1E36176B00CB02B4 /* FaceRecognitionVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3897186A1E36176B00CB02B4 /* FaceRecognitionVC.swift */; }; 3897186D1E3618B200CB02B4 /* FaceRecognizer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3897186C1E3618B200CB02B4 /* FaceRecognizer.swift */; }; 3897186F1E3618BC00CB02B4 /* FaceDetector.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3897186E1E3618BC00CB02B4 /* FaceDetector.swift */; }; 389718771E361ECC00CB02B4 /* OCVVideoCamera.h in Headers */ = {isa = PBXBuildFile; fileRef = 389718751E361ECC00CB02B4 /* OCVVideoCamera.h */; settings = {ATTRIBUTES = (Public, ); }; }; 389718781E361ECC00CB02B4 /* OCVVideoCamera.mm in Sources */ = {isa = PBXBuildFile; fileRef = 389718761E361ECC00CB02B4 /* OCVVideoCamera.mm */; }; 3897187B1E361F0600CB02B4 /* OCVPhotoCamera.h in Headers */ = {isa = PBXBuildFile; fileRef = 389718791E361F0600CB02B4 /* OCVPhotoCamera.h */; settings = {ATTRIBUTES = (Public, ); }; }; 3897187C1E361F0600CB02B4 /* OCVPhotoCamera.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3897187A1E361F0600CB02B4 /* OCVPhotoCamera.mm */; }; 3897187F1E3621D000CB02B4 /* OCVCamera.h in Headers */ = {isa = PBXBuildFile; fileRef = 3897187D1E3621D000CB02B4 /* OCVCamera.h */; settings = {ATTRIBUTES = (Public, ); }; }; 389718801E3621D000CB02B4 /* OCVCamera.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3897187E1E3621D000CB02B4 /* OCVCamera.mm */; }; 389718851E36263A00CB02B4 /* OCVReferenceObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 389718831E36263A00CB02B4 /* OCVReferenceObject.h */; settings = {ATTRIBUTES = (Public, ); }; }; 389718861E36263A00CB02B4 /* OCVReferenceObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 389718841E36263A00CB02B4 /* OCVReferenceObject.m */; }; 389718871E3627D100CB02B4 /* OCVCamera+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 389718811E36250800CB02B4 /* OCVCamera+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; 389718891E362B8F00CB02B4 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 389718881E362B8F00CB02B4 /* AVFoundation.framework */; }; 3897188B1E362B9700CB02B4 /* CoreMedia.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3897188A1E362B9700CB02B4 /* CoreMedia.framework */; }; 3897188D1E36439B00CB02B4 /* AssetsLibrary.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3897188C1E36439B00CB02B4 /* AssetsLibrary.framework */; }; 3897188F1E3643A100CB02B4 /* Accelerate.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3897188E1E3643A100CB02B4 /* Accelerate.framework */; }; 389718911E3643A900CB02B4 /* CoreImage.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 389718901E3643A900CB02B4 /* CoreImage.framework */; }; 389718931E3643B600CB02B4 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 389718921E3643B600CB02B4 /* QuartzCore.framework */; }; 389871121E6F311400020CFB /* OCVFileStorage.h in Headers */ = {isa = PBXBuildFile; fileRef = 389871101E6F311400020CFB /* OCVFileStorage.h */; settings = {ATTRIBUTES = (Public, ); }; }; 389871131E6F311400020CFB /* OCVFileStorage.mm in Sources */ = {isa = PBXBuildFile; fileRef = 389871111E6F311400020CFB /* OCVFileStorage.mm */; }; 389871161E6F315A00020CFB /* OCVFileNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 389871141E6F315A00020CFB /* OCVFileNode.h */; settings = {ATTRIBUTES = (Public, ); }; }; 389871171E6F315A00020CFB /* OCVFileNode.mm in Sources */ = {isa = PBXBuildFile; fileRef = 389871151E6F315A00020CFB /* OCVFileNode.mm */; }; 389871191E6F32BE00020CFB /* OCVPersistence.h in Headers */ = {isa = PBXBuildFile; fileRef = 389871181E6F32BE00020CFB /* OCVPersistence.h */; settings = {ATTRIBUTES = (Public, ); }; }; 3898711D1E6F3CB900020CFB /* OCVFileStorageFormatDescriptor.h in Headers */ = {isa = PBXBuildFile; fileRef = 3898711B1E6F3CB900020CFB /* OCVFileStorageFormatDescriptor.h */; settings = {ATTRIBUTES = (Public, ); }; }; 3898711E1E6F3CB900020CFB /* OCVFileStorageFormatDescriptor.m in Sources */ = {isa = PBXBuildFile; fileRef = 3898711C1E6F3CB900020CFB /* OCVFileStorageFormatDescriptor.m */; }; 38B4D4BA1E2AA01F008AAAB0 /* LegoCV.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 38B4D4B01E2AA01F008AAAB0 /* LegoCV.framework */; }; 38B4D4BF1E2AA01F008AAAB0 /* LegoCVTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38B4D4BE1E2AA01F008AAAB0 /* LegoCVTests.swift */; }; 38B4D4C11E2AA01F008AAAB0 /* LegoCV.h in Headers */ = {isa = PBXBuildFile; fileRef = 38B4D4B31E2AA01F008AAAB0 /* LegoCV.h */; settings = {ATTRIBUTES = (Public, ); }; }; 38B4D4D31E2AA110008AAAB0 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38B4D4D21E2AA110008AAAB0 /* AppDelegate.swift */; }; 38B4D4D81E2AA110008AAAB0 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 38B4D4D61E2AA110008AAAB0 /* Main.storyboard */; }; 38B4D4DA1E2AA111008AAAB0 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 38B4D4D91E2AA111008AAAB0 /* Assets.xcassets */; }; 38B4D4DD1E2AA111008AAAB0 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 38B4D4DB1E2AA111008AAAB0 /* LaunchScreen.storyboard */; }; 38C0D90E1E7D6D2000246963 /* OCVImageTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 38C0D90D1E7D6D2000246963 /* OCVImageTypes.h */; settings = {ATTRIBUTES = (Public, ); }; }; 38C0D9111E7D735F00246963 /* OCVGeneralizedHoughBallard.h in Headers */ = {isa = PBXBuildFile; fileRef = 38C0D90F1E7D735F00246963 /* OCVGeneralizedHoughBallard.h */; settings = {ATTRIBUTES = (Public, ); }; }; 38C0D9121E7D735F00246963 /* OCVGeneralizedHoughBallard.m in Sources */ = {isa = PBXBuildFile; fileRef = 38C0D9101E7D735F00246963 /* OCVGeneralizedHoughBallard.m */; }; 38C0D9151E7D73D100246963 /* OCVGeneralizedHough.h in Headers */ = {isa = PBXBuildFile; fileRef = 38C0D9131E7D73D100246963 /* OCVGeneralizedHough.h */; settings = {ATTRIBUTES = (Public, ); }; }; 38C0D9161E7D73D100246963 /* OCVGeneralizedHough.m in Sources */ = {isa = PBXBuildFile; fileRef = 38C0D9141E7D73D100246963 /* OCVGeneralizedHough.m */; }; 38C0D9181E7D747700246963 /* OCVArrayables.h in Headers */ = {isa = PBXBuildFile; fileRef = 38C0D9171E7D747700246963 /* OCVArrayables.h */; settings = {ATTRIBUTES = (Public, ); }; }; 38C0D91B1E7D764200246963 /* OCVGeneralizedHoughGuil.h in Headers */ = {isa = PBXBuildFile; fileRef = 38C0D9191E7D764200246963 /* OCVGeneralizedHoughGuil.h */; settings = {ATTRIBUTES = (Public, ); }; }; 38C0D91C1E7D764200246963 /* OCVGeneralizedHoughGuil.m in Sources */ = {isa = PBXBuildFile; fileRef = 38C0D91A1E7D764200246963 /* OCVGeneralizedHoughGuil.m */; }; 38C0D91F1E7D771300246963 /* OCVContrastLimitedAdaptiveHistogramEqualization.h in Headers */ = {isa = PBXBuildFile; fileRef = 38C0D91D1E7D771300246963 /* OCVContrastLimitedAdaptiveHistogramEqualization.h */; }; 38C0D9201E7D771300246963 /* OCVContrastLimitedAdaptiveHistogramEqualization.m in Sources */ = {isa = PBXBuildFile; fileRef = 38C0D91E1E7D771300246963 /* OCVContrastLimitedAdaptiveHistogramEqualization.m */; }; 38C0D9231E7D77B500246963 /* OCVSubdiv2D.h in Headers */ = {isa = PBXBuildFile; fileRef = 38C0D9211E7D77B500246963 /* OCVSubdiv2D.h */; }; 38C0D9241E7D77B500246963 /* OCVSubdiv2D.m in Sources */ = {isa = PBXBuildFile; fileRef = 38C0D9221E7D77B500246963 /* OCVSubdiv2D.m */; }; 38C0D92B1E7D7EAC00246963 /* OCVLineSegmentDetector.h in Headers */ = {isa = PBXBuildFile; fileRef = 38C0D9291E7D7EAC00246963 /* OCVLineSegmentDetector.h */; }; 38C0D92C1E7D7EAC00246963 /* OCVLineSegmentDetector.m in Sources */ = {isa = PBXBuildFile; fileRef = 38C0D92A1E7D7EAC00246963 /* OCVLineSegmentDetector.m */; }; 38C0D9301E7D8D8200246963 /* OCVBaseCascadeClassifier.h in Headers */ = {isa = PBXBuildFile; fileRef = 38C0D92E1E7D8D8200246963 /* OCVBaseCascadeClassifier.h */; settings = {ATTRIBUTES = (Public, ); }; }; 38C0D9311E7D8D8200246963 /* OCVBaseCascadeClassifier.m in Sources */ = {isa = PBXBuildFile; fileRef = 38C0D92F1E7D8D8200246963 /* OCVBaseCascadeClassifier.m */; }; 38C0D9341E7D8EEC00246963 /* OCVCascadeClassifierResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 38C0D9321E7D8EEC00246963 /* OCVCascadeClassifierResult.h */; settings = {ATTRIBUTES = (Public, ); }; }; 38C0D9351E7D8EEC00246963 /* OCVCascadeClassifierResult.m in Sources */ = {isa = PBXBuildFile; fileRef = 38C0D9331E7D8EEC00246963 /* OCVCascadeClassifierResult.m */; }; 38C0D9381E7D8FFC00246963 /* OCVCascadeClassifierOptions.h in Headers */ = {isa = PBXBuildFile; fileRef = 38C0D9361E7D8FFC00246963 /* OCVCascadeClassifierOptions.h */; settings = {ATTRIBUTES = (Public, ); }; }; 38C0D9391E7D8FFC00246963 /* OCVCascadeClassifierOptions.m in Sources */ = {isa = PBXBuildFile; fileRef = 38C0D9371E7D8FFC00246963 /* OCVCascadeClassifierOptions.m */; }; 38C0D93A1E7D93D000246963 /* OCVSerializable.h in Headers */ = {isa = PBXBuildFile; fileRef = 3898711A1E6F393F00020CFB /* OCVSerializable.h */; settings = {ATTRIBUTES = (Public, ); }; }; 38C5B0C222948817009D2D68 /* LegoCV.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 38B4D4B01E2AA01F008AAAB0 /* LegoCV.framework */; }; 38DB13EC1E366E0100822472 /* OCVVideo.h in Headers */ = {isa = PBXBuildFile; fileRef = 38DB13EB1E366E0100822472 /* OCVVideo.h */; settings = {ATTRIBUTES = (Public, ); }; }; 38DB13EE1E366FE700822472 /* OCVCore.h in Headers */ = {isa = PBXBuildFile; fileRef = 38DB13ED1E366FD500822472 /* OCVCore.h */; settings = {ATTRIBUTES = (Public, ); }; }; 38E3EA211E6E305C00BCC097 /* OCVImageProcessing.h in Headers */ = {isa = PBXBuildFile; fileRef = 38E3EA201E6E305C00BCC097 /* OCVImageProcessing.h */; settings = {ATTRIBUTES = (Public, ); }; }; 67E640A971036C2B4E41E3D9 /* OCVPCA.h in Headers */ = {isa = PBXBuildFile; fileRef = 67E64CCA2E906D9DCCA4F777 /* OCVPCA.h */; }; 67E6417055654E2DD6FD5D3A /* OCVInputArray+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 67E648DFC66EAC59D4B600A3 /* OCVInputArray+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; 67E641A0E84C3661DCAE643F /* OCVSVD.mm in Sources */ = {isa = PBXBuildFile; fileRef = 67E6448BB8EFC6BEBF51BA3C /* OCVSVD.mm */; }; 67E641AE46ACCCCFFFCE3621 /* OCVPoint.h in Headers */ = {isa = PBXBuildFile; fileRef = 67E643ED8E6AE25117DB09C6 /* OCVPoint.h */; settings = {ATTRIBUTES = (Public, ); }; }; 67E641CE9F2AC16067D63172 /* OCVComplex.m in Sources */ = {isa = PBXBuildFile; fileRef = 67E64A15D96D2EC6DAB44E24 /* OCVComplex.m */; }; 67E6424CB9C3609DCBB63C45 /* OCVTermCriteria.h in Headers */ = {isa = PBXBuildFile; fileRef = 67E64D0DAEBA852A31A6211E /* OCVTermCriteria.h */; settings = {ATTRIBUTES = (Public, ); }; }; 67E642627C4A182CCBCA3A46 /* OCVOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 67E6438675C6C73B77B08385 /* OCVOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; 67E6426C3111E627F15578A5 /* OCVMat.h in Headers */ = {isa = PBXBuildFile; fileRef = 67E649395264F917D36DA5F8 /* OCVMat.h */; settings = {ATTRIBUTES = (Public, ); }; }; 67E642A4F9BE94B327C25F84 /* OCVUMat.h in Headers */ = {isa = PBXBuildFile; fileRef = 67E64F947B816F412C783679 /* OCVUMat.h */; settings = {ATTRIBUTES = (Public, ); }; }; 67E642E40A844657959DAB84 /* OCVOperation+Bitwise.mm in Sources */ = {isa = PBXBuildFile; fileRef = 67E6425526F810208AA6B50E /* OCVOperation+Bitwise.mm */; }; 67E6430460F88D3DB9A262A1 /* OCVRect+Private.mm in Sources */ = {isa = PBXBuildFile; fileRef = 67E641E5AE5841744443558D /* OCVRect+Private.mm */; }; 67E6434338BC40333D7F777C /* OCVInputArray.mm in Sources */ = {isa = PBXBuildFile; fileRef = 67E64CDCF01D111E40407448 /* OCVInputArray.mm */; }; 67E6436EE5D768B6C32F3C87 /* OCVTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 67E64459E0C63EA4D9627050 /* OCVTypes.h */; settings = {ATTRIBUTES = (Public, ); }; }; 67E6437FD719EFAD3A84D511 /* OCVMatDataAllocator.h in Headers */ = {isa = PBXBuildFile; fileRef = 67E642E169EC045927288E82 /* OCVMatDataAllocator.h */; settings = {ATTRIBUTES = (Public, ); }; }; 67E6438494C8E62823A6221F /* OCVMatExpr.mm in Sources */ = {isa = PBXBuildFile; fileRef = 67E64A96432DA475855E0594 /* OCVMatExpr.mm */; }; 67E643A4327EFC207C923080 /* OCVInputArray.h in Headers */ = {isa = PBXBuildFile; fileRef = 67E6414DA192C455EE9F6374 /* OCVInputArray.h */; settings = {ATTRIBUTES = (Public, ); }; }; 67E643CAD65DD5E9C86957D0 /* OCVOutputArray.mm in Sources */ = {isa = PBXBuildFile; fileRef = 67E6434323FF82193E9898C0 /* OCVOutputArray.mm */; }; 67E643F98D5706485C3DAA9F /* OCVOutputArrayable.h in Headers */ = {isa = PBXBuildFile; fileRef = 67E6475B436646A9C998F132 /* OCVOutputArrayable.h */; settings = {ATTRIBUTES = (Public, ); }; }; 67E643FC3D2EF70F92993806 /* OCVFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = 67E64B59E8EBB4139E44EF18 /* OCVFormatter.m */; }; 67E6445E927F1CC3D66BE6CA /* OCVMat.mm in Sources */ = {isa = PBXBuildFile; fileRef = 67E641FBE65950718BDBAC73 /* OCVMat.mm */; }; 67E6448CC376B69531E717EC /* OCVPoint+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 67E6479DFFDCE9D7CDD430C6 /* OCVPoint+Private.h */; }; 67E644E39302CDD38472F074 /* OCVOperation+Transform.h in Headers */ = {isa = PBXBuildFile; fileRef = 67E64BC77E241D37FD032064 /* OCVOperation+Transform.h */; settings = {ATTRIBUTES = (Public, ); }; }; 67E6451D7988CBE476CE428C /* OCVImageOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 67E6439A810BAF9EB4F3D2EB /* OCVImageOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; 67E6453125423AC48F3D4C54 /* OCVCascadeClassifier.mm in Sources */ = {isa = PBXBuildFile; fileRef = 67E6468D1AAEA71F119F0D71 /* OCVCascadeClassifier.mm */; }; 67E6456620CCF41EBB3210AD /* OCVLDA.h in Headers */ = {isa = PBXBuildFile; fileRef = 67E64FA8CD286E50EC4C0D24 /* OCVLDA.h */; }; 67E645A832B070AB94DE46CF /* OCVPCA.mm in Sources */ = {isa = PBXBuildFile; fileRef = 67E64998F2833EED2BBE6864 /* OCVPCA.mm */; }; 67E6462097C843412681563A /* OCVScalar.h in Headers */ = {isa = PBXBuildFile; fileRef = 67E644F65A43C7F826E18FD8 /* OCVScalar.h */; settings = {ATTRIBUTES = (Public, ); }; }; 67E646925E8CB062C6A6B51D /* OCVRect+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 67E6422A492670AF3DC695D8 /* OCVRect+Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; 67E646DDD3DE39D2D7C8D936 /* OCVOperation+Transform.mm in Sources */ = {isa = PBXBuildFile; fileRef = 67E644AF37D67E1163B102A4 /* OCVOperation+Transform.mm */; }; 67E6470893E985806C173E68 /* OCVRandomGenerator.mm in Sources */ = {isa = PBXBuildFile; fileRef = 67E6496A76480256E3FB4A07 /* OCVRandomGenerator.mm */; }; 67E6471FA02CAAF362060F84 /* OCVImage.m in Sources */ = {isa = PBXBuildFile; fileRef = 67E649531633D7EAAED7D919 /* OCVImage.m */; }; 67E6473F3C34532A46C0D9EC /* OCVOutputArray+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 67E6477274FCBEE3CD09E268 /* OCVOutputArray+Private.h */; }; 67E6476EC8885C15EA428F69 /* OCVComplex.h in Headers */ = {isa = PBXBuildFile; fileRef = 67E648666F32797BEEC3B6EA /* OCVComplex.h */; }; 67E64776786FCF3C6717E47E /* OCVScalar.m in Sources */ = {isa = PBXBuildFile; fileRef = 67E640401947EB92C031F274 /* OCVScalar.m */; }; 67E6478BAEA8F246134B41AB /* OCVMinimumMaximum.h in Headers */ = {isa = PBXBuildFile; fileRef = 67E644438826EEE78DA5FA73 /* OCVMinimumMaximum.h */; settings = {ATTRIBUTES = (Public, ); }; }; 67E647A36EE5D1F16353A215 /* OCVRect.m in Sources */ = {isa = PBXBuildFile; fileRef = 67E64998581748A53D9A7499 /* OCVRect.m */; }; 67E647D10B4E166E041A9B8D /* OCVAlgorithm.m in Sources */ = {isa = PBXBuildFile; fileRef = 67E6440F9430BD2FE92FB3E3 /* OCVAlgorithm.m */; }; 67E647D322F01061FBD19528 /* OCVOperation.mm in Sources */ = {isa = PBXBuildFile; fileRef = 67E64B051241494FBEEEE346 /* OCVOperation.mm */; }; 67E6483A6D84B9ED9B5D2A4A /* OCVCascadeClassifier.h in Headers */ = {isa = PBXBuildFile; fileRef = 67E64D6AF68715735A06CFEA /* OCVCascadeClassifier.h */; settings = {ATTRIBUTES = (Public, ); }; }; 67E648675A5F8621E5FD80C2 /* OCVAlgorithm.h in Headers */ = {isa = PBXBuildFile; fileRef = 67E6446098E944BFA71C69A9 /* OCVAlgorithm.h */; settings = {ATTRIBUTES = (Public, ); }; }; 67E648CE9C63C53ACF371407 /* OCVColorConversionType.h in Headers */ = {isa = PBXBuildFile; fileRef = 67E64D2A87A5D1389D935DF9 /* OCVColorConversionType.h */; settings = {ATTRIBUTES = (Public, ); }; }; 67E648D0AA7CBC940CD83B4C /* OCVLDA.mm in Sources */ = {isa = PBXBuildFile; fileRef = 67E64A5773A5543773312E0B /* OCVLDA.mm */; }; 67E649516B336D32CF0E6059 /* OCVSVD.h in Headers */ = {isa = PBXBuildFile; fileRef = 67E6498671B0BA4198A082B7 /* OCVSVD.h */; }; 67E649ED77AF2C63CB75F620 /* OCVInputOutputArrayable.h in Headers */ = {isa = PBXBuildFile; fileRef = 67E64E8EDB850ADB26F646D7 /* OCVInputOutputArrayable.h */; settings = {ATTRIBUTES = (Public, ); }; }; 67E64A019431C37CD2E82210 /* OCVImage.h in Headers */ = {isa = PBXBuildFile; fileRef = 67E64391B0744DE769F98B1C /* OCVImage.h */; }; 67E64A0C4B4C00A32A808C87 /* OCVInputArrayable.h in Headers */ = {isa = PBXBuildFile; fileRef = 67E641C573728BB0D14DBD41 /* OCVInputArrayable.h */; settings = {ATTRIBUTES = (Public, ); }; }; 67E64A11B0A406C9C9029672 /* OCVEdges.h in Headers */ = {isa = PBXBuildFile; fileRef = 67E642DCCBA8EF4A5E2348FB /* OCVEdges.h */; settings = {ATTRIBUTES = (Public, ); }; }; 67E64A1FCCE0E9859B9A3ED5 /* OCVMatExpr.h in Headers */ = {isa = PBXBuildFile; fileRef = 67E64F8DA13AAEAD6BB69D81 /* OCVMatExpr.h */; settings = {ATTRIBUTES = (Public, ); }; }; 67E64A5FFF74B76259911897 /* OCVFormatter.h in Headers */ = {isa = PBXBuildFile; fileRef = 67E64557F96063D5CEA27BD8 /* OCVFormatter.h */; settings = {ATTRIBUTES = (Public, ); }; }; 67E64AB04DF01AC5F2DC4632 /* OCVTermCriteria.m in Sources */ = {isa = PBXBuildFile; fileRef = 67E648D9189DEE59AAC80A60 /* OCVTermCriteria.m */; }; 67E64ACB7AC9146ABC81AF5C /* OCVInputOutputArray.mm in Sources */ = {isa = PBXBuildFile; fileRef = 67E64B302058F4898CAE4A1C /* OCVInputOutputArray.mm */; }; 67E64B239EDCF0B841EC9CC1 /* OCVMatDataAllocator+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 67E64C22D6FBDAD91BACC516 /* OCVMatDataAllocator+Private.h */; }; 67E64B41EB82AA57E982C27A /* OCVInputOutputArray.h in Headers */ = {isa = PBXBuildFile; fileRef = 67E6416E34EDDC521F465DDE /* OCVInputOutputArray.h */; settings = {ATTRIBUTES = (Public, ); }; }; 67E64B5D0527B760FE0161D7 /* OCVMinimumMaximum.m in Sources */ = {isa = PBXBuildFile; fileRef = 67E64B35099EBE43C5F9A1C2 /* OCVMinimumMaximum.m */; }; 67E64B60D2C9C331E963C1B0 /* OCVVector.h in Headers */ = {isa = PBXBuildFile; fileRef = 67E64B2FA4855E136039527B /* OCVVector.h */; settings = {ATTRIBUTES = (Public, ); }; }; 67E64B717650D498E650CC73 /* OCVRandomGenerator.h in Headers */ = {isa = PBXBuildFile; fileRef = 67E643FED267103AF823F80A /* OCVRandomGenerator.h */; settings = {ATTRIBUTES = (Public, ); }; }; 67E64B7E0FDC5B551EF68970 /* OCVMatDataAllocator.mm in Sources */ = {isa = PBXBuildFile; fileRef = 67E649DB3C2A73D13D8B1B5E /* OCVMatDataAllocator.mm */; }; 67E64C1DB7DBFA0C5DA2C9BE /* OCVRect.h in Headers */ = {isa = PBXBuildFile; fileRef = 67E64961AAA53DCD08D796FF /* OCVRect.h */; settings = {ATTRIBUTES = (Public, ); }; }; 67E64C3AD9D201BE55ACDD51 /* OCVPoint+Private.mm in Sources */ = {isa = PBXBuildFile; fileRef = 67E64844505F01302289F309 /* OCVPoint+Private.mm */; }; 67E64C56148755FEAD662D52 /* OCVSize+Private.mm in Sources */ = {isa = PBXBuildFile; fileRef = 67E64C801A725FA1FE883678 /* OCVSize+Private.mm */; }; 67E64C955BC995A800BE238A /* OCVOperation+Bitwise.h in Headers */ = {isa = PBXBuildFile; fileRef = 67E645D09E183D239A916DD8 /* OCVOperation+Bitwise.h */; settings = {ATTRIBUTES = (Public, ); }; }; 67E64C9B5A91DA7042DD5BEC /* OCVOutputArray.h in Headers */ = {isa = PBXBuildFile; fileRef = 67E642642A6333F29DD824AA /* OCVOutputArray.h */; settings = {ATTRIBUTES = (Public, ); }; }; 67E64D8A7F0465ED26226CDE /* OCVSize+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 67E64FDA4612629A3D339C5D /* OCVSize+Private.h */; }; 67E64DD6519A59AAABD4B224 /* OCVUMat.m in Sources */ = {isa = PBXBuildFile; fileRef = 67E6472C6307D5835B1D6C2B /* OCVUMat.m */; }; 67E64E06B0FC8DB79DF8354F /* OCVImageOperation.mm in Sources */ = {isa = PBXBuildFile; fileRef = 67E64A456D91C276BAF01CDD /* OCVImageOperation.mm */; }; 67E64E27B72E603F164AD432 /* OCVVector.m in Sources */ = {isa = PBXBuildFile; fileRef = 67E64A6EE9A0528CA003C494 /* OCVVector.m */; }; 67E64E7DA7437D4DEA3E1191 /* OCVSize.h in Headers */ = {isa = PBXBuildFile; fileRef = 67E64A3342D4BBE76713F88D /* OCVSize.h */; settings = {ATTRIBUTES = (Public, ); }; }; 67E64EDCC12B0E85158EED46 /* OCVInterpolationType.h in Headers */ = {isa = PBXBuildFile; fileRef = 67E645697CBF982455006B11 /* OCVInterpolationType.h */; settings = {ATTRIBUTES = (Public, ); }; }; 67E64F5B14D37BB167F88E90 /* OCVGeometry.h in Headers */ = {isa = PBXBuildFile; fileRef = 67E648280FA290221C92DE01 /* OCVGeometry.h */; settings = {ATTRIBUTES = (Public, ); }; }; 67E64F822344F94C3B4967C8 /* OCVInputOutputArray+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 67E6438D1CE78C8D148D0DE8 /* OCVInputOutputArray+Private.h */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ 381F150D1E2AA22A0072F870 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 38B4D4A71E2AA01F008AAAB0 /* Project object */; proxyType = 1; remoteGlobalIDString = 38B4D4AF1E2AA01F008AAAB0; remoteInfo = LegoCV; }; 388B229521863CF000F24D45 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 38B4D4A71E2AA01F008AAAB0 /* Project object */; proxyType = 1; remoteGlobalIDString = 388B228A21863CF000F24D45; remoteInfo = LegoSwiftCV; }; 388B229721863CF000F24D45 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 38B4D4A71E2AA01F008AAAB0 /* Project object */; proxyType = 1; remoteGlobalIDString = 38B4D4CF1E2AA110008AAAB0; remoteInfo = FaceDetection; }; 388B229E21863CF000F24D45 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 38B4D4A71E2AA01F008AAAB0 /* Project object */; proxyType = 1; remoteGlobalIDString = 388B228A21863CF000F24D45; remoteInfo = LegoSwiftCV; }; 38B4D4BB1E2AA01F008AAAB0 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 38B4D4A71E2AA01F008AAAB0 /* Project object */; proxyType = 1; remoteGlobalIDString = 38B4D4AF1E2AA01F008AAAB0; remoteInfo = LegoCV; }; 38C5B0C322948865009D2D68 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 38B4D4A71E2AA01F008AAAB0 /* Project object */; proxyType = 1; remoteGlobalIDString = 38B4D4CF1E2AA110008AAAB0; remoteInfo = FaceDetection; }; /* End PBXContainerItemProxy section */ /* Begin PBXCopyFilesBuildPhase section */ 381F150F1E2AA22A0072F870 /* Embed Frameworks */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = ""; dstSubfolderSpec = 10; files = ( 388B22A121863CF000F24D45 /* LegoSwiftCV.framework in Embed Frameworks */, 3848D3381E3F973A00379F4F /* opencv2.framework in Embed Frameworks */, 381F150C1E2AA22A0072F870 /* LegoCV.framework in Embed Frameworks */, ); name = "Embed Frameworks"; runOnlyForDeploymentPostprocessing = 0; }; /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ 381F15081E2AA1D50072F870 /* opencv2.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = opencv2.framework; path = ../ios/opencv2.framework; sourceTree = ""; }; 383BC40E1E2FF974002EA7A1 /* OCVObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVObject.h; sourceTree = ""; }; 383BC40F1E2FF974002EA7A1 /* OCVObject.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVObject.m; sourceTree = ""; }; 383BC4161E2FFAC2002EA7A1 /* OCVBlob.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVBlob.h; sourceTree = ""; }; 383BC4171E2FFAC2002EA7A1 /* OCVBlob.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVBlob.m; sourceTree = ""; }; 383BC41A1E2FFAD4002EA7A1 /* OCVGPUMat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVGPUMat.h; sourceTree = ""; }; 383BC41B1E2FFAD4002EA7A1 /* OCVGPUMat.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVGPUMat.m; sourceTree = ""; }; 383BC41E1E2FFB1D002EA7A1 /* OCVStorageOperationType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVStorageOperationType.h; sourceTree = ""; }; 383BC41F1E2FFB1D002EA7A1 /* OCVStorageOperationType.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVStorageOperationType.m; sourceTree = ""; }; 383BC4221E2FFB32002EA7A1 /* OCVCharucoBoard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVCharucoBoard.h; sourceTree = ""; }; 383BC4231E2FFB32002EA7A1 /* OCVCharucoBoard.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVCharucoBoard.m; sourceTree = ""; }; 383BC4261E2FFB47002EA7A1 /* OCVBackgroundSubtractorGMG.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVBackgroundSubtractorGMG.h; sourceTree = ""; }; 383BC4271E2FFB47002EA7A1 /* OCVBackgroundSubtractorGMG.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVBackgroundSubtractorGMG.m; sourceTree = ""; }; 383BC42A1E2FFB56002EA7A1 /* OCVBackgroundSubtractorMOG.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVBackgroundSubtractorMOG.h; sourceTree = ""; }; 383BC42B1E2FFB56002EA7A1 /* OCVBackgroundSubtractorMOG.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVBackgroundSubtractorMOG.m; sourceTree = ""; }; 383BC42E1E2FFB78002EA7A1 /* OCVNet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVNet.h; sourceTree = ""; }; 383BC42F1E2FFB78002EA7A1 /* OCVNet.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVNet.m; sourceTree = ""; }; 383BC4321E2FFB89002EA7A1 /* OCVImporter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVImporter.h; sourceTree = ""; }; 383BC4331E2FFB89002EA7A1 /* OCVImporter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVImporter.m; sourceTree = ""; }; 383BC4361E2FFB9A002EA7A1 /* OCVEigenFaceRecognizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVEigenFaceRecognizer.h; sourceTree = ""; }; 383BC4371E2FFB9A002EA7A1 /* OCVEigenFaceRecognizer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVEigenFaceRecognizer.m; sourceTree = ""; }; 383BC43A1E2FFBA6002EA7A1 /* OCVFaceRecognizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVFaceRecognizer.h; sourceTree = ""; }; 383BC43B1E2FFBA6002EA7A1 /* OCVFaceRecognizer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVFaceRecognizer.m; sourceTree = ""; }; 383BC43E1E2FFBB3002EA7A1 /* OCVFisherFaceRecognizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVFisherFaceRecognizer.h; sourceTree = ""; }; 383BC43F1E2FFBB3002EA7A1 /* OCVFisherFaceRecognizer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVFisherFaceRecognizer.m; sourceTree = ""; }; 383BC4421E2FFBBF002EA7A1 /* OCVLBPHFaceRecognizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVLBPHFaceRecognizer.h; sourceTree = ""; }; 383BC4431E2FFBBF002EA7A1 /* OCVLBPHFaceRecognizer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVLBPHFaceRecognizer.m; sourceTree = ""; }; 383BC4461E2FFBD5002EA7A1 /* OCVFeature2D.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVFeature2D.h; sourceTree = ""; }; 383BC4471E2FFBD5002EA7A1 /* OCVFeature2D.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVFeature2D.m; sourceTree = ""; }; 383BC44A1E2FFBE4002EA7A1 /* OCVIndex.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVIndex.h; sourceTree = ""; }; 383BC44B1E2FFBE4002EA7A1 /* OCVIndex.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVIndex.m; sourceTree = ""; }; 383BC4521E2FFC18002EA7A1 /* OCVGeodeticCoordinate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVGeodeticCoordinate.h; sourceTree = ""; }; 383BC4531E2FFC18002EA7A1 /* OCVGeodeticCoordinate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVGeodeticCoordinate.m; sourceTree = ""; }; 383BC4561E2FFC2E002EA7A1 /* OCVFuzzyInvoke.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVFuzzyInvoke.h; sourceTree = ""; }; 383BC4571E2FFC2E002EA7A1 /* OCVFuzzyInvoke.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVFuzzyInvoke.m; sourceTree = ""; }; 383BC45A1E2FFC5C002EA7A1 /* OCVLSDDetector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVLSDDetector.h; sourceTree = ""; }; 383BC45B1E2FFC5C002EA7A1 /* OCVLSDDetector.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVLSDDetector.m; sourceTree = ""; }; 383BC45E1E2FFC6F002EA7A1 /* OCVBoost.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVBoost.h; sourceTree = ""; }; 383BC45F1E2FFC6F002EA7A1 /* OCVBoost.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVBoost.m; sourceTree = ""; }; 383BC4621E2FFC7B002EA7A1 /* OCVANNMLP.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVANNMLP.h; sourceTree = ""; }; 383BC4631E2FFC7B002EA7A1 /* OCVANNMLP.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVANNMLP.m; sourceTree = ""; }; 383BC4661E2FFC8F002EA7A1 /* OCVDTree.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVDTree.h; sourceTree = ""; }; 383BC4671E2FFC8F002EA7A1 /* OCVDTree.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVDTree.m; sourceTree = ""; }; 383BC46A1E2FFCA2002EA7A1 /* OCVEM.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVEM.h; sourceTree = ""; }; 383BC46B1E2FFCA2002EA7A1 /* OCVEM.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVEM.m; sourceTree = ""; }; 383BC46E1E2FFCAC002EA7A1 /* OCVKNearest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVKNearest.h; sourceTree = ""; }; 383BC46F1E2FFCAC002EA7A1 /* OCVKNearest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVKNearest.m; sourceTree = ""; }; 383BC4721E2FFCB5002EA7A1 /* OCVLogisticRegression.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVLogisticRegression.h; sourceTree = ""; }; 383BC4731E2FFCB5002EA7A1 /* OCVLogisticRegression.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVLogisticRegression.m; sourceTree = ""; }; 383BC4761E2FFCC9002EA7A1 /* OCVNormalBayesClassifier.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVNormalBayesClassifier.h; sourceTree = ""; }; 383BC4771E2FFCC9002EA7A1 /* OCVNormalBayesClassifier.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVNormalBayesClassifier.m; sourceTree = ""; }; 383BC47A1E2FFCD3002EA7A1 /* OCVRTree.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVRTree.h; sourceTree = ""; }; 383BC47B1E2FFCD3002EA7A1 /* OCVRTree.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVRTree.m; sourceTree = ""; }; 383BC47E1E2FFCE1002EA7A1 /* OCVStatModelExtensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVStatModelExtensions.h; sourceTree = ""; }; 383BC47F1E2FFCE1002EA7A1 /* OCVStatModelExtensions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVStatModelExtensions.m; sourceTree = ""; }; 383BC4821E2FFCEA002EA7A1 /* OCVSVM.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVSVM.h; sourceTree = ""; }; 383BC4831E2FFCEA002EA7A1 /* OCVSVM.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVSVM.m; sourceTree = ""; }; 383BC4861E2FFCF2002EA7A1 /* OCVTrainData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVTrainData.h; sourceTree = ""; }; 383BC4871E2FFCF2002EA7A1 /* OCVTrainData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVTrainData.m; sourceTree = ""; }; 383BC48A1E2FFD0A002EA7A1 /* OCVBoostType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVBoostType.h; sourceTree = ""; }; 383BC48B1E2FFD0A002EA7A1 /* OCVBoostType.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVBoostType.m; sourceTree = ""; }; 383BC48E1E2FFD13002EA7A1 /* OCVVarType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVVarType.h; sourceTree = ""; }; 383BC48F1E2FFD13002EA7A1 /* OCVVarType.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVVarType.m; sourceTree = ""; }; 383BC4921E2FFD2C002EA7A1 /* OCVMCvDTreeNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVMCvDTreeNode.h; sourceTree = ""; }; 383BC4931E2FFD2C002EA7A1 /* OCVMCvDTreeNode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVMCvDTreeNode.m; sourceTree = ""; }; 383BC4961E2FFD39002EA7A1 /* OCVMCvDTreeSplit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVMCvDTreeSplit.h; sourceTree = ""; }; 383BC4971E2FFD39002EA7A1 /* OCVMCvDTreeSplit.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVMCvDTreeSplit.m; sourceTree = ""; }; 383BC49A1E2FFD4B002EA7A1 /* OCVMCvDTreeSplitMOrder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVMCvDTreeSplitMOrder.h; sourceTree = ""; }; 383BC49B1E2FFD4B002EA7A1 /* OCVMCvDTreeSplitMOrder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVMCvDTreeSplitMOrder.m; sourceTree = ""; }; 383BC49E1E2FFD56002EA7A1 /* OCVMCvParamGrid.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVMCvParamGrid.h; sourceTree = ""; }; 383BC49F1E2FFD56002EA7A1 /* OCVMCvParamGrid.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVMCvParamGrid.m; sourceTree = ""; }; 383BC4A21E2FFDDA002EA7A1 /* OCVDevice.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVDevice.h; sourceTree = ""; }; 383BC4A31E2FFDDA002EA7A1 /* OCVDevice.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVDevice.m; sourceTree = ""; }; 383BC4A61E2FFDE5002EA7A1 /* OCVQueue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVQueue.h; sourceTree = ""; }; 383BC4A71E2FFDE5002EA7A1 /* OCVQueue.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVQueue.m; sourceTree = ""; }; 383BC4AA1E2FFDEC002EA7A1 /* OCVKernel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVKernel.h; sourceTree = ""; }; 383BC4AB1E2FFDEC002EA7A1 /* OCVKernel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVKernel.m; sourceTree = ""; }; 383BC4AE1E2FFDF6002EA7A1 /* OCVImage2D.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVImage2D.h; sourceTree = ""; }; 383BC4AF1E2FFDF6002EA7A1 /* OCVImage2D.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVImage2D.m; sourceTree = ""; }; 383BC4B21E2FFE06002EA7A1 /* OCVKernelConfiguration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVKernelConfiguration.h; sourceTree = ""; }; 383BC4B31E2FFE06002EA7A1 /* OCVKernelConfiguration.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVKernelConfiguration.m; sourceTree = ""; }; 383BC4B61E2FFE13002EA7A1 /* OCVPlatformInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVPlatformInfo.h; sourceTree = ""; }; 383BC4B71E2FFE13002EA7A1 /* OCVPlatformInfo.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVPlatformInfo.m; sourceTree = ""; }; 383BC4BA1E2FFE1C002EA7A1 /* OCVProgramSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVProgramSource.h; sourceTree = ""; }; 383BC4BB1E2FFE1C002EA7A1 /* OCVProgramSource.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVProgramSource.m; sourceTree = ""; }; 383BC4BE1E2FFE4E002EA7A1 /* OCVPageIterator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVPageIterator.h; sourceTree = ""; }; 383BC4BF1E2FFE4E002EA7A1 /* OCVPageIterator.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVPageIterator.m; sourceTree = ""; }; 383BC4C21E2FFE63002EA7A1 /* OCVTesseract.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVTesseract.h; sourceTree = ""; }; 383BC4C31E2FFE63002EA7A1 /* OCVTesseract.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVTesseract.m; sourceTree = ""; }; 383BC4C61E2FFE6C002EA7A1 /* OCVTesseractResult.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVTesseractResult.h; sourceTree = ""; }; 383BC4C71E2FFE6C002EA7A1 /* OCVTesseractResult.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVTesseractResult.m; sourceTree = ""; }; 383BC4CA1E2FFE7C002EA7A1 /* OCVOrientation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVOrientation.h; sourceTree = ""; }; 383BC4CB1E2FFE7C002EA7A1 /* OCVOrientation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVOrientation.m; sourceTree = ""; }; 383BC4CE1E2FFE90002EA7A1 /* OCVPlot.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVPlot.h; sourceTree = ""; }; 383BC4CF1E2FFE90002EA7A1 /* OCVPlot.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVPlot.m; sourceTree = ""; }; 383BC4D21E2FFEAE002EA7A1 /* OCVReflectImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVReflectImage.h; sourceTree = ""; }; 383BC4D31E2FFEAE002EA7A1 /* OCVReflectImage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVReflectImage.m; sourceTree = ""; }; 383BC4D61E2FFEC0002EA7A1 /* OCVAffineTransformer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVAffineTransformer.h; sourceTree = ""; }; 383BC4D71E2FFEC0002EA7A1 /* OCVAffineTransformer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVAffineTransformer.m; sourceTree = ""; }; 383BC4DA1E2FFED0002EA7A1 /* OCVChiHistogramCostExtractor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVChiHistogramCostExtractor.h; sourceTree = ""; }; 383BC4DB1E2FFED0002EA7A1 /* OCVChiHistogramCostExtractor.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVChiHistogramCostExtractor.m; sourceTree = ""; }; 383BC4DE1E2FFEDE002EA7A1 /* OCVEMDHistogramCostExtractor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVEMDHistogramCostExtractor.h; sourceTree = ""; }; 383BC4DF1E2FFEDE002EA7A1 /* OCVEMDHistogramCostExtractor.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVEMDHistogramCostExtractor.m; sourceTree = ""; }; 383BC4E21E2FFEEC002EA7A1 /* OCVEMDL1HistogramCostExtractor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVEMDL1HistogramCostExtractor.h; sourceTree = ""; }; 383BC4E31E2FFEEC002EA7A1 /* OCVEMDL1HistogramCostExtractor.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVEMDL1HistogramCostExtractor.m; sourceTree = ""; }; 383BC4E61E2FFEF8002EA7A1 /* OCVHausdorffDistanceExtractor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVHausdorffDistanceExtractor.h; sourceTree = ""; }; 383BC4E71E2FFEF8002EA7A1 /* OCVHausdorffDistanceExtractor.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVHausdorffDistanceExtractor.m; sourceTree = ""; }; 383BC4EA1E2FFF08002EA7A1 /* OCVHistogramCostExtractor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVHistogramCostExtractor.h; sourceTree = ""; }; 383BC4EB1E2FFF08002EA7A1 /* OCVHistogramCostExtractor.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVHistogramCostExtractor.m; sourceTree = ""; }; 383BC4EE1E2FFF14002EA7A1 /* OCVNormHistogramCostExtractor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVNormHistogramCostExtractor.h; sourceTree = ""; }; 383BC4EF1E2FFF14002EA7A1 /* OCVNormHistogramCostExtractor.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVNormHistogramCostExtractor.m; sourceTree = ""; }; 383BC4F21E2FFF23002EA7A1 /* OCVShapeContextDistanceExtractor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVShapeContextDistanceExtractor.h; sourceTree = ""; }; 383BC4F31E2FFF23002EA7A1 /* OCVShapeContextDistanceExtractor.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVShapeContextDistanceExtractor.m; sourceTree = ""; }; 383BC4F61E2FFF39002EA7A1 /* OCVShapeDistanceExtractor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVShapeDistanceExtractor.h; sourceTree = ""; }; 383BC4F71E2FFF39002EA7A1 /* OCVShapeDistanceExtractor.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVShapeDistanceExtractor.m; sourceTree = ""; }; 383BC4FA1E2FFF44002EA7A1 /* OCVThinPlateSplineShapeTransformer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVThinPlateSplineShapeTransformer.h; sourceTree = ""; }; 383BC4FB1E2FFF44002EA7A1 /* OCVThinPlateSplineShapeTransformer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVThinPlateSplineShapeTransformer.m; sourceTree = ""; }; 383BC4FE1E2FFF5A002EA7A1 /* OCVFeaturesFinder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVFeaturesFinder.h; sourceTree = ""; }; 383BC4FF1E2FFF5A002EA7A1 /* OCVFeaturesFinder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVFeaturesFinder.m; sourceTree = ""; }; 383BC5021E2FFF66002EA7A1 /* OCVCompressedRectilinearWarper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVCompressedRectilinearWarper.h; sourceTree = ""; }; 383BC5031E2FFF66002EA7A1 /* OCVCompressedRectilinearWarper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVCompressedRectilinearWarper.m; sourceTree = ""; }; 383BC5061E2FFF6F002EA7A1 /* OCVFisheyeWarper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVFisheyeWarper.h; sourceTree = ""; }; 383BC5071E2FFF6F002EA7A1 /* OCVFisheyeWarper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVFisheyeWarper.m; sourceTree = ""; }; 383BC50A1E2FFF77002EA7A1 /* OCVMercatorWarper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVMercatorWarper.h; sourceTree = ""; }; 383BC50B1E2FFF77002EA7A1 /* OCVMercatorWarper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVMercatorWarper.m; sourceTree = ""; }; 383BC50E1E2FFF82002EA7A1 /* OCVOrbFeaturesFinder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVOrbFeaturesFinder.h; sourceTree = ""; }; 383BC50F1E2FFF82002EA7A1 /* OCVOrbFeaturesFinder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVOrbFeaturesFinder.m; sourceTree = ""; }; 383BC5121E2FFF8F002EA7A1 /* OCVPaniniPortraitWarper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVPaniniPortraitWarper.h; sourceTree = ""; }; 383BC5131E2FFF8F002EA7A1 /* OCVPaniniPortraitWarper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVPaniniPortraitWarper.m; sourceTree = ""; }; 383BC5161E2FFF99002EA7A1 /* OCVPaniniWarper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVPaniniWarper.h; sourceTree = ""; }; 383BC5171E2FFF99002EA7A1 /* OCVPaniniWarper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVPaniniWarper.m; sourceTree = ""; }; 383BC51A1E2FFFA0002EA7A1 /* OCVPlaneWarper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVPlaneWarper.h; sourceTree = ""; }; 383BC51B1E2FFFA0002EA7A1 /* OCVPlaneWarper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVPlaneWarper.m; sourceTree = ""; }; 383BC51E1E2FFFAA002EA7A1 /* OCVSphericalWarper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVSphericalWarper.h; sourceTree = ""; }; 383BC51F1E2FFFAA002EA7A1 /* OCVSphericalWarper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVSphericalWarper.m; sourceTree = ""; }; 383BC5221E2FFFB5002EA7A1 /* OCVStereographicWarper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVStereographicWarper.h; sourceTree = ""; }; 383BC5231E2FFFB5002EA7A1 /* OCVStereographicWarper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVStereographicWarper.m; sourceTree = ""; }; 383BC5261E2FFFBD002EA7A1 /* OCVSticher.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVSticher.h; sourceTree = ""; }; 383BC5271E2FFFBD002EA7A1 /* OCVSticher.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVSticher.m; sourceTree = ""; }; 383BC52A1E2FFFCE002EA7A1 /* OCVTransverseMercatorWarper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVTransverseMercatorWarper.h; sourceTree = ""; }; 383BC52B1E2FFFCE002EA7A1 /* OCVTransverseMercatorWarper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVTransverseMercatorWarper.m; sourceTree = ""; }; 383BC52E1E2FFFD9002EA7A1 /* OCVWarperCreator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVWarperCreator.h; sourceTree = ""; }; 383BC52F1E2FFFD9002EA7A1 /* OCVWarperCreator.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVWarperCreator.m; sourceTree = ""; }; 383BC5321E2FFFF6002EA7A1 /* OCVRgb.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVRgb.h; sourceTree = ""; }; 383BC5331E2FFFF6002EA7A1 /* OCVRgb.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVRgb.m; sourceTree = ""; }; 383BC5361E2FFFFC002EA7A1 /* OCVRgba.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVRgba.h; sourceTree = ""; }; 383BC5371E2FFFFC002EA7A1 /* OCVRgba.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVRgba.m; sourceTree = ""; }; 383BC53A1E300015002EA7A1 /* OCVFrameSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVFrameSource.h; sourceTree = ""; }; 383BC53B1E300015002EA7A1 /* OCVFrameSource.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVFrameSource.m; sourceTree = ""; }; 383BC53E1E30001E002EA7A1 /* OCVSuperResolution.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVSuperResolution.h; sourceTree = ""; }; 383BC53F1E30001E002EA7A1 /* OCVSuperResolution.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVSuperResolution.m; sourceTree = ""; }; 383BC5421E300033002EA7A1 /* OCVERFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVERFilter.h; sourceTree = ""; }; 383BC5431E300033002EA7A1 /* OCVERFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVERFilter.m; sourceTree = ""; }; 383BC5461E30003C002EA7A1 /* OCVERFilterNM1.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVERFilterNM1.h; sourceTree = ""; }; 383BC5471E30003C002EA7A1 /* OCVERFilterNM1.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVERFilterNM1.m; sourceTree = ""; }; 383BC54A1E300044002EA7A1 /* OCVERFilterNM2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVERFilterNM2.h; sourceTree = ""; }; 383BC54B1E300044002EA7A1 /* OCVERFilterNM2.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVERFilterNM2.m; sourceTree = ""; }; 383BC54E1E30004F002EA7A1 /* OCVERStat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVERStat.h; sourceTree = ""; }; 383BC54F1E30004F002EA7A1 /* OCVERStat.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVERStat.m; sourceTree = ""; }; 383BC5521E300062002EA7A1 /* OCVTiffWriter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVTiffWriter.h; sourceTree = ""; }; 383BC5531E300062002EA7A1 /* OCVTiffWriter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVTiffWriter.m; sourceTree = ""; }; 383BC5561E30006B002EA7A1 /* OCVTileTiffWriter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVTileTiffWriter.h; sourceTree = ""; }; 383BC5571E30006B002EA7A1 /* OCVTileTiffWriter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVTileTiffWriter.m; sourceTree = ""; }; 383BC55A1E300078002EA7A1 /* OCVMultiTracker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVMultiTracker.h; sourceTree = ""; }; 383BC55B1E300078002EA7A1 /* OCVMultiTracker.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVMultiTracker.m; sourceTree = ""; }; 383BC55E1E30007F002EA7A1 /* OCVTracker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVTracker.h; sourceTree = ""; }; 383BC55F1E30007F002EA7A1 /* OCVTracker.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVTracker.m; sourceTree = ""; }; 383BC5621E30009D002EA7A1 /* OCVVideoCaptureFrameSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVVideoCaptureFrameSource.h; sourceTree = ""; }; 383BC5631E30009D002EA7A1 /* OCVVideoCaptureFrameSource.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVVideoCaptureFrameSource.m; sourceTree = ""; }; 383BC5661E3000A4002EA7A1 /* OCVVideoFrameSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVVideoFrameSource.h; sourceTree = ""; }; 383BC5671E3000A4002EA7A1 /* OCVVideoFrameSource.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVVideoFrameSource.m; sourceTree = ""; }; 383BC56A1E3000AD002EA7A1 /* OCVGaussianMotionFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVGaussianMotionFilter.h; sourceTree = ""; }; 383BC56B1E3000AD002EA7A1 /* OCVGaussianMotionFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVGaussianMotionFilter.m; sourceTree = ""; }; 383BC56E1E3000B6002EA7A1 /* OCVOnePassStabilizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVOnePassStabilizer.h; sourceTree = ""; }; 383BC56F1E3000B6002EA7A1 /* OCVOnePassStabilizer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVOnePassStabilizer.m; sourceTree = ""; }; 383BC5721E3000BE002EA7A1 /* OCVTwoPassStabilizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVTwoPassStabilizer.h; sourceTree = ""; }; 383BC5731E3000BE002EA7A1 /* OCVTwoPassStabilizer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVTwoPassStabilizer.m; sourceTree = ""; }; 383BC5761E3000D0002EA7A1 /* OCVBackgroundSubtractor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVBackgroundSubtractor.h; sourceTree = ""; }; 383BC5771E3000D0002EA7A1 /* OCVBackgroundSubtractor.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVBackgroundSubtractor.m; sourceTree = ""; }; 383BC57A1E3000DA002EA7A1 /* OCVBackgroundSubtractorKNN.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVBackgroundSubtractorKNN.h; sourceTree = ""; }; 383BC57B1E3000DA002EA7A1 /* OCVBackgroundSubtractorKNN.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVBackgroundSubtractorKNN.m; sourceTree = ""; }; 383BC57E1E3000E3002EA7A1 /* OCVBackgroundSubtractorMOG2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVBackgroundSubtractorMOG2.h; sourceTree = ""; }; 383BC57F1E3000E3002EA7A1 /* OCVBackgroundSubtractorMOG2.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVBackgroundSubtractorMOG2.m; sourceTree = ""; }; 383BC5821E3000F7002EA7A1 /* OCVHistogramBox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVHistogramBox.h; sourceTree = ""; }; 383BC5831E3000F7002EA7A1 /* OCVHistogramBox.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVHistogramBox.m; sourceTree = ""; }; 383BC5861E3000FF002EA7A1 /* OCVHistogramViewer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVHistogramViewer.h; sourceTree = ""; }; 383BC5871E3000FF002EA7A1 /* OCVHistogramViewer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVHistogramViewer.m; sourceTree = ""; }; 383BC58E1E300134002EA7A1 /* OCVBriefDescriptorExtractor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVBriefDescriptorExtractor.h; sourceTree = ""; }; 383BC58F1E300134002EA7A1 /* OCVBriefDescriptorExtractor.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVBriefDescriptorExtractor.m; sourceTree = ""; }; 383BC5921E30013C002EA7A1 /* OCVCudaSURF.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVCudaSURF.h; sourceTree = ""; }; 383BC5931E30013C002EA7A1 /* OCVCudaSURF.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVCudaSURF.m; sourceTree = ""; }; 383BC5961E300142002EA7A1 /* OCVDAISY.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVDAISY.h; sourceTree = ""; }; 383BC5971E300142002EA7A1 /* OCVDAISY.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVDAISY.m; sourceTree = ""; }; 383BC59A1E300149002EA7A1 /* OCVFreak.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVFreak.h; sourceTree = ""; }; 383BC59B1E300149002EA7A1 /* OCVFreak.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVFreak.m; sourceTree = ""; }; 383BC59E1E300150002EA7A1 /* OCVLATCH.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVLATCH.h; sourceTree = ""; }; 383BC59F1E300150002EA7A1 /* OCVLATCH.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVLATCH.m; sourceTree = ""; }; 383BC5A21E300157002EA7A1 /* OCVLUCID.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVLUCID.h; sourceTree = ""; }; 383BC5A31E300157002EA7A1 /* OCVLUCID.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVLUCID.m; sourceTree = ""; }; 383BC5A61E30015E002EA7A1 /* OCVSIFT.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVSIFT.h; sourceTree = ""; }; 383BC5A71E30015E002EA7A1 /* OCVSIFT.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVSIFT.m; sourceTree = ""; }; 383BC5AA1E300165002EA7A1 /* OCVStarDetector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVStarDetector.h; sourceTree = ""; }; 383BC5AB1E300165002EA7A1 /* OCVStarDetector.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVStarDetector.m; sourceTree = ""; }; 383BC5AE1E30016B002EA7A1 /* OCVSURF.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVSURF.h; sourceTree = ""; }; 383BC5AF1E30016B002EA7A1 /* OCVSURF.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVSURF.m; sourceTree = ""; }; 383BC5B21E30017C002EA7A1 /* OCVDTFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVDTFilter.h; sourceTree = ""; }; 383BC5B31E30017C002EA7A1 /* OCVDTFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVDTFilter.m; sourceTree = ""; }; 383BC5B61E30018A002EA7A1 /* OCVXPhoto.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVXPhoto.h; sourceTree = ""; }; 383BC5B71E30018A002EA7A1 /* OCVXPhoto.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVXPhoto.m; sourceTree = ""; }; 386F2B7F1E3524D300320AEB /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; 386F2B801E3524D300320AEB /* CoreVideo.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreVideo.framework; path = System/Library/Frameworks/CoreVideo.framework; sourceTree = SDKROOT; }; 386F2B811E3524D300320AEB /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; 386F2B851E352A4800320AEB /* OCVPointerObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVPointerObject.h; sourceTree = ""; }; 386F2B861E352A4800320AEB /* OCVPointerObject.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVPointerObject.m; sourceTree = ""; }; 388B228421863CB500F24D45 /* Matrix.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Matrix.swift; sourceTree = ""; }; 388B228B21863CF000F24D45 /* LegoSwiftCV.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = LegoSwiftCV.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 388B228D21863CF000F24D45 /* LegoSwiftCV.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LegoSwiftCV.h; sourceTree = ""; }; 388B228E21863CF000F24D45 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 388B229321863CF000F24D45 /* LegoSwiftCVTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = LegoSwiftCVTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 388B229A21863CF000F24D45 /* LegoSwiftCVTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LegoSwiftCVTests.swift; sourceTree = ""; }; 388B229C21863CF000F24D45 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 389718681E36175E00CB02B4 /* LiveCameraVC.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LiveCameraVC.swift; sourceTree = ""; }; 3897186A1E36176B00CB02B4 /* FaceRecognitionVC.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FaceRecognitionVC.swift; sourceTree = ""; }; 3897186C1E3618B200CB02B4 /* FaceRecognizer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FaceRecognizer.swift; sourceTree = ""; }; 3897186E1E3618BC00CB02B4 /* FaceDetector.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FaceDetector.swift; sourceTree = ""; }; 389718751E361ECC00CB02B4 /* OCVVideoCamera.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVVideoCamera.h; sourceTree = ""; }; 389718761E361ECC00CB02B4 /* OCVVideoCamera.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = OCVVideoCamera.mm; sourceTree = ""; }; 389718791E361F0600CB02B4 /* OCVPhotoCamera.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVPhotoCamera.h; sourceTree = ""; }; 3897187A1E361F0600CB02B4 /* OCVPhotoCamera.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = OCVPhotoCamera.mm; sourceTree = ""; }; 3897187D1E3621D000CB02B4 /* OCVCamera.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVCamera.h; sourceTree = ""; }; 3897187E1E3621D000CB02B4 /* OCVCamera.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = OCVCamera.mm; sourceTree = ""; }; 389718811E36250800CB02B4 /* OCVCamera+Private.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "OCVCamera+Private.h"; sourceTree = ""; }; 389718831E36263A00CB02B4 /* OCVReferenceObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVReferenceObject.h; sourceTree = ""; }; 389718841E36263A00CB02B4 /* OCVReferenceObject.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVReferenceObject.m; sourceTree = ""; }; 389718881E362B8F00CB02B4 /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; }; 3897188A1E362B9700CB02B4 /* CoreMedia.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMedia.framework; path = System/Library/Frameworks/CoreMedia.framework; sourceTree = SDKROOT; }; 3897188C1E36439B00CB02B4 /* AssetsLibrary.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AssetsLibrary.framework; path = System/Library/Frameworks/AssetsLibrary.framework; sourceTree = SDKROOT; }; 3897188E1E3643A100CB02B4 /* Accelerate.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Accelerate.framework; path = System/Library/Frameworks/Accelerate.framework; sourceTree = SDKROOT; }; 389718901E3643A900CB02B4 /* CoreImage.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreImage.framework; path = System/Library/Frameworks/CoreImage.framework; sourceTree = SDKROOT; }; 389718921E3643B600CB02B4 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; 389871101E6F311400020CFB /* OCVFileStorage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVFileStorage.h; sourceTree = ""; }; 389871111E6F311400020CFB /* OCVFileStorage.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = OCVFileStorage.mm; sourceTree = ""; }; 389871141E6F315A00020CFB /* OCVFileNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVFileNode.h; sourceTree = ""; }; 389871151E6F315A00020CFB /* OCVFileNode.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = OCVFileNode.mm; sourceTree = ""; }; 389871181E6F32BE00020CFB /* OCVPersistence.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVPersistence.h; sourceTree = ""; }; 3898711A1E6F393F00020CFB /* OCVSerializable.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = OCVSerializable.h; sourceTree = ""; }; 3898711B1E6F3CB900020CFB /* OCVFileStorageFormatDescriptor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVFileStorageFormatDescriptor.h; sourceTree = ""; }; 3898711C1E6F3CB900020CFB /* OCVFileStorageFormatDescriptor.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVFileStorageFormatDescriptor.m; sourceTree = ""; }; 38B4D4B01E2AA01F008AAAB0 /* LegoCV.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = LegoCV.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 38B4D4B31E2AA01F008AAAB0 /* LegoCV.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LegoCV.h; sourceTree = ""; }; 38B4D4B41E2AA01F008AAAB0 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 38B4D4B91E2AA01F008AAAB0 /* LegoCVTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = LegoCVTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 38B4D4BE1E2AA01F008AAAB0 /* LegoCVTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LegoCVTests.swift; sourceTree = ""; }; 38B4D4C01E2AA01F008AAAB0 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 38B4D4D01E2AA110008AAAB0 /* FaceDetection.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = FaceDetection.app; sourceTree = BUILT_PRODUCTS_DIR; }; 38B4D4D21E2AA110008AAAB0 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 38B4D4D71E2AA110008AAAB0 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; 38B4D4D91E2AA111008AAAB0 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 38B4D4DC1E2AA111008AAAB0 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 38B4D4DE1E2AA111008AAAB0 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 38C0D90D1E7D6D2000246963 /* OCVImageTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVImageTypes.h; sourceTree = ""; }; 38C0D90F1E7D735F00246963 /* OCVGeneralizedHoughBallard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVGeneralizedHoughBallard.h; sourceTree = ""; }; 38C0D9101E7D735F00246963 /* OCVGeneralizedHoughBallard.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVGeneralizedHoughBallard.m; sourceTree = ""; }; 38C0D9131E7D73D100246963 /* OCVGeneralizedHough.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVGeneralizedHough.h; sourceTree = ""; }; 38C0D9141E7D73D100246963 /* OCVGeneralizedHough.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVGeneralizedHough.m; sourceTree = ""; }; 38C0D9171E7D747700246963 /* OCVArrayables.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVArrayables.h; sourceTree = ""; }; 38C0D9191E7D764200246963 /* OCVGeneralizedHoughGuil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVGeneralizedHoughGuil.h; sourceTree = ""; }; 38C0D91A1E7D764200246963 /* OCVGeneralizedHoughGuil.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVGeneralizedHoughGuil.m; sourceTree = ""; }; 38C0D91D1E7D771300246963 /* OCVContrastLimitedAdaptiveHistogramEqualization.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVContrastLimitedAdaptiveHistogramEqualization.h; sourceTree = ""; }; 38C0D91E1E7D771300246963 /* OCVContrastLimitedAdaptiveHistogramEqualization.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVContrastLimitedAdaptiveHistogramEqualization.m; sourceTree = ""; }; 38C0D9211E7D77B500246963 /* OCVSubdiv2D.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVSubdiv2D.h; sourceTree = ""; }; 38C0D9221E7D77B500246963 /* OCVSubdiv2D.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVSubdiv2D.m; sourceTree = ""; }; 38C0D9291E7D7EAC00246963 /* OCVLineSegmentDetector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVLineSegmentDetector.h; sourceTree = ""; }; 38C0D92A1E7D7EAC00246963 /* OCVLineSegmentDetector.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVLineSegmentDetector.m; sourceTree = ""; }; 38C0D92E1E7D8D8200246963 /* OCVBaseCascadeClassifier.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVBaseCascadeClassifier.h; sourceTree = ""; }; 38C0D92F1E7D8D8200246963 /* OCVBaseCascadeClassifier.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVBaseCascadeClassifier.m; sourceTree = ""; }; 38C0D9321E7D8EEC00246963 /* OCVCascadeClassifierResult.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVCascadeClassifierResult.h; sourceTree = ""; }; 38C0D9331E7D8EEC00246963 /* OCVCascadeClassifierResult.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVCascadeClassifierResult.m; sourceTree = ""; }; 38C0D9361E7D8FFC00246963 /* OCVCascadeClassifierOptions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVCascadeClassifierOptions.h; sourceTree = ""; }; 38C0D9371E7D8FFC00246963 /* OCVCascadeClassifierOptions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVCascadeClassifierOptions.m; sourceTree = ""; }; 38DB13EB1E366E0100822472 /* OCVVideo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVVideo.h; sourceTree = ""; }; 38DB13ED1E366FD500822472 /* OCVCore.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = OCVCore.h; sourceTree = ""; }; 38DDD2492181033B007B999D /* MatrixOperations.playground */ = {isa = PBXFileReference; lastKnownFileType = file.playground; path = MatrixOperations.playground; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.swift; }; 38E3EA201E6E305C00BCC097 /* OCVImageProcessing.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVImageProcessing.h; sourceTree = ""; }; 67E640401947EB92C031F274 /* OCVScalar.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVScalar.m; sourceTree = ""; }; 67E6414DA192C455EE9F6374 /* OCVInputArray.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVInputArray.h; sourceTree = ""; }; 67E6416E34EDDC521F465DDE /* OCVInputOutputArray.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVInputOutputArray.h; sourceTree = ""; }; 67E641C573728BB0D14DBD41 /* OCVInputArrayable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVInputArrayable.h; sourceTree = ""; }; 67E641E5AE5841744443558D /* OCVRect+Private.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = "OCVRect+Private.mm"; sourceTree = ""; }; 67E641FBE65950718BDBAC73 /* OCVMat.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = OCVMat.mm; sourceTree = ""; }; 67E6422A492670AF3DC695D8 /* OCVRect+Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "OCVRect+Private.h"; sourceTree = ""; }; 67E6425526F810208AA6B50E /* OCVOperation+Bitwise.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = "OCVOperation+Bitwise.mm"; sourceTree = ""; }; 67E642642A6333F29DD824AA /* OCVOutputArray.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVOutputArray.h; sourceTree = ""; }; 67E642DCCBA8EF4A5E2348FB /* OCVEdges.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVEdges.h; sourceTree = ""; }; 67E642E169EC045927288E82 /* OCVMatDataAllocator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVMatDataAllocator.h; sourceTree = ""; }; 67E6434323FF82193E9898C0 /* OCVOutputArray.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = OCVOutputArray.mm; sourceTree = ""; }; 67E6438675C6C73B77B08385 /* OCVOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVOperation.h; sourceTree = ""; }; 67E6438D1CE78C8D148D0DE8 /* OCVInputOutputArray+Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "OCVInputOutputArray+Private.h"; sourceTree = ""; }; 67E64391B0744DE769F98B1C /* OCVImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVImage.h; sourceTree = ""; }; 67E6439A810BAF9EB4F3D2EB /* OCVImageOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVImageOperation.h; sourceTree = ""; }; 67E643ED8E6AE25117DB09C6 /* OCVPoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVPoint.h; sourceTree = ""; }; 67E643FED267103AF823F80A /* OCVRandomGenerator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVRandomGenerator.h; sourceTree = ""; }; 67E6440F9430BD2FE92FB3E3 /* OCVAlgorithm.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVAlgorithm.m; sourceTree = ""; }; 67E644438826EEE78DA5FA73 /* OCVMinimumMaximum.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVMinimumMaximum.h; sourceTree = ""; }; 67E64459E0C63EA4D9627050 /* OCVTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVTypes.h; sourceTree = ""; }; 67E6446098E944BFA71C69A9 /* OCVAlgorithm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVAlgorithm.h; sourceTree = ""; }; 67E6448BB8EFC6BEBF51BA3C /* OCVSVD.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = OCVSVD.mm; sourceTree = ""; }; 67E644AF37D67E1163B102A4 /* OCVOperation+Transform.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = "OCVOperation+Transform.mm"; sourceTree = ""; }; 67E644F65A43C7F826E18FD8 /* OCVScalar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVScalar.h; sourceTree = ""; }; 67E64557F96063D5CEA27BD8 /* OCVFormatter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVFormatter.h; sourceTree = ""; }; 67E645697CBF982455006B11 /* OCVInterpolationType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVInterpolationType.h; sourceTree = ""; }; 67E645D09E183D239A916DD8 /* OCVOperation+Bitwise.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "OCVOperation+Bitwise.h"; sourceTree = ""; }; 67E6468D1AAEA71F119F0D71 /* OCVCascadeClassifier.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = OCVCascadeClassifier.mm; sourceTree = ""; }; 67E6472C6307D5835B1D6C2B /* OCVUMat.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVUMat.m; sourceTree = ""; }; 67E6475B436646A9C998F132 /* OCVOutputArrayable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVOutputArrayable.h; sourceTree = ""; }; 67E6477274FCBEE3CD09E268 /* OCVOutputArray+Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "OCVOutputArray+Private.h"; sourceTree = ""; }; 67E6479DFFDCE9D7CDD430C6 /* OCVPoint+Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "OCVPoint+Private.h"; sourceTree = ""; }; 67E648280FA290221C92DE01 /* OCVGeometry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVGeometry.h; sourceTree = ""; }; 67E64844505F01302289F309 /* OCVPoint+Private.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = "OCVPoint+Private.mm"; sourceTree = ""; }; 67E648666F32797BEEC3B6EA /* OCVComplex.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVComplex.h; sourceTree = ""; }; 67E648D9189DEE59AAC80A60 /* OCVTermCriteria.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVTermCriteria.m; sourceTree = ""; }; 67E648DFC66EAC59D4B600A3 /* OCVInputArray+Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "OCVInputArray+Private.h"; sourceTree = ""; }; 67E649395264F917D36DA5F8 /* OCVMat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVMat.h; sourceTree = ""; }; 67E649531633D7EAAED7D919 /* OCVImage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVImage.m; sourceTree = ""; }; 67E64961AAA53DCD08D796FF /* OCVRect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVRect.h; sourceTree = ""; }; 67E6496A76480256E3FB4A07 /* OCVRandomGenerator.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = OCVRandomGenerator.mm; sourceTree = ""; }; 67E6497C6E78CCC90BBD6C90 /* OCVGeometry+Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "OCVGeometry+Private.h"; sourceTree = ""; }; 67E6498671B0BA4198A082B7 /* OCVSVD.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVSVD.h; sourceTree = ""; }; 67E64998581748A53D9A7499 /* OCVRect.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVRect.m; sourceTree = ""; }; 67E64998F2833EED2BBE6864 /* OCVPCA.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = OCVPCA.mm; sourceTree = ""; }; 67E649DB3C2A73D13D8B1B5E /* OCVMatDataAllocator.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = OCVMatDataAllocator.mm; sourceTree = ""; }; 67E64A15D96D2EC6DAB44E24 /* OCVComplex.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVComplex.m; sourceTree = ""; }; 67E64A3342D4BBE76713F88D /* OCVSize.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVSize.h; sourceTree = ""; }; 67E64A456D91C276BAF01CDD /* OCVImageOperation.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = OCVImageOperation.mm; sourceTree = ""; }; 67E64A5773A5543773312E0B /* OCVLDA.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = OCVLDA.mm; sourceTree = ""; }; 67E64A6EE9A0528CA003C494 /* OCVVector.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVVector.m; sourceTree = ""; }; 67E64A96432DA475855E0594 /* OCVMatExpr.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = OCVMatExpr.mm; sourceTree = ""; }; 67E64B051241494FBEEEE346 /* OCVOperation.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = OCVOperation.mm; sourceTree = ""; }; 67E64B2FA4855E136039527B /* OCVVector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVVector.h; sourceTree = ""; }; 67E64B302058F4898CAE4A1C /* OCVInputOutputArray.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = OCVInputOutputArray.mm; sourceTree = ""; }; 67E64B35099EBE43C5F9A1C2 /* OCVMinimumMaximum.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVMinimumMaximum.m; sourceTree = ""; }; 67E64B59E8EBB4139E44EF18 /* OCVFormatter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVFormatter.m; sourceTree = ""; }; 67E64BC77E241D37FD032064 /* OCVOperation+Transform.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "OCVOperation+Transform.h"; sourceTree = ""; }; 67E64C22D6FBDAD91BACC516 /* OCVMatDataAllocator+Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "OCVMatDataAllocator+Private.h"; sourceTree = ""; }; 67E64C801A725FA1FE883678 /* OCVSize+Private.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = "OCVSize+Private.mm"; sourceTree = ""; }; 67E64CCA2E906D9DCCA4F777 /* OCVPCA.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVPCA.h; sourceTree = ""; }; 67E64CDCF01D111E40407448 /* OCVInputArray.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = OCVInputArray.mm; sourceTree = ""; }; 67E64D0DAEBA852A31A6211E /* OCVTermCriteria.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVTermCriteria.h; sourceTree = ""; }; 67E64D2A87A5D1389D935DF9 /* OCVColorConversionType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVColorConversionType.h; sourceTree = ""; }; 67E64D6AF68715735A06CFEA /* OCVCascadeClassifier.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVCascadeClassifier.h; sourceTree = ""; }; 67E64E8EDB850ADB26F646D7 /* OCVInputOutputArrayable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVInputOutputArrayable.h; sourceTree = ""; }; 67E64F8DA13AAEAD6BB69D81 /* OCVMatExpr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVMatExpr.h; sourceTree = ""; }; 67E64F947B816F412C783679 /* OCVUMat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVUMat.h; sourceTree = ""; }; 67E64FA8CD286E50EC4C0D24 /* OCVLDA.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVLDA.h; sourceTree = ""; }; 67E64FDA4612629A3D339C5D /* OCVSize+Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "OCVSize+Private.h"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ 388B228821863CF000F24D45 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( 38C5B0C222948817009D2D68 /* LegoCV.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; 388B229021863CF000F24D45 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( 388B229421863CF000F24D45 /* LegoSwiftCV.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; 38B4D4AC1E2AA01F008AAAB0 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( 3897188F1E3643A100CB02B4 /* Accelerate.framework in Frameworks */, 3897188D1E36439B00CB02B4 /* AssetsLibrary.framework in Frameworks */, 389718891E362B8F00CB02B4 /* AVFoundation.framework in Frameworks */, 386F2B821E3524D300320AEB /* CoreGraphics.framework in Frameworks */, 389718911E3643A900CB02B4 /* CoreImage.framework in Frameworks */, 3897188B1E362B9700CB02B4 /* CoreMedia.framework in Frameworks */, 386F2B831E3524D300320AEB /* CoreVideo.framework in Frameworks */, 389718931E3643B600CB02B4 /* QuartzCore.framework in Frameworks */, 386F2B841E3524D300320AEB /* UIKit.framework in Frameworks */, 381F15091E2AA1D50072F870 /* opencv2.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; 38B4D4B61E2AA01F008AAAB0 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( 38B4D4BA1E2AA01F008AAAB0 /* LegoCV.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; 38B4D4CD1E2AA110008AAAB0 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( 388B22A021863CF000F24D45 /* LegoSwiftCV.framework in Frameworks */, 3848D3371E3F973A00379F4F /* opencv2.framework in Frameworks */, 381F150B1E2AA22A0072F870 /* LegoCV.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ 381193C21E2D4BF600CF9D00 /* Wrapper */ = { isa = PBXGroup; children = ( 67E6430CF5BBDDCEDA0A11F2 /* Aruco */, 67E64CE47F8AE8A39C02F013 /* BgSegm */, 67E64E1D1A75A6F4A9339476 /* Core */, 67E64CE4EA82E6C734B1F52D /* Cuda */, 67E64EED9C49A3E9AB65659A /* Cvb */, 67E64980D14E883E7E22B208 /* CvEnum */, 67E6489A0A8802D9C1091CC8 /* Dnn */, 67E64C26DEAEA4C3FE73C23D /* Face */, 67E64B00E2A16E6D51A9E1D4 /* Features2D */, 67E64B3E655A26032DBA8E9F /* Flann */, 67E64FDEDEE3065E9A7F3BE8 /* Fuzzy */, 67E641E369D94E7F5342E82E /* Geodetic */, 67E6489EBEF439348E9D6BCB /* ImageProcessing */, 67E64F6071CE207DF3EA0488 /* LineDescriptor */, 67E64432A132FEAC78280869 /* ML */, 67E643EB7AB5324B5B5C31E6 /* Ocl */, 38C0D92D1E7D8CB500246963 /* ObjectDetection */, 67E64F8EEC3A8B31F642A947 /* OCR */, 67E64583A748B411350D5C74 /* Plot */, 67E64D13E7D9F06FEE0F28C2 /* Reflection */, 67E6447F53A9DEC7BE404618 /* Shape */, 67E64585903D7373E7F2F056 /* Stitching */, 67E645CBEE5F1F74150FA52E /* Structure */, 67E64C50AE8C38E24986224C /* Superres */, 67E64997F8B60292B0B7C8A3 /* Text */, 67E64A5532EB81F2AC3EDB1B /* Tiff */, 67E6478B610D2A7CF61C68FF /* Tracking */, 67E64629FAD58DDACC835B32 /* Utilities */, 67E645FD62A438314B2968ED /* UI */, 389718741E361EA800CB02B4 /* Video */, 67E640EEFD7D8239C61CDF92 /* VideoStab */, 67E6455F762AF81DFA3C1EE6 /* VideoSurveillance */, 67E64C67A5DA9CF04E6E96F7 /* XFeatures2D */, 67E649CA095FB911CF039A14 /* XImgproc */, 67E649E845FA0B83ABC44E56 /* XPhoto */, ); path = Wrapper; sourceTree = ""; }; 388B228221863C9600F24D45 /* LegoSwiftCV */ = { isa = PBXGroup; children = ( 388B228321863CA600F24D45 /* Core */, ); path = LegoSwiftCV; sourceTree = ""; }; 388B228321863CA600F24D45 /* Core */ = { isa = PBXGroup; children = ( 388B228421863CB500F24D45 /* Matrix.swift */, ); path = Core; sourceTree = ""; }; 388B228C21863CF000F24D45 /* LegoSwiftCV */ = { isa = PBXGroup; children = ( 388B228D21863CF000F24D45 /* LegoSwiftCV.h */, 388B228E21863CF000F24D45 /* Info.plist */, ); path = LegoSwiftCV; sourceTree = ""; }; 388B229921863CF000F24D45 /* LegoSwiftCVTests */ = { isa = PBXGroup; children = ( 388B229A21863CF000F24D45 /* LegoSwiftCVTests.swift */, 388B229C21863CF000F24D45 /* Info.plist */, ); path = LegoSwiftCVTests; sourceTree = ""; }; 389718661E36172200CB02B4 /* Recognition */ = { isa = PBXGroup; children = ( 3897186E1E3618BC00CB02B4 /* FaceDetector.swift */, 3897186C1E3618B200CB02B4 /* FaceRecognizer.swift */, ); path = Recognition; sourceTree = ""; }; 389718671E36173100CB02B4 /* View Controllers */ = { isa = PBXGroup; children = ( 3897186A1E36176B00CB02B4 /* FaceRecognitionVC.swift */, 389718681E36175E00CB02B4 /* LiveCameraVC.swift */, ); path = "View Controllers"; sourceTree = ""; }; 389718741E361EA800CB02B4 /* Video */ = { isa = PBXGroup; children = ( 38DB13EB1E366E0100822472 /* OCVVideo.h */, 389718811E36250800CB02B4 /* OCVCamera+Private.h */, 3897187D1E3621D000CB02B4 /* OCVCamera.h */, 3897187E1E3621D000CB02B4 /* OCVCamera.mm */, 389718791E361F0600CB02B4 /* OCVPhotoCamera.h */, 3897187A1E361F0600CB02B4 /* OCVPhotoCamera.mm */, 389718751E361ECC00CB02B4 /* OCVVideoCamera.h */, 389718761E361ECC00CB02B4 /* OCVVideoCamera.mm */, ); path = Video; sourceTree = ""; }; 3898710F1E6F30F700020CFB /* Persistence */ = { isa = PBXGroup; children = ( 389871181E6F32BE00020CFB /* OCVPersistence.h */, 389871101E6F311400020CFB /* OCVFileStorage.h */, 389871111E6F311400020CFB /* OCVFileStorage.mm */, 3898711B1E6F3CB900020CFB /* OCVFileStorageFormatDescriptor.h */, 3898711C1E6F3CB900020CFB /* OCVFileStorageFormatDescriptor.m */, 389871141E6F315A00020CFB /* OCVFileNode.h */, 389871151E6F315A00020CFB /* OCVFileNode.mm */, 3898711A1E6F393F00020CFB /* OCVSerializable.h */, ); path = Persistence; sourceTree = ""; }; 38B4D4A61E2AA01F008AAAB0 = { isa = PBXGroup; children = ( 388B228221863C9600F24D45 /* LegoSwiftCV */, 38B4D4B21E2AA01F008AAAB0 /* LegoCV */, 38B4D4BD1E2AA01F008AAAB0 /* LegoCVTests */, 38B4D4D11E2AA110008AAAB0 /* FaceDetection */, 38DDD2482181022F007B999D /* Playgrounds */, 388B228C21863CF000F24D45 /* LegoSwiftCV */, 388B229921863CF000F24D45 /* LegoSwiftCVTests */, 38B4D4B11E2AA01F008AAAB0 /* Products */, 38B4D4CA1E2AA090008AAAB0 /* Frameworks */, ); sourceTree = ""; }; 38B4D4B11E2AA01F008AAAB0 /* Products */ = { isa = PBXGroup; children = ( 38B4D4B01E2AA01F008AAAB0 /* LegoCV.framework */, 38B4D4B91E2AA01F008AAAB0 /* LegoCVTests.xctest */, 38B4D4D01E2AA110008AAAB0 /* FaceDetection.app */, 388B228B21863CF000F24D45 /* LegoSwiftCV.framework */, 388B229321863CF000F24D45 /* LegoSwiftCVTests.xctest */, ); name = Products; sourceTree = ""; }; 38B4D4B21E2AA01F008AAAB0 /* LegoCV */ = { isa = PBXGroup; children = ( 381193C21E2D4BF600CF9D00 /* Wrapper */, 38B4D4B31E2AA01F008AAAB0 /* LegoCV.h */, 38B4D4B41E2AA01F008AAAB0 /* Info.plist */, ); path = LegoCV; sourceTree = ""; }; 38B4D4BD1E2AA01F008AAAB0 /* LegoCVTests */ = { isa = PBXGroup; children = ( 38B4D4BE1E2AA01F008AAAB0 /* LegoCVTests.swift */, 38B4D4C01E2AA01F008AAAB0 /* Info.plist */, ); path = LegoCVTests; sourceTree = ""; }; 38B4D4CA1E2AA090008AAAB0 /* Frameworks */ = { isa = PBXGroup; children = ( 389718921E3643B600CB02B4 /* QuartzCore.framework */, 389718901E3643A900CB02B4 /* CoreImage.framework */, 3897188E1E3643A100CB02B4 /* Accelerate.framework */, 3897188C1E36439B00CB02B4 /* AssetsLibrary.framework */, 3897188A1E362B9700CB02B4 /* CoreMedia.framework */, 389718881E362B8F00CB02B4 /* AVFoundation.framework */, 386F2B7F1E3524D300320AEB /* CoreGraphics.framework */, 386F2B801E3524D300320AEB /* CoreVideo.framework */, 386F2B811E3524D300320AEB /* UIKit.framework */, 381F15081E2AA1D50072F870 /* opencv2.framework */, ); name = Frameworks; sourceTree = ""; }; 38B4D4D11E2AA110008AAAB0 /* FaceDetection */ = { isa = PBXGroup; children = ( 389718661E36172200CB02B4 /* Recognition */, 389718671E36173100CB02B4 /* View Controllers */, 38B4D4D21E2AA110008AAAB0 /* AppDelegate.swift */, 38B4D4D61E2AA110008AAAB0 /* Main.storyboard */, 38B4D4D91E2AA111008AAAB0 /* Assets.xcassets */, 38B4D4DB1E2AA111008AAAB0 /* LaunchScreen.storyboard */, 38B4D4DE1E2AA111008AAAB0 /* Info.plist */, ); path = FaceDetection; sourceTree = ""; }; 38C0D92D1E7D8CB500246963 /* ObjectDetection */ = { isa = PBXGroup; children = ( 38C0D92E1E7D8D8200246963 /* OCVBaseCascadeClassifier.h */, 38C0D92F1E7D8D8200246963 /* OCVBaseCascadeClassifier.m */, 67E64D6AF68715735A06CFEA /* OCVCascadeClassifier.h */, 67E6468D1AAEA71F119F0D71 /* OCVCascadeClassifier.mm */, 38C0D9321E7D8EEC00246963 /* OCVCascadeClassifierResult.h */, 38C0D9331E7D8EEC00246963 /* OCVCascadeClassifierResult.m */, 38C0D9361E7D8FFC00246963 /* OCVCascadeClassifierOptions.h */, 38C0D9371E7D8FFC00246963 /* OCVCascadeClassifierOptions.m */, ); path = ObjectDetection; sourceTree = ""; }; 38DDD2482181022F007B999D /* Playgrounds */ = { isa = PBXGroup; children = ( 38DDD2492181033B007B999D /* MatrixOperations.playground */, ); path = Playgrounds; sourceTree = ""; }; 67E640EEFD7D8239C61CDF92 /* VideoStab */ = { isa = PBXGroup; children = ( 383BC5621E30009D002EA7A1 /* OCVVideoCaptureFrameSource.h */, 383BC5631E30009D002EA7A1 /* OCVVideoCaptureFrameSource.m */, 383BC5661E3000A4002EA7A1 /* OCVVideoFrameSource.h */, 383BC5671E3000A4002EA7A1 /* OCVVideoFrameSource.m */, 383BC56A1E3000AD002EA7A1 /* OCVGaussianMotionFilter.h */, 383BC56B1E3000AD002EA7A1 /* OCVGaussianMotionFilter.m */, 383BC56E1E3000B6002EA7A1 /* OCVOnePassStabilizer.h */, 383BC56F1E3000B6002EA7A1 /* OCVOnePassStabilizer.m */, 383BC5721E3000BE002EA7A1 /* OCVTwoPassStabilizer.h */, 383BC5731E3000BE002EA7A1 /* OCVTwoPassStabilizer.m */, ); path = VideoStab; sourceTree = ""; }; 67E641E369D94E7F5342E82E /* Geodetic */ = { isa = PBXGroup; children = ( 383BC4521E2FFC18002EA7A1 /* OCVGeodeticCoordinate.h */, 383BC4531E2FFC18002EA7A1 /* OCVGeodeticCoordinate.m */, ); path = Geodetic; sourceTree = ""; }; 67E6430CF5BBDDCEDA0A11F2 /* Aruco */ = { isa = PBXGroup; children = ( 383BC4221E2FFB32002EA7A1 /* OCVCharucoBoard.h */, 383BC4231E2FFB32002EA7A1 /* OCVCharucoBoard.m */, ); path = Aruco; sourceTree = ""; }; 67E6435957E1035A51337C83 /* Operations */ = { isa = PBXGroup; children = ( 67E6438675C6C73B77B08385 /* OCVOperation.h */, 67E64B051241494FBEEEE346 /* OCVOperation.mm */, 67E645D09E183D239A916DD8 /* OCVOperation+Bitwise.h */, 67E6425526F810208AA6B50E /* OCVOperation+Bitwise.mm */, 67E64BC77E241D37FD032064 /* OCVOperation+Transform.h */, 67E644AF37D67E1163B102A4 /* OCVOperation+Transform.mm */, 67E644438826EEE78DA5FA73 /* OCVMinimumMaximum.h */, 67E64B35099EBE43C5F9A1C2 /* OCVMinimumMaximum.m */, 67E64D0DAEBA852A31A6211E /* OCVTermCriteria.h */, 67E648D9189DEE59AAC80A60 /* OCVTermCriteria.m */, ); path = Operations; sourceTree = ""; }; 67E643EB7AB5324B5B5C31E6 /* Ocl */ = { isa = PBXGroup; children = ( 383BC4A21E2FFDDA002EA7A1 /* OCVDevice.h */, 383BC4A31E2FFDDA002EA7A1 /* OCVDevice.m */, 383BC4A61E2FFDE5002EA7A1 /* OCVQueue.h */, 383BC4A71E2FFDE5002EA7A1 /* OCVQueue.m */, 383BC4AA1E2FFDEC002EA7A1 /* OCVKernel.h */, 383BC4AB1E2FFDEC002EA7A1 /* OCVKernel.m */, 383BC4AE1E2FFDF6002EA7A1 /* OCVImage2D.h */, 383BC4AF1E2FFDF6002EA7A1 /* OCVImage2D.m */, 383BC4B21E2FFE06002EA7A1 /* OCVKernelConfiguration.h */, 383BC4B31E2FFE06002EA7A1 /* OCVKernelConfiguration.m */, 383BC4B61E2FFE13002EA7A1 /* OCVPlatformInfo.h */, 383BC4B71E2FFE13002EA7A1 /* OCVPlatformInfo.m */, 383BC4BA1E2FFE1C002EA7A1 /* OCVProgramSource.h */, 383BC4BB1E2FFE1C002EA7A1 /* OCVProgramSource.m */, ); path = Ocl; sourceTree = ""; }; 67E64432A132FEAC78280869 /* ML */ = { isa = PBXGroup; children = ( 67E6491ED1C71A0C715D8719 /* Enum */, 67E64A1F522EAB057EB23322 /* Structure */, 383BC45E1E2FFC6F002EA7A1 /* OCVBoost.h */, 383BC45F1E2FFC6F002EA7A1 /* OCVBoost.m */, 383BC4621E2FFC7B002EA7A1 /* OCVANNMLP.h */, 383BC4631E2FFC7B002EA7A1 /* OCVANNMLP.m */, 383BC4661E2FFC8F002EA7A1 /* OCVDTree.h */, 383BC4671E2FFC8F002EA7A1 /* OCVDTree.m */, 383BC46A1E2FFCA2002EA7A1 /* OCVEM.h */, 383BC46B1E2FFCA2002EA7A1 /* OCVEM.m */, 383BC46E1E2FFCAC002EA7A1 /* OCVKNearest.h */, 383BC46F1E2FFCAC002EA7A1 /* OCVKNearest.m */, 383BC4721E2FFCB5002EA7A1 /* OCVLogisticRegression.h */, 383BC4731E2FFCB5002EA7A1 /* OCVLogisticRegression.m */, 383BC4761E2FFCC9002EA7A1 /* OCVNormalBayesClassifier.h */, 383BC4771E2FFCC9002EA7A1 /* OCVNormalBayesClassifier.m */, 383BC47A1E2FFCD3002EA7A1 /* OCVRTree.h */, 383BC47B1E2FFCD3002EA7A1 /* OCVRTree.m */, 383BC47E1E2FFCE1002EA7A1 /* OCVStatModelExtensions.h */, 383BC47F1E2FFCE1002EA7A1 /* OCVStatModelExtensions.m */, 383BC4821E2FFCEA002EA7A1 /* OCVSVM.h */, 383BC4831E2FFCEA002EA7A1 /* OCVSVM.m */, 383BC4861E2FFCF2002EA7A1 /* OCVTrainData.h */, 383BC4871E2FFCF2002EA7A1 /* OCVTrainData.m */, ); path = ML; sourceTree = ""; }; 67E6447F53A9DEC7BE404618 /* Shape */ = { isa = PBXGroup; children = ( 383BC4D61E2FFEC0002EA7A1 /* OCVAffineTransformer.h */, 383BC4D71E2FFEC0002EA7A1 /* OCVAffineTransformer.m */, 383BC4DA1E2FFED0002EA7A1 /* OCVChiHistogramCostExtractor.h */, 383BC4DB1E2FFED0002EA7A1 /* OCVChiHistogramCostExtractor.m */, 383BC4DE1E2FFEDE002EA7A1 /* OCVEMDHistogramCostExtractor.h */, 383BC4DF1E2FFEDE002EA7A1 /* OCVEMDHistogramCostExtractor.m */, 383BC4E21E2FFEEC002EA7A1 /* OCVEMDL1HistogramCostExtractor.h */, 383BC4E31E2FFEEC002EA7A1 /* OCVEMDL1HistogramCostExtractor.m */, 383BC4E61E2FFEF8002EA7A1 /* OCVHausdorffDistanceExtractor.h */, 383BC4E71E2FFEF8002EA7A1 /* OCVHausdorffDistanceExtractor.m */, 383BC4EA1E2FFF08002EA7A1 /* OCVHistogramCostExtractor.h */, 383BC4EB1E2FFF08002EA7A1 /* OCVHistogramCostExtractor.m */, 383BC4EE1E2FFF14002EA7A1 /* OCVNormHistogramCostExtractor.h */, 383BC4EF1E2FFF14002EA7A1 /* OCVNormHistogramCostExtractor.m */, 383BC4F21E2FFF23002EA7A1 /* OCVShapeContextDistanceExtractor.h */, 383BC4F31E2FFF23002EA7A1 /* OCVShapeContextDistanceExtractor.m */, 383BC4F61E2FFF39002EA7A1 /* OCVShapeDistanceExtractor.h */, 383BC4F71E2FFF39002EA7A1 /* OCVShapeDistanceExtractor.m */, 383BC4FA1E2FFF44002EA7A1 /* OCVThinPlateSplineShapeTransformer.h */, 383BC4FB1E2FFF44002EA7A1 /* OCVThinPlateSplineShapeTransformer.m */, ); path = Shape; sourceTree = ""; }; 67E6455F762AF81DFA3C1EE6 /* VideoSurveillance */ = { isa = PBXGroup; children = ( 383BC5761E3000D0002EA7A1 /* OCVBackgroundSubtractor.h */, 383BC5771E3000D0002EA7A1 /* OCVBackgroundSubtractor.m */, 383BC57A1E3000DA002EA7A1 /* OCVBackgroundSubtractorKNN.h */, 383BC57B1E3000DA002EA7A1 /* OCVBackgroundSubtractorKNN.m */, 383BC57E1E3000E3002EA7A1 /* OCVBackgroundSubtractorMOG2.h */, 383BC57F1E3000E3002EA7A1 /* OCVBackgroundSubtractorMOG2.m */, ); path = VideoSurveillance; sourceTree = ""; }; 67E64583A748B411350D5C74 /* Plot */ = { isa = PBXGroup; children = ( 383BC4CE1E2FFE90002EA7A1 /* OCVPlot.h */, 383BC4CF1E2FFE90002EA7A1 /* OCVPlot.m */, ); path = Plot; sourceTree = ""; }; 67E64585903D7373E7F2F056 /* Stitching */ = { isa = PBXGroup; children = ( 383BC4FE1E2FFF5A002EA7A1 /* OCVFeaturesFinder.h */, 383BC4FF1E2FFF5A002EA7A1 /* OCVFeaturesFinder.m */, 383BC5021E2FFF66002EA7A1 /* OCVCompressedRectilinearWarper.h */, 383BC5031E2FFF66002EA7A1 /* OCVCompressedRectilinearWarper.m */, 383BC5061E2FFF6F002EA7A1 /* OCVFisheyeWarper.h */, 383BC5071E2FFF6F002EA7A1 /* OCVFisheyeWarper.m */, 383BC50A1E2FFF77002EA7A1 /* OCVMercatorWarper.h */, 383BC50B1E2FFF77002EA7A1 /* OCVMercatorWarper.m */, 383BC50E1E2FFF82002EA7A1 /* OCVOrbFeaturesFinder.h */, 383BC50F1E2FFF82002EA7A1 /* OCVOrbFeaturesFinder.m */, 383BC5121E2FFF8F002EA7A1 /* OCVPaniniPortraitWarper.h */, 383BC5131E2FFF8F002EA7A1 /* OCVPaniniPortraitWarper.m */, 383BC5161E2FFF99002EA7A1 /* OCVPaniniWarper.h */, 383BC5171E2FFF99002EA7A1 /* OCVPaniniWarper.m */, 383BC51A1E2FFFA0002EA7A1 /* OCVPlaneWarper.h */, 383BC51B1E2FFFA0002EA7A1 /* OCVPlaneWarper.m */, 383BC51E1E2FFFAA002EA7A1 /* OCVSphericalWarper.h */, 383BC51F1E2FFFAA002EA7A1 /* OCVSphericalWarper.m */, 383BC5221E2FFFB5002EA7A1 /* OCVStereographicWarper.h */, 383BC5231E2FFFB5002EA7A1 /* OCVStereographicWarper.m */, 383BC5261E2FFFBD002EA7A1 /* OCVSticher.h */, 383BC5271E2FFFBD002EA7A1 /* OCVSticher.m */, 383BC52A1E2FFFCE002EA7A1 /* OCVTransverseMercatorWarper.h */, 383BC52B1E2FFFCE002EA7A1 /* OCVTransverseMercatorWarper.m */, 383BC52E1E2FFFD9002EA7A1 /* OCVWarperCreator.h */, 383BC52F1E2FFFD9002EA7A1 /* OCVWarperCreator.m */, ); path = Stitching; sourceTree = ""; }; 67E645CBEE5F1F74150FA52E /* Structure */ = { isa = PBXGroup; children = ( 383BC5321E2FFFF6002EA7A1 /* OCVRgb.h */, 383BC5331E2FFFF6002EA7A1 /* OCVRgb.m */, 383BC5361E2FFFFC002EA7A1 /* OCVRgba.h */, 383BC5371E2FFFFC002EA7A1 /* OCVRgba.m */, ); path = Structure; sourceTree = ""; }; 67E645FD62A438314B2968ED /* UI */ = { isa = PBXGroup; children = ( 383BC5821E3000F7002EA7A1 /* OCVHistogramBox.h */, 383BC5831E3000F7002EA7A1 /* OCVHistogramBox.m */, 383BC5861E3000FF002EA7A1 /* OCVHistogramViewer.h */, 383BC5871E3000FF002EA7A1 /* OCVHistogramViewer.m */, ); path = UI; sourceTree = ""; }; 67E64629FAD58DDACC835B32 /* Utilities */ = { isa = PBXGroup; children = ( 383BC40E1E2FF974002EA7A1 /* OCVObject.h */, 383BC40F1E2FF974002EA7A1 /* OCVObject.m */, 386F2B851E352A4800320AEB /* OCVPointerObject.h */, 386F2B861E352A4800320AEB /* OCVPointerObject.m */, 389718831E36263A00CB02B4 /* OCVReferenceObject.h */, 389718841E36263A00CB02B4 /* OCVReferenceObject.m */, ); path = Utilities; sourceTree = ""; }; 67E64745979703A472DBFFBC /* Private */ = { isa = PBXGroup; children = ( 67E6497C6E78CCC90BBD6C90 /* OCVGeometry+Private.h */, 67E648DFC66EAC59D4B600A3 /* OCVInputArray+Private.h */, 67E6438D1CE78C8D148D0DE8 /* OCVInputOutputArray+Private.h */, 67E64C22D6FBDAD91BACC516 /* OCVMatDataAllocator+Private.h */, 67E6477274FCBEE3CD09E268 /* OCVOutputArray+Private.h */, 67E6479DFFDCE9D7CDD430C6 /* OCVPoint+Private.h */, 67E64844505F01302289F309 /* OCVPoint+Private.mm */, 67E641E5AE5841744443558D /* OCVRect+Private.mm */, 67E6422A492670AF3DC695D8 /* OCVRect+Private.h */, 67E64C801A725FA1FE883678 /* OCVSize+Private.mm */, 67E64FDA4612629A3D339C5D /* OCVSize+Private.h */, ); path = Private; sourceTree = ""; }; 67E6478B610D2A7CF61C68FF /* Tracking */ = { isa = PBXGroup; children = ( 383BC55A1E300078002EA7A1 /* OCVMultiTracker.h */, 383BC55B1E300078002EA7A1 /* OCVMultiTracker.m */, 383BC55E1E30007F002EA7A1 /* OCVTracker.h */, 383BC55F1E30007F002EA7A1 /* OCVTracker.m */, ); path = Tracking; sourceTree = ""; }; 67E647D357B7BD627D7D29B4 /* Mat */ = { isa = PBXGroup; children = ( 67E642E169EC045927288E82 /* OCVMatDataAllocator.h */, 67E649DB3C2A73D13D8B1B5E /* OCVMatDataAllocator.mm */, 67E64F8DA13AAEAD6BB69D81 /* OCVMatExpr.h */, 67E64A96432DA475855E0594 /* OCVMatExpr.mm */, 67E649395264F917D36DA5F8 /* OCVMat.h */, 67E641FBE65950718BDBAC73 /* OCVMat.mm */, 67E64F947B816F412C783679 /* OCVUMat.h */, 67E6472C6307D5835B1D6C2B /* OCVUMat.m */, ); path = Mat; sourceTree = ""; }; 67E6489A0A8802D9C1091CC8 /* Dnn */ = { isa = PBXGroup; children = ( 383BC4321E2FFB89002EA7A1 /* OCVImporter.h */, 383BC4331E2FFB89002EA7A1 /* OCVImporter.m */, 383BC42E1E2FFB78002EA7A1 /* OCVNet.h */, 383BC42F1E2FFB78002EA7A1 /* OCVNet.m */, ); path = Dnn; sourceTree = ""; }; 67E6489EBEF439348E9D6BCB /* ImageProcessing */ = { isa = PBXGroup; children = ( 38E3EA201E6E305C00BCC097 /* OCVImageProcessing.h */, 67E64D2A87A5D1389D935DF9 /* OCVColorConversionType.h */, 67E645697CBF982455006B11 /* OCVInterpolationType.h */, 67E6439A810BAF9EB4F3D2EB /* OCVImageOperation.h */, 67E64A456D91C276BAF01CDD /* OCVImageOperation.mm */, 67E64391B0744DE769F98B1C /* OCVImage.h */, 67E649531633D7EAAED7D919 /* OCVImage.m */, 38C0D90D1E7D6D2000246963 /* OCVImageTypes.h */, 38C0D90F1E7D735F00246963 /* OCVGeneralizedHoughBallard.h */, 38C0D9101E7D735F00246963 /* OCVGeneralizedHoughBallard.m */, 38C0D9131E7D73D100246963 /* OCVGeneralizedHough.h */, 38C0D9141E7D73D100246963 /* OCVGeneralizedHough.m */, 38C0D9191E7D764200246963 /* OCVGeneralizedHoughGuil.h */, 38C0D91A1E7D764200246963 /* OCVGeneralizedHoughGuil.m */, 38C0D91D1E7D771300246963 /* OCVContrastLimitedAdaptiveHistogramEqualization.h */, 38C0D91E1E7D771300246963 /* OCVContrastLimitedAdaptiveHistogramEqualization.m */, 38C0D9211E7D77B500246963 /* OCVSubdiv2D.h */, 38C0D9221E7D77B500246963 /* OCVSubdiv2D.m */, 38C0D9291E7D7EAC00246963 /* OCVLineSegmentDetector.h */, 38C0D92A1E7D7EAC00246963 /* OCVLineSegmentDetector.m */, ); path = ImageProcessing; sourceTree = ""; }; 67E648B3CACE63D40EBA303E /* Base */ = { isa = PBXGroup; children = ( 38C0D9171E7D747700246963 /* OCVArrayables.h */, 67E648666F32797BEEC3B6EA /* OCVComplex.h */, 67E64A15D96D2EC6DAB44E24 /* OCVComplex.m */, 67E642DCCBA8EF4A5E2348FB /* OCVEdges.h */, 67E644F65A43C7F826E18FD8 /* OCVScalar.h */, 67E64961AAA53DCD08D796FF /* OCVRect.h */, 67E64998581748A53D9A7499 /* OCVRect.m */, 67E640401947EB92C031F274 /* OCVScalar.m */, 67E64A3342D4BBE76713F88D /* OCVSize.h */, 67E643ED8E6AE25117DB09C6 /* OCVPoint.h */, 67E64B2FA4855E136039527B /* OCVVector.h */, 67E64A6EE9A0528CA003C494 /* OCVVector.m */, 67E6446098E944BFA71C69A9 /* OCVAlgorithm.h */, 67E6440F9430BD2FE92FB3E3 /* OCVAlgorithm.m */, 67E648280FA290221C92DE01 /* OCVGeometry.h */, 67E641C573728BB0D14DBD41 /* OCVInputArrayable.h */, 67E6414DA192C455EE9F6374 /* OCVInputArray.h */, 67E64CDCF01D111E40407448 /* OCVInputArray.mm */, 67E64E8EDB850ADB26F646D7 /* OCVInputOutputArrayable.h */, 67E6416E34EDDC521F465DDE /* OCVInputOutputArray.h */, 67E64B302058F4898CAE4A1C /* OCVInputOutputArray.mm */, 67E642642A6333F29DD824AA /* OCVOutputArray.h */, 67E6434323FF82193E9898C0 /* OCVOutputArray.mm */, 67E6475B436646A9C998F132 /* OCVOutputArrayable.h */, 67E64557F96063D5CEA27BD8 /* OCVFormatter.h */, 67E64B59E8EBB4139E44EF18 /* OCVFormatter.m */, 67E64459E0C63EA4D9627050 /* OCVTypes.h */, ); path = Base; sourceTree = ""; }; 67E6491ED1C71A0C715D8719 /* Enum */ = { isa = PBXGroup; children = ( 383BC48A1E2FFD0A002EA7A1 /* OCVBoostType.h */, 383BC48B1E2FFD0A002EA7A1 /* OCVBoostType.m */, 383BC48E1E2FFD13002EA7A1 /* OCVVarType.h */, 383BC48F1E2FFD13002EA7A1 /* OCVVarType.m */, ); path = Enum; sourceTree = ""; }; 67E64980D14E883E7E22B208 /* CvEnum */ = { isa = PBXGroup; children = ( 383BC41E1E2FFB1D002EA7A1 /* OCVStorageOperationType.h */, 383BC41F1E2FFB1D002EA7A1 /* OCVStorageOperationType.m */, ); path = CvEnum; sourceTree = ""; }; 67E64997F8B60292B0B7C8A3 /* Text */ = { isa = PBXGroup; children = ( 383BC5421E300033002EA7A1 /* OCVERFilter.h */, 383BC5431E300033002EA7A1 /* OCVERFilter.m */, 383BC5461E30003C002EA7A1 /* OCVERFilterNM1.h */, 383BC5471E30003C002EA7A1 /* OCVERFilterNM1.m */, 383BC54A1E300044002EA7A1 /* OCVERFilterNM2.h */, 383BC54B1E300044002EA7A1 /* OCVERFilterNM2.m */, 383BC54E1E30004F002EA7A1 /* OCVERStat.h */, 383BC54F1E30004F002EA7A1 /* OCVERStat.m */, ); path = Text; sourceTree = ""; }; 67E649CA095FB911CF039A14 /* XImgproc */ = { isa = PBXGroup; children = ( 383BC5B21E30017C002EA7A1 /* OCVDTFilter.h */, 383BC5B31E30017C002EA7A1 /* OCVDTFilter.m */, ); path = XImgproc; sourceTree = ""; }; 67E649E845FA0B83ABC44E56 /* XPhoto */ = { isa = PBXGroup; children = ( 383BC5B61E30018A002EA7A1 /* OCVXPhoto.h */, 383BC5B71E30018A002EA7A1 /* OCVXPhoto.m */, ); path = XPhoto; sourceTree = ""; }; 67E64A1F522EAB057EB23322 /* Structure */ = { isa = PBXGroup; children = ( 383BC4921E2FFD2C002EA7A1 /* OCVMCvDTreeNode.h */, 383BC4931E2FFD2C002EA7A1 /* OCVMCvDTreeNode.m */, 383BC4961E2FFD39002EA7A1 /* OCVMCvDTreeSplit.h */, 383BC4971E2FFD39002EA7A1 /* OCVMCvDTreeSplit.m */, 383BC49A1E2FFD4B002EA7A1 /* OCVMCvDTreeSplitMOrder.h */, 383BC49B1E2FFD4B002EA7A1 /* OCVMCvDTreeSplitMOrder.m */, 383BC49E1E2FFD56002EA7A1 /* OCVMCvParamGrid.h */, 383BC49F1E2FFD56002EA7A1 /* OCVMCvParamGrid.m */, ); path = Structure; sourceTree = ""; }; 67E64A5532EB81F2AC3EDB1B /* Tiff */ = { isa = PBXGroup; children = ( 383BC5521E300062002EA7A1 /* OCVTiffWriter.h */, 383BC5531E300062002EA7A1 /* OCVTiffWriter.m */, 383BC5561E30006B002EA7A1 /* OCVTileTiffWriter.h */, 383BC5571E30006B002EA7A1 /* OCVTileTiffWriter.m */, ); path = Tiff; sourceTree = ""; }; 67E64A56382886DE40147DB2 /* Algorithms */ = { isa = PBXGroup; children = ( 67E64CCA2E906D9DCCA4F777 /* OCVPCA.h */, 67E64998F2833EED2BBE6864 /* OCVPCA.mm */, 67E6498671B0BA4198A082B7 /* OCVSVD.h */, 67E6448BB8EFC6BEBF51BA3C /* OCVSVD.mm */, 67E64FA8CD286E50EC4C0D24 /* OCVLDA.h */, 67E64A5773A5543773312E0B /* OCVLDA.mm */, 67E643FED267103AF823F80A /* OCVRandomGenerator.h */, 67E6496A76480256E3FB4A07 /* OCVRandomGenerator.mm */, ); path = Algorithms; sourceTree = ""; }; 67E64B00E2A16E6D51A9E1D4 /* Features2D */ = { isa = PBXGroup; children = ( 383BC4461E2FFBD5002EA7A1 /* OCVFeature2D.h */, 383BC4471E2FFBD5002EA7A1 /* OCVFeature2D.m */, ); path = Features2D; sourceTree = ""; }; 67E64B3E655A26032DBA8E9F /* Flann */ = { isa = PBXGroup; children = ( 383BC44A1E2FFBE4002EA7A1 /* OCVIndex.h */, 383BC44B1E2FFBE4002EA7A1 /* OCVIndex.m */, ); path = Flann; sourceTree = ""; }; 67E64C26DEAEA4C3FE73C23D /* Face */ = { isa = PBXGroup; children = ( 383BC4361E2FFB9A002EA7A1 /* OCVEigenFaceRecognizer.h */, 383BC4371E2FFB9A002EA7A1 /* OCVEigenFaceRecognizer.m */, 383BC43A1E2FFBA6002EA7A1 /* OCVFaceRecognizer.h */, 383BC43B1E2FFBA6002EA7A1 /* OCVFaceRecognizer.m */, 383BC43E1E2FFBB3002EA7A1 /* OCVFisherFaceRecognizer.h */, 383BC43F1E2FFBB3002EA7A1 /* OCVFisherFaceRecognizer.m */, 383BC4421E2FFBBF002EA7A1 /* OCVLBPHFaceRecognizer.h */, 383BC4431E2FFBBF002EA7A1 /* OCVLBPHFaceRecognizer.m */, ); path = Face; sourceTree = ""; }; 67E64C50AE8C38E24986224C /* Superres */ = { isa = PBXGroup; children = ( 383BC53A1E300015002EA7A1 /* OCVFrameSource.h */, 383BC53B1E300015002EA7A1 /* OCVFrameSource.m */, 383BC53E1E30001E002EA7A1 /* OCVSuperResolution.h */, 383BC53F1E30001E002EA7A1 /* OCVSuperResolution.m */, ); path = Superres; sourceTree = ""; }; 67E64C67A5DA9CF04E6E96F7 /* XFeatures2D */ = { isa = PBXGroup; children = ( 383BC58E1E300134002EA7A1 /* OCVBriefDescriptorExtractor.h */, 383BC58F1E300134002EA7A1 /* OCVBriefDescriptorExtractor.m */, 383BC5921E30013C002EA7A1 /* OCVCudaSURF.h */, 383BC5931E30013C002EA7A1 /* OCVCudaSURF.m */, 383BC5961E300142002EA7A1 /* OCVDAISY.h */, 383BC5971E300142002EA7A1 /* OCVDAISY.m */, 383BC59A1E300149002EA7A1 /* OCVFreak.h */, 383BC59B1E300149002EA7A1 /* OCVFreak.m */, 383BC59E1E300150002EA7A1 /* OCVLATCH.h */, 383BC59F1E300150002EA7A1 /* OCVLATCH.m */, 383BC5A21E300157002EA7A1 /* OCVLUCID.h */, 383BC5A31E300157002EA7A1 /* OCVLUCID.m */, 383BC5A61E30015E002EA7A1 /* OCVSIFT.h */, 383BC5A71E30015E002EA7A1 /* OCVSIFT.m */, 383BC5AA1E300165002EA7A1 /* OCVStarDetector.h */, 383BC5AB1E300165002EA7A1 /* OCVStarDetector.m */, 383BC5AE1E30016B002EA7A1 /* OCVSURF.h */, 383BC5AF1E30016B002EA7A1 /* OCVSURF.m */, ); path = XFeatures2D; sourceTree = ""; }; 67E64CE47F8AE8A39C02F013 /* BgSegm */ = { isa = PBXGroup; children = ( 383BC4261E2FFB47002EA7A1 /* OCVBackgroundSubtractorGMG.h */, 383BC4271E2FFB47002EA7A1 /* OCVBackgroundSubtractorGMG.m */, 383BC42A1E2FFB56002EA7A1 /* OCVBackgroundSubtractorMOG.h */, 383BC42B1E2FFB56002EA7A1 /* OCVBackgroundSubtractorMOG.m */, ); path = BgSegm; sourceTree = ""; }; 67E64CE4EA82E6C734B1F52D /* Cuda */ = { isa = PBXGroup; children = ( 383BC41A1E2FFAD4002EA7A1 /* OCVGPUMat.h */, 383BC41B1E2FFAD4002EA7A1 /* OCVGPUMat.m */, ); path = Cuda; sourceTree = ""; }; 67E64D13E7D9F06FEE0F28C2 /* Reflection */ = { isa = PBXGroup; children = ( 383BC4D21E2FFEAE002EA7A1 /* OCVReflectImage.h */, 383BC4D31E2FFEAE002EA7A1 /* OCVReflectImage.m */, ); path = Reflection; sourceTree = ""; }; 67E64E1D1A75A6F4A9339476 /* Core */ = { isa = PBXGroup; children = ( 67E64A56382886DE40147DB2 /* Algorithms */, 67E648B3CACE63D40EBA303E /* Base */, 67E647D357B7BD627D7D29B4 /* Mat */, 67E6435957E1035A51337C83 /* Operations */, 3898710F1E6F30F700020CFB /* Persistence */, 67E64745979703A472DBFFBC /* Private */, 38DB13ED1E366FD500822472 /* OCVCore.h */, ); path = Core; sourceTree = ""; }; 67E64EED9C49A3E9AB65659A /* Cvb */ = { isa = PBXGroup; children = ( 383BC4161E2FFAC2002EA7A1 /* OCVBlob.h */, 383BC4171E2FFAC2002EA7A1 /* OCVBlob.m */, ); path = Cvb; sourceTree = ""; }; 67E64F6071CE207DF3EA0488 /* LineDescriptor */ = { isa = PBXGroup; children = ( 383BC45A1E2FFC5C002EA7A1 /* OCVLSDDetector.h */, 383BC45B1E2FFC5C002EA7A1 /* OCVLSDDetector.m */, ); path = LineDescriptor; sourceTree = ""; }; 67E64F8EEC3A8B31F642A947 /* OCR */ = { isa = PBXGroup; children = ( 383BC4BE1E2FFE4E002EA7A1 /* OCVPageIterator.h */, 383BC4BF1E2FFE4E002EA7A1 /* OCVPageIterator.m */, 383BC4C21E2FFE63002EA7A1 /* OCVTesseract.h */, 383BC4C31E2FFE63002EA7A1 /* OCVTesseract.m */, 383BC4C61E2FFE6C002EA7A1 /* OCVTesseractResult.h */, 383BC4C71E2FFE6C002EA7A1 /* OCVTesseractResult.m */, 383BC4CA1E2FFE7C002EA7A1 /* OCVOrientation.h */, 383BC4CB1E2FFE7C002EA7A1 /* OCVOrientation.m */, ); path = OCR; sourceTree = ""; }; 67E64FDEDEE3065E9A7F3BE8 /* Fuzzy */ = { isa = PBXGroup; children = ( 383BC4561E2FFC2E002EA7A1 /* OCVFuzzyInvoke.h */, 383BC4571E2FFC2E002EA7A1 /* OCVFuzzyInvoke.m */, ); path = Fuzzy; sourceTree = ""; }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ 388B228621863CF000F24D45 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( 388B229D21863CF000F24D45 /* LegoSwiftCV.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; 38B4D4AD1E2AA01F008AAAB0 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( 383BC4E41E2FFEEC002EA7A1 /* OCVEMDL1HistogramCostExtractor.h in Headers */, 383BC4481E2FFBD5002EA7A1 /* OCVFeature2D.h in Headers */, 383BC5841E3000F7002EA7A1 /* OCVHistogramBox.h in Headers */, 383BC4181E2FFAC2002EA7A1 /* OCVBlob.h in Headers */, 38C0D9151E7D73D100246963 /* OCVGeneralizedHough.h in Headers */, 383BC42C1E2FFB56002EA7A1 /* OCVBackgroundSubtractorMOG.h in Headers */, 38C0D93A1E7D93D000246963 /* OCVSerializable.h in Headers */, 383BC5A41E300157002EA7A1 /* OCVLUCID.h in Headers */, 383BC5441E300033002EA7A1 /* OCVERFilter.h in Headers */, 383BC5081E2FFF6F002EA7A1 /* OCVFisheyeWarper.h in Headers */, 383BC5181E2FFF99002EA7A1 /* OCVPaniniWarper.h in Headers */, 383BC4FC1E2FFF44002EA7A1 /* OCVThinPlateSplineShapeTransformer.h in Headers */, 383BC4801E2FFCE1002EA7A1 /* OCVStatModelExtensions.h in Headers */, 38DB13EC1E366E0100822472 /* OCVVideo.h in Headers */, 383BC5401E30001E002EA7A1 /* OCVSuperResolution.h in Headers */, 38C0D9231E7D77B500246963 /* OCVSubdiv2D.h in Headers */, 383BC4841E2FFCEA002EA7A1 /* OCVSVM.h in Headers */, 383BC46C1E2FFCA2002EA7A1 /* OCVEM.h in Headers */, 383BC4C41E2FFE63002EA7A1 /* OCVTesseract.h in Headers */, 389871161E6F315A00020CFB /* OCVFileNode.h in Headers */, 383BC5B81E30018A002EA7A1 /* OCVXPhoto.h in Headers */, 383BC43C1E2FFBA6002EA7A1 /* OCVFaceRecognizer.h in Headers */, 3898711D1E6F3CB900020CFB /* OCVFileStorageFormatDescriptor.h in Headers */, 383BC56C1E3000AD002EA7A1 /* OCVGaussianMotionFilter.h in Headers */, 383BC4941E2FFD2C002EA7A1 /* OCVMCvDTreeNode.h in Headers */, 383BC4101E2FF974002EA7A1 /* OCVObject.h in Headers */, 383BC54C1E300044002EA7A1 /* OCVERFilterNM2.h in Headers */, 383BC4E81E2FFEF8002EA7A1 /* OCVHausdorffDistanceExtractor.h in Headers */, 383BC4781E2FFCC9002EA7A1 /* OCVNormalBayesClassifier.h in Headers */, 383BC50C1E2FFF77002EA7A1 /* OCVMercatorWarper.h in Headers */, 383BC48C1E2FFD0A002EA7A1 /* OCVBoostType.h in Headers */, 383BC4EC1E2FFF08002EA7A1 /* OCVHistogramCostExtractor.h in Headers */, 383BC5B41E30017C002EA7A1 /* OCVDTFilter.h in Headers */, 383BC4F81E2FFF39002EA7A1 /* OCVShapeDistanceExtractor.h in Headers */, 38C0D92B1E7D7EAC00246963 /* OCVLineSegmentDetector.h in Headers */, 38B4D4C11E2AA01F008AAAB0 /* LegoCV.h in Headers */, 383BC5141E2FFF8F002EA7A1 /* OCVPaniniPortraitWarper.h in Headers */, 383BC4E01E2FFEDE002EA7A1 /* OCVEMDHistogramCostExtractor.h in Headers */, 383BC5A81E30015E002EA7A1 /* OCVSIFT.h in Headers */, 383BC5701E3000B6002EA7A1 /* OCVOnePassStabilizer.h in Headers */, 3897187B1E361F0600CB02B4 /* OCVPhotoCamera.h in Headers */, 383BC4F41E2FFF23002EA7A1 /* OCVShapeContextDistanceExtractor.h in Headers */, 383BC5501E30004F002EA7A1 /* OCVERStat.h in Headers */, 383BC5981E300142002EA7A1 /* OCVDAISY.h in Headers */, 383BC4B81E2FFE13002EA7A1 /* OCVPlatformInfo.h in Headers */, 383BC4201E2FFB1D002EA7A1 /* OCVStorageOperationType.h in Headers */, 389871191E6F32BE00020CFB /* OCVPersistence.h in Headers */, 383BC4981E2FFD39002EA7A1 /* OCVMCvDTreeSplit.h in Headers */, 38C0D91B1E7D764200246963 /* OCVGeneralizedHoughGuil.h in Headers */, 383BC5201E2FFFAA002EA7A1 /* OCVSphericalWarper.h in Headers */, 383BC4641E2FFC7B002EA7A1 /* OCVANNMLP.h in Headers */, 383BC4B41E2FFE06002EA7A1 /* OCVKernelConfiguration.h in Headers */, 383BC51C1E2FFFA0002EA7A1 /* OCVPlaneWarper.h in Headers */, 383BC4581E2FFC2E002EA7A1 /* OCVFuzzyInvoke.h in Headers */, 383BC5341E2FFFF6002EA7A1 /* OCVRgb.h in Headers */, 383BC4881E2FFCF2002EA7A1 /* OCVTrainData.h in Headers */, 383BC52C1E2FFFCE002EA7A1 /* OCVTransverseMercatorWarper.h in Headers */, 383BC5A01E300150002EA7A1 /* OCVLATCH.h in Headers */, 383BC4A01E2FFD56002EA7A1 /* OCVMCvParamGrid.h in Headers */, 383BC5641E30009D002EA7A1 /* OCVVideoCaptureFrameSource.h in Headers */, 383BC5581E30006B002EA7A1 /* OCVTileTiffWriter.h in Headers */, 383BC44C1E2FFBE4002EA7A1 /* OCVIndex.h in Headers */, 383BC5AC1E300165002EA7A1 /* OCVStarDetector.h in Headers */, 383BC4AC1E2FFDEC002EA7A1 /* OCVKernel.h in Headers */, 383BC5301E2FFFD9002EA7A1 /* OCVWarperCreator.h in Headers */, 383BC5281E2FFFBD002EA7A1 /* OCVSticher.h in Headers */, 383BC4401E2FFBB3002EA7A1 /* OCVFisherFaceRecognizer.h in Headers */, 383BC5241E2FFFB5002EA7A1 /* OCVStereographicWarper.h in Headers */, 383BC4681E2FFC8F002EA7A1 /* OCVDTree.h in Headers */, 383BC4441E2FFBBF002EA7A1 /* OCVLBPHFaceRecognizer.h in Headers */, 3897187F1E3621D000CB02B4 /* OCVCamera.h in Headers */, 38E3EA211E6E305C00BCC097 /* OCVImageProcessing.h in Headers */, 383BC4A41E2FFDDA002EA7A1 /* OCVDevice.h in Headers */, 383BC5381E2FFFFC002EA7A1 /* OCVRgba.h in Headers */, 383BC53C1E300015002EA7A1 /* OCVFrameSource.h in Headers */, 383BC5001E2FFF5A002EA7A1 /* OCVFeaturesFinder.h in Headers */, 389718871E3627D100CB02B4 /* OCVCamera+Private.h in Headers */, 383BC5781E3000D0002EA7A1 /* OCVBackgroundSubtractor.h in Headers */, 383BC4D41E2FFEAE002EA7A1 /* OCVReflectImage.h in Headers */, 383BC49C1E2FFD4B002EA7A1 /* OCVMCvDTreeSplitMOrder.h in Headers */, 383BC5741E3000BE002EA7A1 /* OCVTwoPassStabilizer.h in Headers */, 383BC5801E3000E3002EA7A1 /* OCVBackgroundSubtractorMOG2.h in Headers */, 383BC45C1E2FFC5C002EA7A1 /* OCVLSDDetector.h in Headers */, 383BC55C1E300078002EA7A1 /* OCVMultiTracker.h in Headers */, 383BC5541E300062002EA7A1 /* OCVTiffWriter.h in Headers */, 383BC41C1E2FFAD4002EA7A1 /* OCVGPUMat.h in Headers */, 383BC5B01E30016B002EA7A1 /* OCVSURF.h in Headers */, 383BC4741E2FFCB5002EA7A1 /* OCVLogisticRegression.h in Headers */, 389718771E361ECC00CB02B4 /* OCVVideoCamera.h in Headers */, 383BC4701E2FFCAC002EA7A1 /* OCVKNearest.h in Headers */, 383BC4BC1E2FFE1C002EA7A1 /* OCVProgramSource.h in Headers */, 383BC5101E2FFF82002EA7A1 /* OCVOrbFeaturesFinder.h in Headers */, 383BC5481E30003C002EA7A1 /* OCVERFilterNM1.h in Headers */, 386F2B871E352A4800320AEB /* OCVPointerObject.h in Headers */, 383BC4241E2FFB32002EA7A1 /* OCVCharucoBoard.h in Headers */, 383BC5881E3000FF002EA7A1 /* OCVHistogramViewer.h in Headers */, 383BC57C1E3000DA002EA7A1 /* OCVBackgroundSubtractorKNN.h in Headers */, 383BC4281E2FFB47002EA7A1 /* OCVBackgroundSubtractorGMG.h in Headers */, 383BC5041E2FFF66002EA7A1 /* OCVCompressedRectilinearWarper.h in Headers */, 383BC4C81E2FFE6C002EA7A1 /* OCVTesseractResult.h in Headers */, 383BC4541E2FFC18002EA7A1 /* OCVGeodeticCoordinate.h in Headers */, 383BC59C1E300149002EA7A1 /* OCVFreak.h in Headers */, 383BC5681E3000A4002EA7A1 /* OCVVideoFrameSource.h in Headers */, 383BC4F01E2FFF14002EA7A1 /* OCVNormHistogramCostExtractor.h in Headers */, 383BC4341E2FFB89002EA7A1 /* OCVImporter.h in Headers */, 38C0D9381E7D8FFC00246963 /* OCVCascadeClassifierOptions.h in Headers */, 389718851E36263A00CB02B4 /* OCVReferenceObject.h in Headers */, 383BC4C01E2FFE4E002EA7A1 /* OCVPageIterator.h in Headers */, 383BC5941E30013C002EA7A1 /* OCVCudaSURF.h in Headers */, 383BC4301E2FFB78002EA7A1 /* OCVNet.h in Headers */, 38C0D9111E7D735F00246963 /* OCVGeneralizedHoughBallard.h in Headers */, 383BC4601E2FFC6F002EA7A1 /* OCVBoost.h in Headers */, 383BC4D01E2FFE90002EA7A1 /* OCVPlot.h in Headers */, 383BC5901E300134002EA7A1 /* OCVBriefDescriptorExtractor.h in Headers */, 383BC4D81E2FFEC0002EA7A1 /* OCVAffineTransformer.h in Headers */, 383BC4CC1E2FFE7C002EA7A1 /* OCVOrientation.h in Headers */, 383BC5601E30007F002EA7A1 /* OCVTracker.h in Headers */, 38DB13EE1E366FE700822472 /* OCVCore.h in Headers */, 383BC4DC1E2FFED0002EA7A1 /* OCVChiHistogramCostExtractor.h in Headers */, 383BC4A81E2FFDE5002EA7A1 /* OCVQueue.h in Headers */, 383BC47C1E2FFCD3002EA7A1 /* OCVRTree.h in Headers */, 383BC4B01E2FFDF6002EA7A1 /* OCVImage2D.h in Headers */, 383BC4901E2FFD13002EA7A1 /* OCVVarType.h in Headers */, 383BC4381E2FFB9A002EA7A1 /* OCVEigenFaceRecognizer.h in Headers */, 67E648CE9C63C53ACF371407 /* OCVColorConversionType.h in Headers */, 38C0D9181E7D747700246963 /* OCVArrayables.h in Headers */, 67E6451D7988CBE476CE428C /* OCVImageOperation.h in Headers */, 67E64EDCC12B0E85158EED46 /* OCVInterpolationType.h in Headers */, 67E64A019431C37CD2E82210 /* OCVImage.h in Headers */, 67E6417055654E2DD6FD5D3A /* OCVInputArray+Private.h in Headers */, 38C0D9301E7D8D8200246963 /* OCVBaseCascadeClassifier.h in Headers */, 67E64F822344F94C3B4967C8 /* OCVInputOutputArray+Private.h in Headers */, 67E64B239EDCF0B841EC9CC1 /* OCVMatDataAllocator+Private.h in Headers */, 389871121E6F311400020CFB /* OCVFileStorage.h in Headers */, 67E6473F3C34532A46C0D9EC /* OCVOutputArray+Private.h in Headers */, 67E6448CC376B69531E717EC /* OCVPoint+Private.h in Headers */, 38C0D9341E7D8EEC00246963 /* OCVCascadeClassifierResult.h in Headers */, 67E646925E8CB062C6A6B51D /* OCVRect+Private.h in Headers */, 67E64D8A7F0465ED26226CDE /* OCVSize+Private.h in Headers */, 67E6437FD719EFAD3A84D511 /* OCVMatDataAllocator.h in Headers */, 67E6426C3111E627F15578A5 /* OCVMat.h in Headers */, 67E64A1FCCE0E9859B9A3ED5 /* OCVMatExpr.h in Headers */, 67E6476EC8885C15EA428F69 /* OCVComplex.h in Headers */, 67E64A11B0A406C9C9029672 /* OCVEdges.h in Headers */, 38C0D90E1E7D6D2000246963 /* OCVImageTypes.h in Headers */, 67E6462097C843412681563A /* OCVScalar.h in Headers */, 67E64C1DB7DBFA0C5DA2C9BE /* OCVRect.h in Headers */, 67E64E7DA7437D4DEA3E1191 /* OCVSize.h in Headers */, 67E642A4F9BE94B327C25F84 /* OCVUMat.h in Headers */, 67E64C955BC995A800BE238A /* OCVOperation+Bitwise.h in Headers */, 67E644E39302CDD38472F074 /* OCVOperation+Transform.h in Headers */, 67E642627C4A182CCBCA3A46 /* OCVOperation.h in Headers */, 67E641AE46ACCCCFFFCE3621 /* OCVPoint.h in Headers */, 67E6436EE5D768B6C32F3C87 /* OCVTypes.h in Headers */, 67E64B60D2C9C331E963C1B0 /* OCVVector.h in Headers */, 38C0D91F1E7D771300246963 /* OCVContrastLimitedAdaptiveHistogramEqualization.h in Headers */, 67E648675A5F8621E5FD80C2 /* OCVAlgorithm.h in Headers */, 67E64F5B14D37BB167F88E90 /* OCVGeometry.h in Headers */, 67E6456620CCF41EBB3210AD /* OCVLDA.h in Headers */, 67E64B717650D498E650CC73 /* OCVRandomGenerator.h in Headers */, 67E640A971036C2B4E41E3D9 /* OCVPCA.h in Headers */, 67E649516B336D32CF0E6059 /* OCVSVD.h in Headers */, 67E6478BAEA8F246134B41AB /* OCVMinimumMaximum.h in Headers */, 67E64B41EB82AA57E982C27A /* OCVInputOutputArray.h in Headers */, 67E643A4327EFC207C923080 /* OCVInputArray.h in Headers */, 67E649ED77AF2C63CB75F620 /* OCVInputOutputArrayable.h in Headers */, 67E64A0C4B4C00A32A808C87 /* OCVInputArrayable.h in Headers */, 67E64C9B5A91DA7042DD5BEC /* OCVOutputArray.h in Headers */, 67E643F98D5706485C3DAA9F /* OCVOutputArrayable.h in Headers */, 67E64A5FFF74B76259911897 /* OCVFormatter.h in Headers */, 67E6424CB9C3609DCBB63C45 /* OCVTermCriteria.h in Headers */, 67E6483A6D84B9ED9B5D2A4A /* OCVCascadeClassifier.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ 388B228A21863CF000F24D45 /* LegoSwiftCV */ = { isa = PBXNativeTarget; buildConfigurationList = 388B22A221863CF000F24D45 /* Build configuration list for PBXNativeTarget "LegoSwiftCV" */; buildPhases = ( 388B228621863CF000F24D45 /* Headers */, 388B228721863CF000F24D45 /* Sources */, 388B228821863CF000F24D45 /* Frameworks */, 388B228921863CF000F24D45 /* Resources */, ); buildRules = ( ); dependencies = ( ); name = LegoSwiftCV; productName = LegoSwiftCV; productReference = 388B228B21863CF000F24D45 /* LegoSwiftCV.framework */; productType = "com.apple.product-type.framework"; }; 388B229221863CF000F24D45 /* LegoSwiftCVTests */ = { isa = PBXNativeTarget; buildConfigurationList = 388B22A521863CF000F24D45 /* Build configuration list for PBXNativeTarget "LegoSwiftCVTests" */; buildPhases = ( 388B228F21863CF000F24D45 /* Sources */, 388B229021863CF000F24D45 /* Frameworks */, 388B229121863CF000F24D45 /* Resources */, ); buildRules = ( ); dependencies = ( 388B229621863CF000F24D45 /* PBXTargetDependency */, 388B229821863CF000F24D45 /* PBXTargetDependency */, ); name = LegoSwiftCVTests; productName = LegoSwiftCVTests; productReference = 388B229321863CF000F24D45 /* LegoSwiftCVTests.xctest */; productType = "com.apple.product-type.bundle.unit-test"; }; 38B4D4AF1E2AA01F008AAAB0 /* LegoCV */ = { isa = PBXNativeTarget; buildConfigurationList = 38B4D4C41E2AA020008AAAB0 /* Build configuration list for PBXNativeTarget "LegoCV" */; buildPhases = ( 38B4D4AB1E2AA01F008AAAB0 /* Sources */, 38B4D4AC1E2AA01F008AAAB0 /* Frameworks */, 38B4D4AD1E2AA01F008AAAB0 /* Headers */, 38B4D4AE1E2AA01F008AAAB0 /* Resources */, ); buildRules = ( ); dependencies = ( ); name = LegoCV; productName = LegoCV; productReference = 38B4D4B01E2AA01F008AAAB0 /* LegoCV.framework */; productType = "com.apple.product-type.framework"; }; 38B4D4B81E2AA01F008AAAB0 /* LegoCVTests */ = { isa = PBXNativeTarget; buildConfigurationList = 38B4D4C71E2AA020008AAAB0 /* Build configuration list for PBXNativeTarget "LegoCVTests" */; buildPhases = ( 38B4D4B51E2AA01F008AAAB0 /* Sources */, 38B4D4B61E2AA01F008AAAB0 /* Frameworks */, 38B4D4B71E2AA01F008AAAB0 /* Resources */, ); buildRules = ( ); dependencies = ( 38B4D4BC1E2AA01F008AAAB0 /* PBXTargetDependency */, 38C5B0C422948865009D2D68 /* PBXTargetDependency */, ); name = LegoCVTests; productName = LegoCVTests; productReference = 38B4D4B91E2AA01F008AAAB0 /* LegoCVTests.xctest */; productType = "com.apple.product-type.bundle.unit-test"; }; 38B4D4CF1E2AA110008AAAB0 /* FaceDetection */ = { isa = PBXNativeTarget; buildConfigurationList = 38B4D4DF1E2AA111008AAAB0 /* Build configuration list for PBXNativeTarget "FaceDetection" */; buildPhases = ( 38B4D4CC1E2AA110008AAAB0 /* Sources */, 38B4D4CD1E2AA110008AAAB0 /* Frameworks */, 38B4D4CE1E2AA110008AAAB0 /* Resources */, 381F150F1E2AA22A0072F870 /* Embed Frameworks */, ); buildRules = ( ); dependencies = ( 381F150E1E2AA22A0072F870 /* PBXTargetDependency */, 388B229F21863CF000F24D45 /* PBXTargetDependency */, ); name = FaceDetection; productName = FaceDetection; productReference = 38B4D4D01E2AA110008AAAB0 /* FaceDetection.app */; productType = "com.apple.product-type.application"; }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ 38B4D4A71E2AA01F008AAAB0 /* Project object */ = { isa = PBXProject; attributes = { LastSwiftUpdateCheck = 1000; LastUpgradeCheck = 1020; ORGANIZATIONNAME = "Unified Sense"; TargetAttributes = { 388B228A21863CF000F24D45 = { CreatedOnToolsVersion = 10.0; DevelopmentTeam = 289M6XEDV4; LastSwiftMigration = 1020; ProvisioningStyle = Automatic; }; 388B229221863CF000F24D45 = { CreatedOnToolsVersion = 10.0; DevelopmentTeam = 289M6XEDV4; LastSwiftMigration = 1020; ProvisioningStyle = Automatic; TestTargetID = 38B4D4CF1E2AA110008AAAB0; }; 38B4D4AF1E2AA01F008AAAB0 = { CreatedOnToolsVersion = 8.2.1; DevelopmentTeam = 289M6XEDV4; LastSwiftMigration = 1000; ProvisioningStyle = Automatic; }; 38B4D4B81E2AA01F008AAAB0 = { CreatedOnToolsVersion = 8.2.1; DevelopmentTeam = 289M6XEDV4; LastSwiftMigration = 1020; ProvisioningStyle = Automatic; TestTargetID = 38B4D4CF1E2AA110008AAAB0; }; 38B4D4CF1E2AA110008AAAB0 = { CreatedOnToolsVersion = 8.2.1; DevelopmentTeam = 289M6XEDV4; ProvisioningStyle = Automatic; }; }; }; buildConfigurationList = 38B4D4AA1E2AA01F008AAAB0 /* Build configuration list for PBXProject "LegoCV" */; compatibilityVersion = "Xcode 3.2"; developmentRegion = en; hasScannedForEncodings = 0; knownRegions = ( en, Base, ); mainGroup = 38B4D4A61E2AA01F008AAAB0; productRefGroup = 38B4D4B11E2AA01F008AAAB0 /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( 38B4D4AF1E2AA01F008AAAB0 /* LegoCV */, 388B228A21863CF000F24D45 /* LegoSwiftCV */, 38B4D4B81E2AA01F008AAAB0 /* LegoCVTests */, 388B229221863CF000F24D45 /* LegoSwiftCVTests */, 38B4D4CF1E2AA110008AAAB0 /* FaceDetection */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ 388B228921863CF000F24D45 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; 388B229121863CF000F24D45 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; 38B4D4AE1E2AA01F008AAAB0 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; 38B4D4B71E2AA01F008AAAB0 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; 38B4D4CE1E2AA110008AAAB0 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( 38B4D4DD1E2AA111008AAAB0 /* LaunchScreen.storyboard in Resources */, 38B4D4DA1E2AA111008AAAB0 /* Assets.xcassets in Resources */, 38B4D4D81E2AA110008AAAB0 /* Main.storyboard in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ 388B228721863CF000F24D45 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 388B22A821863E0200F24D45 /* Matrix.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; 388B228F21863CF000F24D45 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 388B229B21863CF000F24D45 /* LegoSwiftCVTests.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; 38B4D4AB1E2AA01F008AAAB0 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 383BC52D1E2FFFCE002EA7A1 /* OCVTransverseMercatorWarper.m in Sources */, 383BC5351E2FFFF6002EA7A1 /* OCVRgb.m in Sources */, 383BC5591E30006B002EA7A1 /* OCVTileTiffWriter.m in Sources */, 38C0D9351E7D8EEC00246963 /* OCVCascadeClassifierResult.m in Sources */, 383BC4291E2FFB47002EA7A1 /* OCVBackgroundSubtractorGMG.m in Sources */, 383BC5B11E30016B002EA7A1 /* OCVSURF.m in Sources */, 383BC5291E2FFFBD002EA7A1 /* OCVSticher.m in Sources */, 383BC5791E3000D0002EA7A1 /* OCVBackgroundSubtractor.m in Sources */, 383BC4891E2FFCF2002EA7A1 /* OCVTrainData.m in Sources */, 383BC4711E2FFCAC002EA7A1 /* OCVKNearest.m in Sources */, 383BC4411E2FFBB3002EA7A1 /* OCVFisherFaceRecognizer.m in Sources */, 3897187C1E361F0600CB02B4 /* OCVPhotoCamera.mm in Sources */, 383BC4F51E2FFF23002EA7A1 /* OCVShapeContextDistanceExtractor.m in Sources */, 389718781E361ECC00CB02B4 /* OCVVideoCamera.mm in Sources */, 383BC53D1E300015002EA7A1 /* OCVFrameSource.m in Sources */, 383BC4851E2FFCEA002EA7A1 /* OCVSVM.m in Sources */, 389718861E36263A00CB02B4 /* OCVReferenceObject.m in Sources */, 383BC4B91E2FFE13002EA7A1 /* OCVPlatformInfo.m in Sources */, 383BC48D1E2FFD0A002EA7A1 /* OCVBoostType.m in Sources */, 383BC5051E2FFF66002EA7A1 /* OCVCompressedRectilinearWarper.m in Sources */, 383BC5B91E30018A002EA7A1 /* OCVXPhoto.m in Sources */, 383BC4351E2FFB89002EA7A1 /* OCVImporter.m in Sources */, 383BC5A11E300150002EA7A1 /* OCVLATCH.m in Sources */, 383BC4B51E2FFE06002EA7A1 /* OCVKernelConfiguration.m in Sources */, 383BC49D1E2FFD4B002EA7A1 /* OCVMCvDTreeSplitMOrder.m in Sources */, 383BC5A51E300157002EA7A1 /* OCVLUCID.m in Sources */, 389871171E6F315A00020CFB /* OCVFileNode.mm in Sources */, 383BC4211E2FFB1D002EA7A1 /* OCVStorageOperationType.m in Sources */, 383BC57D1E3000DA002EA7A1 /* OCVBackgroundSubtractorKNN.m in Sources */, 383BC5211E2FFFAA002EA7A1 /* OCVSphericalWarper.m in Sources */, 383BC5411E30001E002EA7A1 /* OCVSuperResolution.m in Sources */, 383BC4D91E2FFEC0002EA7A1 /* OCVAffineTransformer.m in Sources */, 383BC4F11E2FFF14002EA7A1 /* OCVNormHistogramCostExtractor.m in Sources */, 383BC4451E2FFBBF002EA7A1 /* OCVLBPHFaceRecognizer.m in Sources */, 386F2B881E352A4800320AEB /* OCVPointerObject.m in Sources */, 383BC46D1E2FFCA2002EA7A1 /* OCVEM.m in Sources */, 383BC5191E2FFF99002EA7A1 /* OCVPaniniWarper.m in Sources */, 383BC4C51E2FFE63002EA7A1 /* OCVTesseract.m in Sources */, 383BC5111E2FFF82002EA7A1 /* OCVOrbFeaturesFinder.m in Sources */, 38C0D9121E7D735F00246963 /* OCVGeneralizedHoughBallard.m in Sources */, 383BC5B51E30017C002EA7A1 /* OCVDTFilter.m in Sources */, 383BC4A51E2FFDDA002EA7A1 /* OCVDevice.m in Sources */, 383BC5551E300062002EA7A1 /* OCVTiffWriter.m in Sources */, 383BC4591E2FFC2E002EA7A1 /* OCVFuzzyInvoke.m in Sources */, 383BC4311E2FFB78002EA7A1 /* OCVNet.m in Sources */, 389871131E6F311400020CFB /* OCVFileStorage.mm in Sources */, 383BC4ED1E2FFF08002EA7A1 /* OCVHistogramCostExtractor.m in Sources */, 383BC4191E2FFAC2002EA7A1 /* OCVBlob.m in Sources */, 383BC4E11E2FFEDE002EA7A1 /* OCVEMDHistogramCostExtractor.m in Sources */, 383BC5891E3000FF002EA7A1 /* OCVHistogramViewer.m in Sources */, 383BC4D11E2FFE90002EA7A1 /* OCVPlot.m in Sources */, 38C0D91C1E7D764200246963 /* OCVGeneralizedHoughGuil.m in Sources */, 389718801E3621D000CB02B4 /* OCVCamera.mm in Sources */, 383BC5011E2FFF5A002EA7A1 /* OCVFeaturesFinder.m in Sources */, 383BC5611E30007F002EA7A1 /* OCVTracker.m in Sources */, 383BC56D1E3000AD002EA7A1 /* OCVGaussianMotionFilter.m in Sources */, 383BC4251E2FFB32002EA7A1 /* OCVCharucoBoard.m in Sources */, 383BC4D51E2FFEAE002EA7A1 /* OCVReflectImage.m in Sources */, 383BC59D1E300149002EA7A1 /* OCVFreak.m in Sources */, 383BC4811E2FFCE1002EA7A1 /* OCVStatModelExtensions.m in Sources */, 383BC44D1E2FFBE4002EA7A1 /* OCVIndex.m in Sources */, 383BC4991E2FFD39002EA7A1 /* OCVMCvDTreeSplit.m in Sources */, 383BC50D1E2FFF77002EA7A1 /* OCVMercatorWarper.m in Sources */, 383BC4951E2FFD2C002EA7A1 /* OCVMCvDTreeNode.m in Sources */, 383BC4AD1E2FFDEC002EA7A1 /* OCVKernel.m in Sources */, 383BC41D1E2FFAD4002EA7A1 /* OCVGPUMat.m in Sources */, 383BC47D1E2FFCD3002EA7A1 /* OCVRTree.m in Sources */, 383BC4551E2FFC18002EA7A1 /* OCVGeodeticCoordinate.m in Sources */, 383BC4911E2FFD13002EA7A1 /* OCVVarType.m in Sources */, 383BC4E91E2FFEF8002EA7A1 /* OCVHausdorffDistanceExtractor.m in Sources */, 38C0D9311E7D8D8200246963 /* OCVBaseCascadeClassifier.m in Sources */, 383BC4751E2FFCB5002EA7A1 /* OCVLogisticRegression.m in Sources */, 383BC5091E2FFF6F002EA7A1 /* OCVFisheyeWarper.m in Sources */, 383BC4651E2FFC7B002EA7A1 /* OCVANNMLP.m in Sources */, 383BC43D1E2FFBA6002EA7A1 /* OCVFaceRecognizer.m in Sources */, 383BC5691E3000A4002EA7A1 /* OCVVideoFrameSource.m in Sources */, 383BC4C91E2FFE6C002EA7A1 /* OCVTesseractResult.m in Sources */, 383BC4611E2FFC6F002EA7A1 /* OCVBoost.m in Sources */, 383BC5391E2FFFFC002EA7A1 /* OCVRgba.m in Sources */, 383BC4B11E2FFDF6002EA7A1 /* OCVImage2D.m in Sources */, 383BC5451E300033002EA7A1 /* OCVERFilter.m in Sources */, 383BC4FD1E2FFF44002EA7A1 /* OCVThinPlateSplineShapeTransformer.m in Sources */, 383BC51D1E2FFFA0002EA7A1 /* OCVPlaneWarper.m in Sources */, 383BC4E51E2FFEEC002EA7A1 /* OCVEMDL1HistogramCostExtractor.m in Sources */, 383BC4391E2FFB9A002EA7A1 /* OCVEigenFaceRecognizer.m in Sources */, 383BC5251E2FFFB5002EA7A1 /* OCVStereographicWarper.m in Sources */, 383BC4691E2FFC8F002EA7A1 /* OCVDTree.m in Sources */, 383BC5151E2FFF8F002EA7A1 /* OCVPaniniPortraitWarper.m in Sources */, 383BC45D1E2FFC5C002EA7A1 /* OCVLSDDetector.m in Sources */, 383BC5751E3000BE002EA7A1 /* OCVTwoPassStabilizer.m in Sources */, 383BC4DD1E2FFED0002EA7A1 /* OCVChiHistogramCostExtractor.m in Sources */, 383BC42D1E2FFB56002EA7A1 /* OCVBackgroundSubtractorMOG.m in Sources */, 383BC4F91E2FFF39002EA7A1 /* OCVShapeDistanceExtractor.m in Sources */, 383BC4A91E2FFDE5002EA7A1 /* OCVQueue.m in Sources */, 383BC5AD1E300165002EA7A1 /* OCVStarDetector.m in Sources */, 383BC5711E3000B6002EA7A1 /* OCVOnePassStabilizer.m in Sources */, 383BC4491E2FFBD5002EA7A1 /* OCVFeature2D.m in Sources */, 38C0D9241E7D77B500246963 /* OCVSubdiv2D.m in Sources */, 383BC5511E30004F002EA7A1 /* OCVERStat.m in Sources */, 383BC4111E2FF974002EA7A1 /* OCVObject.m in Sources */, 383BC5951E30013C002EA7A1 /* OCVCudaSURF.m in Sources */, 383BC4C11E2FFE4E002EA7A1 /* OCVPageIterator.m in Sources */, 383BC5651E30009D002EA7A1 /* OCVVideoCaptureFrameSource.m in Sources */, 383BC5811E3000E3002EA7A1 /* OCVBackgroundSubtractorMOG2.m in Sources */, 38C0D9161E7D73D100246963 /* OCVGeneralizedHough.m in Sources */, 383BC4CD1E2FFE7C002EA7A1 /* OCVOrientation.m in Sources */, 383BC5311E2FFFD9002EA7A1 /* OCVWarperCreator.m in Sources */, 383BC5991E300142002EA7A1 /* OCVDAISY.m in Sources */, 383BC54D1E300044002EA7A1 /* OCVERFilterNM2.m in Sources */, 383BC5851E3000F7002EA7A1 /* OCVHistogramBox.m in Sources */, 383BC5491E30003C002EA7A1 /* OCVERFilterNM1.m in Sources */, 38C0D9391E7D8FFC00246963 /* OCVCascadeClassifierOptions.m in Sources */, 38C0D92C1E7D7EAC00246963 /* OCVLineSegmentDetector.m in Sources */, 383BC5A91E30015E002EA7A1 /* OCVSIFT.m in Sources */, 383BC4791E2FFCC9002EA7A1 /* OCVNormalBayesClassifier.m in Sources */, 383BC55D1E300078002EA7A1 /* OCVMultiTracker.m in Sources */, 383BC5911E300134002EA7A1 /* OCVBriefDescriptorExtractor.m in Sources */, 383BC4BD1E2FFE1C002EA7A1 /* OCVProgramSource.m in Sources */, 383BC4A11E2FFD56002EA7A1 /* OCVMCvParamGrid.m in Sources */, 67E64E06B0FC8DB79DF8354F /* OCVImageOperation.mm in Sources */, 67E6471FA02CAAF362060F84 /* OCVImage.m in Sources */, 3898711E1E6F3CB900020CFB /* OCVFileStorageFormatDescriptor.m in Sources */, 67E64C3AD9D201BE55ACDD51 /* OCVPoint+Private.mm in Sources */, 67E6430460F88D3DB9A262A1 /* OCVRect+Private.mm in Sources */, 67E64C56148755FEAD662D52 /* OCVSize+Private.mm in Sources */, 67E64B7E0FDC5B551EF68970 /* OCVMatDataAllocator.mm in Sources */, 67E6438494C8E62823A6221F /* OCVMatExpr.mm in Sources */, 67E6445E927F1CC3D66BE6CA /* OCVMat.mm in Sources */, 67E641CE9F2AC16067D63172 /* OCVComplex.m in Sources */, 67E647A36EE5D1F16353A215 /* OCVRect.m in Sources */, 67E64776786FCF3C6717E47E /* OCVScalar.m in Sources */, 67E64DD6519A59AAABD4B224 /* OCVUMat.m in Sources */, 67E646DDD3DE39D2D7C8D936 /* OCVOperation+Transform.mm in Sources */, 67E642E40A844657959DAB84 /* OCVOperation+Bitwise.mm in Sources */, 67E647D322F01061FBD19528 /* OCVOperation.mm in Sources */, 67E64E27B72E603F164AD432 /* OCVVector.m in Sources */, 67E647D10B4E166E041A9B8D /* OCVAlgorithm.m in Sources */, 67E645A832B070AB94DE46CF /* OCVPCA.mm in Sources */, 67E641A0E84C3661DCAE643F /* OCVSVD.mm in Sources */, 38C0D9201E7D771300246963 /* OCVContrastLimitedAdaptiveHistogramEqualization.m in Sources */, 67E6470893E985806C173E68 /* OCVRandomGenerator.mm in Sources */, 67E648D0AA7CBC940CD83B4C /* OCVLDA.mm in Sources */, 67E64B5D0527B760FE0161D7 /* OCVMinimumMaximum.m in Sources */, 67E6434338BC40333D7F777C /* OCVInputArray.mm in Sources */, 67E64ACB7AC9146ABC81AF5C /* OCVInputOutputArray.mm in Sources */, 67E643CAD65DD5E9C86957D0 /* OCVOutputArray.mm in Sources */, 67E643FC3D2EF70F92993806 /* OCVFormatter.m in Sources */, 67E64AB04DF01AC5F2DC4632 /* OCVTermCriteria.m in Sources */, 67E6453125423AC48F3D4C54 /* OCVCascadeClassifier.mm in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; 38B4D4B51E2AA01F008AAAB0 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 38B4D4BF1E2AA01F008AAAB0 /* LegoCVTests.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; 38B4D4CC1E2AA110008AAAB0 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 3897186F1E3618BC00CB02B4 /* FaceDetector.swift in Sources */, 389718691E36175E00CB02B4 /* LiveCameraVC.swift in Sources */, 38B4D4D31E2AA110008AAAB0 /* AppDelegate.swift in Sources */, 3897186D1E3618B200CB02B4 /* FaceRecognizer.swift in Sources */, 3897186B1E36176B00CB02B4 /* FaceRecognitionVC.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ 381F150E1E2AA22A0072F870 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = 38B4D4AF1E2AA01F008AAAB0 /* LegoCV */; targetProxy = 381F150D1E2AA22A0072F870 /* PBXContainerItemProxy */; }; 388B229621863CF000F24D45 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = 388B228A21863CF000F24D45 /* LegoSwiftCV */; targetProxy = 388B229521863CF000F24D45 /* PBXContainerItemProxy */; }; 388B229821863CF000F24D45 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = 38B4D4CF1E2AA110008AAAB0 /* FaceDetection */; targetProxy = 388B229721863CF000F24D45 /* PBXContainerItemProxy */; }; 388B229F21863CF000F24D45 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = 388B228A21863CF000F24D45 /* LegoSwiftCV */; targetProxy = 388B229E21863CF000F24D45 /* PBXContainerItemProxy */; }; 38B4D4BC1E2AA01F008AAAB0 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = 38B4D4AF1E2AA01F008AAAB0 /* LegoCV */; targetProxy = 38B4D4BB1E2AA01F008AAAB0 /* PBXContainerItemProxy */; }; 38C5B0C422948865009D2D68 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = 38B4D4CF1E2AA110008AAAB0 /* FaceDetection */; targetProxy = 38C5B0C322948865009D2D68 /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ /* Begin PBXVariantGroup section */ 38B4D4D61E2AA110008AAAB0 /* Main.storyboard */ = { isa = PBXVariantGroup; children = ( 38B4D4D71E2AA110008AAAB0 /* Base */, ); name = Main.storyboard; sourceTree = ""; }; 38B4D4DB1E2AA111008AAAB0 /* LaunchScreen.storyboard */ = { isa = PBXVariantGroup; children = ( 38B4D4DC1E2AA111008AAAB0 /* Base */, ); name = LaunchScreen.storyboard; sourceTree = ""; }; /* End PBXVariantGroup section */ /* Begin XCBuildConfiguration section */ 388B22A321863CF000F24D45 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; CLANG_ENABLE_OBJC_WEAK = YES; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = 289M6XEDV4; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; GCC_C_LANGUAGE_STANDARD = gnu11; INFOPLIST_FILE = LegoSwiftCV/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = com.unifiedsense.LegoSwiftCV; PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; SKIP_INSTALL = YES; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; 388B22A421863CF000F24D45 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; CLANG_ENABLE_OBJC_WEAK = YES; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Automatic; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = 289M6XEDV4; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; GCC_C_LANGUAGE_STANDARD = gnu11; INFOPLIST_FILE = LegoSwiftCV/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = com.unifiedsense.LegoSwiftCV; PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; SKIP_INSTALL = YES; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Release; }; 388B22A621863CF000F24D45 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; CLANG_ENABLE_OBJC_WEAK = YES; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_IDENTITY = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; DEVELOPMENT_TEAM = 289M6XEDV4; GCC_C_LANGUAGE_STANDARD = gnu11; INFOPLIST_FILE = LegoSwiftCVTests/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 12.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = com.unifiedsense.LegoSwiftCVTests; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/FaceDetection.app/FaceDetection"; }; name = Debug; }; 388B22A721863CF000F24D45 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; CLANG_ENABLE_OBJC_WEAK = YES; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_IDENTITY = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; DEVELOPMENT_TEAM = 289M6XEDV4; GCC_C_LANGUAGE_STANDARD = gnu11; INFOPLIST_FILE = LegoSwiftCVTests/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 12.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = com.unifiedsense.LegoSwiftCVTests; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/FaceDetection.app/FaceDetection"; }; name = Release; }; 38B4D4C21E2AA020008AAAB0 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = NO; CURRENT_PROJECT_VERSION = 1; DEBUG_INFORMATION_FORMAT = dwarf; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_DYNAMIC_NO_PIC = NO; GCC_NO_COMMON_BLOCKS = YES; GCC_OPTIMIZATION_LEVEL = 0; GCC_PREPROCESSOR_DEFINITIONS = ( "DEBUG=1", "$(inherited)", ); GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNDECLARED_SELECTOR = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; IPHONEOS_DEPLOYMENT_TARGET = 10.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; name = Debug; }; 38B4D4C31E2AA020008AAAB0 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = NO; CURRENT_PROJECT_VERSION = 1; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_NO_COMMON_BLOCKS = YES; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNDECLARED_SELECTOR = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; IPHONEOS_DEPLOYMENT_TARGET = 10.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; name = Release; }; 38B4D4C51E2AA020008AAAB0 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { CLANG_ENABLE_MODULES = YES; CODE_SIGN_IDENTITY = ""; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = 289M6XEDV4; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; FRAMEWORK_SEARCH_PATHS = ../ios; INFOPLIST_FILE = LegoCV/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.unifiedsense.LegoCV; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 3.0; }; name = Debug; }; 38B4D4C61E2AA020008AAAB0 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { CLANG_ENABLE_MODULES = YES; CODE_SIGN_IDENTITY = ""; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = 289M6XEDV4; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; FRAMEWORK_SEARCH_PATHS = ../ios; INFOPLIST_FILE = LegoCV/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.unifiedsense.LegoCV; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; SWIFT_VERSION = 3.0; }; name = Release; }; 38B4D4C81E2AA020008AAAB0 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { DEVELOPMENT_TEAM = 289M6XEDV4; INFOPLIST_FILE = LegoCVTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.unifiedsense.LegoCVTests; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/FaceDetection.app/FaceDetection"; }; name = Debug; }; 38B4D4C91E2AA020008AAAB0 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { DEVELOPMENT_TEAM = 289M6XEDV4; INFOPLIST_FILE = LegoCVTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.unifiedsense.LegoCVTests; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/FaceDetection.app/FaceDetection"; }; name = Release; }; 38B4D4E01E2AA111008AAAB0 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_IDENTITY = "iPhone Developer"; DEVELOPMENT_TEAM = 289M6XEDV4; FRAMEWORK_SEARCH_PATHS = ../ios; INFOPLIST_FILE = FaceDetection/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.unifiedsense.legocv.FaceDetection; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; }; name = Debug; }; 38B4D4E11E2AA111008AAAB0 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_IDENTITY = "iPhone Developer"; DEVELOPMENT_TEAM = 289M6XEDV4; FRAMEWORK_SEARCH_PATHS = ../ios; INFOPLIST_FILE = FaceDetection/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.unifiedsense.legocv.FaceDetection; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; }; name = Release; }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ 388B22A221863CF000F24D45 /* Build configuration list for PBXNativeTarget "LegoSwiftCV" */ = { isa = XCConfigurationList; buildConfigurations = ( 388B22A321863CF000F24D45 /* Debug */, 388B22A421863CF000F24D45 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; 388B22A521863CF000F24D45 /* Build configuration list for PBXNativeTarget "LegoSwiftCVTests" */ = { isa = XCConfigurationList; buildConfigurations = ( 388B22A621863CF000F24D45 /* Debug */, 388B22A721863CF000F24D45 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; 38B4D4AA1E2AA01F008AAAB0 /* Build configuration list for PBXProject "LegoCV" */ = { isa = XCConfigurationList; buildConfigurations = ( 38B4D4C21E2AA020008AAAB0 /* Debug */, 38B4D4C31E2AA020008AAAB0 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; 38B4D4C41E2AA020008AAAB0 /* Build configuration list for PBXNativeTarget "LegoCV" */ = { isa = XCConfigurationList; buildConfigurations = ( 38B4D4C51E2AA020008AAAB0 /* Debug */, 38B4D4C61E2AA020008AAAB0 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; 38B4D4C71E2AA020008AAAB0 /* Build configuration list for PBXNativeTarget "LegoCVTests" */ = { isa = XCConfigurationList; buildConfigurations = ( 38B4D4C81E2AA020008AAAB0 /* Debug */, 38B4D4C91E2AA020008AAAB0 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; 38B4D4DF1E2AA111008AAAB0 /* Build configuration list for PBXNativeTarget "FaceDetection" */ = { isa = XCConfigurationList; buildConfigurations = ( 38B4D4E01E2AA111008AAAB0 /* Debug */, 38B4D4E11E2AA111008AAAB0 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; /* End XCConfigurationList section */ }; rootObject = 38B4D4A71E2AA01F008AAAB0 /* Project object */; } ================================================ FILE: LegoCV/LegoCV.xcodeproj/project.xcworkspace/contents.xcworkspacedata ================================================ ================================================ FILE: LegoCV/LegoCV.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist ================================================ IDEDidComputeMac32BitWarning ================================================ FILE: LegoCV/LegoCV.xcodeproj/xcshareddata/xcschemes/LegoCV.xcscheme ================================================ ================================================ FILE: LegoCV/LegoCV.xcodeproj/xcshareddata/xcschemes/LegoSwiftCV.xcscheme ================================================ ================================================ FILE: LegoCV/LegoCVTests/Info.plist ================================================ CFBundleDevelopmentRegion en CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleName $(PRODUCT_NAME) CFBundlePackageType BNDL CFBundleShortVersionString 1.0 CFBundleVersion 1 ================================================ FILE: LegoCV/LegoCVTests/LegoCVTests.swift ================================================ // // LegoCVTests.swift // LegoCVTests // // Created by Dal Rupnik on 14/01/2017. // Copyright © 2017 Unified Sense. All rights reserved. // import XCTest @testable import LegoCV class LegoCVTests: XCTestCase { override func setUp() { super.setUp() // Put setup code here. This method is called before the invocation of each test method in the class. } override func tearDown() { // Put teardown code here. This method is called after the invocation of each test method in the class. super.tearDown() } func testExample() { // This is an example of a functional test case. // Use XCTAssert and related functions to verify your tests produce the correct results. } func testPerformanceExample() { // This is an example of a performance test case. self.measure { // Put the code you want to measure the time of here. } } } ================================================ FILE: LegoCV/LegoSwiftCV/Core/Matrix.swift ================================================ // // Matrix.swift // LegoCV // // Created by Dal Rupnik on 10/28/18. // Copyright © 2018 Unified Sense. All rights reserved. // import Foundation import LegoCV public class Matrix : OCVMat { } ================================================ FILE: LegoCV/LegoSwiftCV/Info.plist ================================================ CFBundleDevelopmentRegion $(DEVELOPMENT_LANGUAGE) CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleName $(PRODUCT_NAME) CFBundlePackageType FMWK CFBundleShortVersionString 1.0.0 CFBundleVersion $(CURRENT_PROJECT_VERSION) ================================================ FILE: LegoCV/LegoSwiftCV/LegoSwiftCV.h ================================================ // // LegoSwiftCV.h // LegoSwiftCV // // Created by Dal Rupnik on 10/28/18. // Copyright © 2018 Unified Sense. All rights reserved. // #import //! Project version number for LegoSwiftCV. FOUNDATION_EXPORT double LegoSwiftCVVersionNumber; //! Project version string for LegoSwiftCV. FOUNDATION_EXPORT const unsigned char LegoSwiftCVVersionString[]; // In this header, you should import all the public headers of your framework using statements like #import ================================================ FILE: LegoCV/LegoSwiftCVTests/Info.plist ================================================ CFBundleDevelopmentRegion $(DEVELOPMENT_LANGUAGE) CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleName $(PRODUCT_NAME) CFBundlePackageType BNDL CFBundleShortVersionString 1.0 CFBundleVersion 1 ================================================ FILE: LegoCV/LegoSwiftCVTests/LegoSwiftCVTests.swift ================================================ // // LegoSwiftCVTests.swift // LegoSwiftCVTests // // Created by Dal Rupnik on 10/28/18. // Copyright © 2018 Unified Sense. All rights reserved. // import XCTest @testable import LegoSwiftCV class LegoSwiftCVTests: XCTestCase { override func setUp() { // Put setup code here. This method is called before the invocation of each test method in the class. } override func tearDown() { // Put teardown code here. This method is called after the invocation of each test method in the class. } func testExample() { // This is an example of a functional test case. // Use XCTAssert and related functions to verify your tests produce the correct results. } func testPerformanceExample() { // This is an example of a performance test case. self.measure { // Put the code you want to measure the time of here. } } } ================================================ FILE: LegoCV/Playgrounds/MatrixOperations.playground/Contents.swift ================================================ //: A UIKit based Playground for presenting user interface import LegoCV import LegoSwiftCV import UIKit import PlaygroundSupport //let matrix = Matrix.zeros(withRows: 2, cols: 2, type: .cv8U, channels: 3) let mat = OCVMat() let copy = mat.clone() let image = UIImage(named: "test1") // Present the view controller in the Live View window PlaygroundPage.current.liveView = UIImageView(image: image) ================================================ FILE: LegoCV/Playgrounds/MatrixOperations.playground/contents.xcplayground ================================================ ================================================ FILE: LegoCV.podspec ================================================ Pod::Spec.new do |s| s.name = 'LegoCV' s.version = '0.1.2' s.summary = 'Simple, lightweight native OpenCV wrapper for Objective-C and Swift.' s.description = <<-DESC LegoCV is native OpenCV framework built for Swift and Objective-C projects. It eliminates the need to use Objective-C++ and allows for full compatibility with native Swift projects. The only dependency is native OpenCV framework for iOS. DESC s.homepage = 'https://github.com/legoless/legocv' # s.screenshots = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2' s.license = { :type => '3-clause BSD', :file => 'LICENSE' } s.author = { 'Dal Rupnik' => 'legoless@gmail.com' } s.source = { :git => 'https://github.com/legoless/legocv.git', :tag => s.version.to_s } s.social_media_url = 'https://twitter.com/thelegoless' s.ios.deployment_target = '10.0' s.public_header_files = 'LegoCV/LegoCV/LegoCV.h' s.source_files = 'LegoCV/LegoCV/LegoCV.h' s.subspec 'Core' do |subspec| subspec.public_header_files = 'LegoCV/LegoCV/Wrapper/Core/**/*.h', 'LegoCV/LegoCV/Wrapper/Utilities/**/*.h', subspec.private_header_files = 'LegoCV/LegoCV/Wrapper/Core/Private/*.h' subspec.source_files = 'LegoCV/LegoCV/Wrapper/Core/**/*.{h,m,mm}', 'LegoCV/LegoCV/Wrapper/Utilities/**/*.{h,m,mm}' subspec.dependency 'OpenCV-Dynamic' end s.subspec 'ImageProcessing' do |subspec| subspec.public_header_files = 'LegoCV/LegoCV/Wrapper/ImageProcessing/**/*.h' #subspec.private_header_files = 'LegoCV/LegoCV/Wrapper/Core/Private/*.h' subspec.source_files = 'LegoCV/LegoCV/Wrapper/ImageProcessing/**/*.{h,m,mm}' subspec.dependency 'LegoCV/Core' end s.frameworks = 'UIKit' end ================================================ FILE: README.md ================================================ # LegoCV LegoCV is native OpenCV framework built for Swift and Objective-C projects. It eliminates the need to use Objective-C++ and write bringing code, and allows for full compatibility with native Swift projects. The only dependency is the native [OpenCV framework](http://opencv.org) for **iOS** (*and later macOS and tvOS*). ## Vision Swift is one of the fastest evolving languages, but there is currently no way to use C++ frameworks directly, as it was possible be with Objective-C/C++. This project's purpose is to create a simple, easy to use native Swift framework for OpenCV. The project adds Swift and Objective-C convenience methods, but translates to OpenCV API entirely. *The idea is to simply wrap OpenCV native C++ classes into lightweight Objective-C classes, which are then natively bridged to Swift, providing a thin layer on top of native OpenCV. [Realm](https://realm.io) and [EmguCV](http://www.emgu.com) in C# use similar framework structure. Possibility for fully native cross-platform Swift version of OpenCV exists in the future.* ## Example The following examples display the difference with using LegoCV in Swift or Objective-C compared to vanilla OpenCV in C++. The example is extracted from Face detection sample code, included with LegoCV. On iOS it uses `OCVVideoCamera` wrapper class to get image stream from camera (wraps OpenCV's `CvVideoCamera`, to keep backward compatibility). #### Swift (LegoCV): ```swift let faceDetector = OCVCascadeClassifier(); faceDetector.load(path: "haarcascade_frontalface_alt2.xml") func process(image: OCVMat) { let scale = 2.0 let minSize = OCVSize(width: 30, height: 30) let size = CGSize(width: 140.0, height: 140.00).ocvSize let gray = OCVMat() let smallImage = OCVMat(rows: Int(round(Double(image.rows) / scale)), cols: Int(round(Double(image.cols) / scale)), type: .cv8U, channels: 1) // // OpenCV Default Syntax requires to predefine both input and output // OCVOperation.convertColor(from: image, to: gray, with: .BGR2GRAY) // // LegoCV syntactic sugar allows you to perform operations directly on the input, only defining output. // image.convertColor(to: gray, with: .BGR2GRAY) let grayImg = image.convertColor(with: .BGR2GRAY) OCVOperation.convertColor(from: image, to: gray, with: .BGR2GRAY) OCVOperation.resize(from: gray, to: smallImage, size: smallImage.size, fx: 0, fy: 0, interpolation: .linear) OCVOperation.equalizeHistogram(from: smallImage, to: smallImage) // // Faces are returned as OCVRect instances, so they are mapped in Swift, as they are structs. // var faces : [OCVRect] = faceDetector.detectMultiscale(with: smallImage, scaleFactor: 1.1, minNeighbours: 2, flags: 0, minSize: minSize).map { $0.rect } // // More LegoCV objective syntactic sugar // let result : OCVCascadeClassifierResult = faceDetector.detectMultiscale(on: smallImage, with: OCVCascadeClassifierOptions.default) faces = result.objects } ``` #### Objective-C (LegoCV with Objective-C): ```objectivec - (void)setupClassifier { self.faceDetector = [[OCVCascadeClassifier alloc] init]; [self.faceDetector loadPath:@"haarcascade_frontalface_alt2.xml"]; } - (void)processImage:(OCVMat *)image { double scale = 2.0; OCVSize minSize; minSize.width = 30; minSize.height = 30; OCVMat* gray = [[OCVMat alloc] init]; OCVMat* smallImage = [[OCVMat alloc] initWithRows:round(image.rows / scale) cols:round(image.cols / scale) type: OCVDepthTypeCv8U, channels: 1) [OCVOperation convertColorFromSource:image toDestination:gray with:OCVColorConversionTypeBGR2GRAY]; [OCVOperation resizeFromSource:gray toDestination:smallImage size:smallImage.size fx:0 fy:0 interpolation:OCVInterpolationTypeLinear]; [OCVOperation equalizeHistogramFromSource:smallImage toDestination:smallImage]; // // Faces are returned as OCVRectValue instances, which wrap OCVRect structs. // NSArray* faces = [self.faceDetector detectMultiscaleWith:smallImage scaleFactor:1.1 minNeighbours:2 flags: 0 minSize:minSize]; // // Call the face detector classifier // OCVCascadeClassifierResult* result = [self.faceDetector detectMultiScaleOnImage:smallImage withOptions:[OCVCascadeClassifierOptions defaultOptions]]; } ``` #### C++ (OpenCV): ```cpp using namespace cv; void setup () { _faceDetector = new CascadeClassifier(); _faceDetector->load("haarcascade_frontalface_alt2.xml"); } void processImage(cv::Mat img) { double scale = 2.0; Mat gray, smallImg( cvRound (img.rows/scale), cvRound(img.cols/scale), CV_8UC1 ); cvtColor( img, gray, COLOR_BGR2GRAY ); resize( gray, smallImg, smallImg.size(), 0, 0, INTER_LINEAR ); equalizeHist( smallImg, smallImg ); cv::Size minSize(30,30); vector faceRects; // Faces are returned in provided faceRects vector _faceDetector->detectMultiScale(smallImg, faceRects, 1.1, 2, 0, minSize); } ``` More examples, including Swift playgrounds can be found in the sample project. ## Documentation As this is a project in progress, documentation will be added to [Wiki]() as development progresses. ## Performance There is a smaller performance impact compared to pure native C++ code of OpenCV, due to Objective-C messaging system. If you need a high performance code, it is still recommended to write the algorithm in C++ and add bridges to LegoCV or Objective-C. ## Installation ### Prerequisites For LegoCV you need `cmake`. Install it with `brew install cmake` and make sure you have Xcode Command Line tools installed. Trigger with `xcode-select --install` to check. Also make sure you use latest Xcode version and not Beta for master branch. ### CocoaPods LegoCV can be installed with [CocoaPods](https://cocoapods.org) or [Carthage](https://github.com/Carthage/Carthage). It's only dependency is OpenCV framework, which can be downloaded from their website. ```ruby pod 'LegoCV' # Use only specific modules pod 'LegoCV/Core' pod 'LegoCV/VideoIO' ``` *LegoCV supports iOS 8 and higher.* ### Example Project 1. First clone the project: `git clone git@github.com:legoless/legocv.git` `cd legocv` 2. Initialize submodules ``` git submodule init git submodule update ``` 3. Build `opencv2.framework` from git repository. ``` /usr/bin/python opencv/platforms/ios/build_framework.py ios --dynamic ``` 4. Open `LegoCV.xcodeproj` and build. # License [BSD license](https://github.com/legoless/legocv/blob/master/LICENSE), respect [OpenCV](https://github.com/opencv/opencv/blob/master/LICENSE) license as well.