[
  {
    "path": ".gitignore",
    "content": "# OS X\n.DS_Store\n\n## Build generated\nios/\nopencv2.framework/\nbuild/\nDerivedData\n\n## Various settings\n*.pbxuser\n!default.pbxuser\n*.mode1v3\n!default.mode1v3\n*.mode2v3\n!default.mode2v3\n*.perspectivev3\n!default.perspectivev3\nxcuserdata\n\n## Other\n*.xccheckout\n*.moved-aside\n*.xcuserstate\n*.xcscmblueprint\n\n## Obj-C/Swift specific\n*.hmap\n*.ipa\n*.dSYM.zip\n*.dSYM\n\n## Playgrounds\ntimeline.xctimeline\nplayground.xcworkspace\n\n# Swift Package Manager\n#\n# Add this line if you want to avoid checking in source code from Swift Package Manager dependencies.\n# Packages/\n.build/\n\n# CocoaPods\n#\n# We recommend against adding the Pods directory to your .gitignore. However\n# you should judge for yourself, the pros and cons are mentioned at:\n# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control\n#\n# Pods/\n\n# Carthage\n#\n# Add this line if you want to avoid checking in source code from Carthage dependencies.\n# Carthage/Checkouts\n\nCarthage/Build\n\n# fastlane\n#\n# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the \n# screenshots whenever they are needed.\n# For more information about the recommended setup visit:\n# https://github.com/fastlane/fastlane/blob/master/docs/Gitignore.md\n\nfastlane/report.xml\nfastlane/Preview.html\nfastlane/screenshots\nfastlane/test_output\n\n#\n# Code Coverage\n#\n*.gcda\n*.gcno\n\n#\n# AppCode\n#\n.idea/\n\n#\n# Dominus\n#\ndominus.cfg\n\n#\n# KZBootstrap\n#\nKZBootstrapUserMacros.h\n\n#\n# R.swift\n#\n*.generated.swift\n"
  },
  {
    "path": ".gitmodules",
    "content": "[submodule \"opencv\"]\n\tpath = opencv\n\turl = https://github.com/opencv/opencv.git\n"
  },
  {
    "path": "LICENSE",
    "content": "By downloading, copying, installing or using the software you agree to this license.\nIf you do not agree to this license, do not download, install,\ncopy or use the software.\n\n\n                          License Agreement\n               For Open Source Computer Vision Library\n                       (3-clause BSD License)\n\nCopyright (C) 2000-2016, Intel Corporation, all rights reserved.\nCopyright (C) 2009-2011, Willow Garage Inc., all rights reserved.\nCopyright (C) 2009-2016, NVIDIA Corporation, all rights reserved.\nCopyright (C) 2010-2013, Advanced Micro Devices, Inc., all rights reserved.\nCopyright (C) 2015-2016, OpenCV Foundation, all rights reserved.\nCopyright (C) 2015-2016, Itseez Inc., all rights reserved.\nCopyright (C) 2016-2017, Unified Sense, all rights reserved.\n\nThird party copyrights are property of their respective owners.\n\nRedistribution and use in source and binary forms, with or without modification,\nare permitted provided that the following conditions are met:\n\n  * Redistributions of source code must retain the above copyright notice,\n    this list of conditions and the following disclaimer.\n\n  * Redistributions in binary form must reproduce the above copyright notice,\n    this list of conditions and the following disclaimer in the documentation\n    and/or other materials provided with the distribution.\n\n  * Neither the names of the copyright holders nor the names of the contributors\n    may be used to endorse or promote products derived from this software\n    without specific prior written permission.\n\nThis software is provided by the copyright holders and contributors \"as is\" and\nany express or implied warranties, including, but not limited to, the implied\nwarranties of merchantability and fitness for a particular purpose are disclaimed.\nIn no event shall copyright holders or contributors be liable for any direct,\nindirect, incidental, special, exemplary, or consequential damages\n(including, but not limited to, procurement of substitute goods or services;\nloss of use, data, or profits; or business interruption) however caused\nand on any theory of liability, whether in contract, strict liability,\nor tort (including negligence or otherwise) arising in any way out of\nthe use of this software, even if advised of the possibility of such damage.\n"
  },
  {
    "path": "LegoCV/FaceDetection/AppDelegate.swift",
    "content": "//\n//  AppDelegate.swift\n//  FaceDetection\n//\n//  Created by Dal Rupnik on 14/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\nimport UIKit\n\n@UIApplicationMain\nclass AppDelegate: UIResponder, UIApplicationDelegate {\n\n    var window: UIWindow?\n\n\n    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {\n        // Override point for customization after application launch.\n        return true\n    }\n\n    func applicationWillResignActive(_ application: UIApplication) {\n        // 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.\n        // Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game.\n    }\n\n    func applicationDidEnterBackground(_ application: UIApplication) {\n        // 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.\n        // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.\n    }\n\n    func applicationWillEnterForeground(_ application: UIApplication) {\n        // 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.\n    }\n\n    func applicationDidBecomeActive(_ application: UIApplication) {\n        // 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.\n    }\n\n    func applicationWillTerminate(_ application: UIApplication) {\n        // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.\n    }\n\n\n}\n\n"
  },
  {
    "path": "LegoCV/FaceDetection/Assets.xcassets/AppIcon.appiconset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"29x29\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"29x29\",\n      \"scale\" : \"3x\"\n    },\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"40x40\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"40x40\",\n      \"scale\" : \"3x\"\n    },\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"60x60\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"60x60\",\n      \"scale\" : \"3x\"\n    },\n    {\n      \"idiom\" : \"ipad\",\n      \"size\" : \"29x29\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"ipad\",\n      \"size\" : \"29x29\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"ipad\",\n      \"size\" : \"40x40\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"ipad\",\n      \"size\" : \"40x40\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"ipad\",\n      \"size\" : \"76x76\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"ipad\",\n      \"size\" : \"76x76\",\n      \"scale\" : \"2x\"\n    }\n  ],\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "LegoCV/FaceDetection/Base.lproj/LaunchScreen.storyboard",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3.0\" toolsVersion=\"11134\" systemVersion=\"15F34\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" launchScreen=\"YES\" useTraitCollections=\"YES\" colorMatched=\"YES\" initialViewController=\"01J-lp-oVM\">\n    <dependencies>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"11106\"/>\n        <capability name=\"documents saved in the Xcode 8 format\" minToolsVersion=\"8.0\"/>\n    </dependencies>\n    <scenes>\n        <!--View Controller-->\n        <scene sceneID=\"EHf-IW-A2E\">\n            <objects>\n                <viewController id=\"01J-lp-oVM\" sceneMemberID=\"viewController\">\n                    <layoutGuides>\n                        <viewControllerLayoutGuide type=\"top\" id=\"Llm-lL-Icb\"/>\n                        <viewControllerLayoutGuide type=\"bottom\" id=\"xb3-aO-Qok\"/>\n                    </layoutGuides>\n                    <view key=\"view\" contentMode=\"scaleToFill\" id=\"Ze5-6b-2t3\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"375\" height=\"667\"/>\n                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                        <color key=\"backgroundColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                    </view>\n                </viewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"iYj-Kq-Ea1\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"53\" y=\"375\"/>\n        </scene>\n    </scenes>\n</document>\n"
  },
  {
    "path": "LegoCV/FaceDetection/Base.lproj/Main.storyboard",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3.0\" toolsVersion=\"11762\" systemVersion=\"16D32\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" useTraitCollections=\"YES\" colorMatched=\"YES\" initialViewController=\"BYZ-38-t0r\">\n    <device id=\"retina4_7\" orientation=\"portrait\">\n        <adaptation id=\"fullscreen\"/>\n    </device>\n    <dependencies>\n        <deployment identifier=\"iOS\"/>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"11757\"/>\n        <capability name=\"documents saved in the Xcode 8 format\" minToolsVersion=\"8.0\"/>\n    </dependencies>\n    <scenes>\n        <!--Live CameraVC-->\n        <scene sceneID=\"tne-QT-ifu\">\n            <objects>\n                <viewController id=\"BYZ-38-t0r\" customClass=\"LiveCameraVC\" customModule=\"FaceDetection\" customModuleProvider=\"target\" sceneMemberID=\"viewController\">\n                    <layoutGuides>\n                        <viewControllerLayoutGuide type=\"top\" id=\"y3c-jy-aDJ\"/>\n                        <viewControllerLayoutGuide type=\"bottom\" id=\"wfy-db-euE\"/>\n                    </layoutGuides>\n                    <view key=\"view\" contentMode=\"scaleToFill\" id=\"8bC-Xf-vdC\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"375\" height=\"667\"/>\n                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                        <subviews>\n                            <imageView userInteractionEnabled=\"NO\" contentMode=\"scaleToFill\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"pXO-Z5-B2E\">\n                                <rect key=\"frame\" x=\"0.0\" y=\"20\" width=\"375\" height=\"647\"/>\n                            </imageView>\n                        </subviews>\n                        <color key=\"backgroundColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                        <constraints>\n                            <constraint firstAttribute=\"trailing\" secondItem=\"pXO-Z5-B2E\" secondAttribute=\"trailing\" id=\"AKd-bE-SzF\"/>\n                            <constraint firstItem=\"wfy-db-euE\" firstAttribute=\"top\" secondItem=\"pXO-Z5-B2E\" secondAttribute=\"bottom\" id=\"S8x-2q-rUP\"/>\n                            <constraint firstItem=\"pXO-Z5-B2E\" firstAttribute=\"leading\" secondItem=\"8bC-Xf-vdC\" secondAttribute=\"leading\" id=\"mGQ-r7-FOS\"/>\n                            <constraint firstItem=\"pXO-Z5-B2E\" firstAttribute=\"top\" secondItem=\"y3c-jy-aDJ\" secondAttribute=\"bottom\" id=\"rdg-yv-HlE\"/>\n                        </constraints>\n                    </view>\n                    <connections>\n                        <outlet property=\"cameraView\" destination=\"pXO-Z5-B2E\" id=\"mwQ-Mv-E85\"/>\n                    </connections>\n                </viewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"dkx-z0-nzr\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"140\" y=\"138.98050974512745\"/>\n        </scene>\n    </scenes>\n</document>\n"
  },
  {
    "path": "LegoCV/FaceDetection/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>en</string>\n\t<key>CFBundleExecutable</key>\n\t<string>$(EXECUTABLE_NAME)</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>$(PRODUCT_NAME)</string>\n\t<key>CFBundlePackageType</key>\n\t<string>APPL</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>1.0.0</string>\n\t<key>CFBundleVersion</key>\n\t<string>1</string>\n\t<key>LSRequiresIPhoneOS</key>\n\t<true/>\n\t<key>NSCameraUsageDescription</key>\n\t<string>Face Detection</string>\n\t<key>UILaunchStoryboardName</key>\n\t<string>LaunchScreen</string>\n\t<key>UIMainStoryboardFile</key>\n\t<string>Main</string>\n\t<key>UIRequiredDeviceCapabilities</key>\n\t<array>\n\t\t<string>armv7</string>\n\t</array>\n\t<key>UISupportedInterfaceOrientations</key>\n\t<array>\n\t\t<string>UIInterfaceOrientationPortrait</string>\n\t\t<string>UIInterfaceOrientationLandscapeLeft</string>\n\t\t<string>UIInterfaceOrientationLandscapeRight</string>\n\t</array>\n\t<key>UISupportedInterfaceOrientations~ipad</key>\n\t<array>\n\t\t<string>UIInterfaceOrientationPortrait</string>\n\t\t<string>UIInterfaceOrientationPortraitUpsideDown</string>\n\t\t<string>UIInterfaceOrientationLandscapeLeft</string>\n\t\t<string>UIInterfaceOrientationLandscapeRight</string>\n\t</array>\n</dict>\n</plist>\n"
  },
  {
    "path": "LegoCV/FaceDetection/Recognition/FaceDetector.swift",
    "content": "//\n//  FaceDetector.swift\n//  LegoCV\n//\n//  Created by Dal Rupnik on 23/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\nimport LegoCV\n\nclass FaceDetector : NSObject, OCVVideoCameraDelegate {\n    private var imageView : UIImageView\n    private var scale : CGFloat\n    \n    private var faceRects : [OCVRect] = []\n    private var faceImgs : [OCVMat] = []\n    \n    private var faceDetector = OCVCascadeClassifier()\n    \n    var videoCamera : OCVVideoCamera!\n    \n    init(imageView: UIImageView, scale: CGFloat) {\n        self.imageView = imageView\n        self.scale = scale\n        \n        super.init()\n        \n        setupCamera()\n        setupClassifier()\n    }\n    \n    func startCapture () {\n        videoCamera.start()\n    }\n    \n    func stopCapture () {\n        videoCamera.stop()\n    }\n    \n    func detectedFaces () -> [CGRect] {\n        var rects : [CGRect] = []\n        \n        for faceRect in faceRects {\n            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)\n            rects.append(rect)\n        }\n        \n        \n        return rects\n    }\n    \n    func face(with index: Int) -> UIImage? {\n        guard index < faceImgs.count else {\n            return nil\n        }\n        \n        return faceImgs[index].image()\n    }\n    \n    func processImage(_ image: OCVMat) {\n        let faces = detectFaces(on: image, with: Double(scale))\n\n        draw(faces: faces.0, on: image, with: faces.1)\n    }\n    \n    private func setupCamera () {\n        videoCamera = OCVVideoCamera(parentView: imageView)\n        videoCamera.defaultAVCaptureDevicePosition = .front\n        videoCamera.defaultAVCaptureSessionPreset = AVCaptureSession.Preset.vga640x480\n        videoCamera.defaultAVCaptureVideoOrientation = .portrait\n        videoCamera.defaultFPS = 30\n        videoCamera.grayscaleMode = false\n        videoCamera.delegate = self\n    }\n    \n    private func setupClassifier () {\n        if let path = Bundle.main.path(forResource: \"haarcascade_frontalface_alt2\", ofType: \"xml\", inDirectory: \"data/haarcascades\") {\n            faceDetector.loadPath(path)\n        }\n    }\n    \n    private func detectFaces (on image: OCVMat, with scale: Double) -> ([OCVRect], OCVMat) {\n        let scaleFactor = 1.1\n        let minRects = 2\n        var minSize = OCVSize()\n        minSize.width = 30\n        minSize.height = 30\n        \n        let gray = OCVMat()\n        let smallImage = OCVMat(rows: Int(round(Double(image.rows) / scale)), cols: Int(round(Double(image.cols) / scale)), type: .cv8U, channels: 1)\n        \n        OCVImageOperation.convertColor(fromSource: image, toDestination: gray, with: .typeBGR2GRAY)\n        OCVImageOperation.resize(fromSource: gray, toDestination: smallImage, size: smallImage.size, fx: 0, fy: 0, interpolation: .linear)\n        OCVImageOperation.equalizeHistogram(fromSource: smallImage, toDestination: smallImage)\n        \n        return (faceDetector.detectMultiScale(onImage: smallImage, scaleFactor: scaleFactor, minNeighbours: minRects, flags: 0, minSize: minSize).map { $0.rect }, smallImage)\n    }\n    \n    private func draw(faces: [OCVRect], on image: OCVMat, with smallImage: OCVMat) {\n        \n        let colors : [OCVScalar] = [\n            OCVScalar(r: 0, g: 0, b: 255),\n            OCVScalar(r: 0, g: 128, b: 255),\n            OCVScalar(r: 0, g: 255, b: 255),\n            OCVScalar(r: 0, g: 255, b: 0),\n            OCVScalar(r: 255, g: 128, b: 0),\n            OCVScalar(r: 255, g: 255, b: 0),\n            OCVScalar(r: 255, g: 0, b: 0),\n            OCVScalar(r: 255, g: 0, b: 255)\n        ]\n        \n        var faceImages : [OCVMat] = []\n        \n        var i = 0\n        \n        for face in faces {\n            let color = colors[i % colors.count]\n            \n            var point1 = OCVPoint()\n            point1.x = Int(CGFloat(face.origin.x) * scale)\n            point1.y = Int(CGFloat(face.origin.y) * scale)\n            \n            var point2 = OCVPoint()\n            point2.x = Int(CGFloat(face.origin.x + face.size.width - 1) * scale)\n            point2.y = Int(CGFloat(face.origin.y + face.size.height - 1) * scale)\n            \n            OCVImageOperation.rectangle(onSource: image, from: point1, to: point2, withColor: color, thickness: 1, lineType: 8, shift: 0)\n\n            let smallImageROI = smallImage.submatrix(with: face)\n            \n            faceImages.append(smallImageROI.clone())\n            \n            i += 1\n        }\n        \n        self.faceImgs = faceImages\n        \n    }\n}\n"
  },
  {
    "path": "LegoCV/FaceDetection/Recognition/FaceRecognizer.swift",
    "content": "//\n//  FaceRecognizer.swift\n//  LegoCV\n//\n//  Created by Dal Rupnik on 23/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\nimport UIKit\n\nclass FaceRecognizer: NSObject {\n\n}\n"
  },
  {
    "path": "LegoCV/FaceDetection/View Controllers/FaceRecognitionVC.swift",
    "content": "//\n//  FaceRecognitionVC.swift\n//  LegoCV\n//\n//  Created by Dal Rupnik on 23/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\nimport UIKit\n\nclass FaceRecognitionVC: UIViewController {\n\n    override func viewDidLoad() {\n        super.viewDidLoad()\n\n        // Do any additional setup after loading the view.\n    }\n\n    override func didReceiveMemoryWarning() {\n        super.didReceiveMemoryWarning()\n        // Dispose of any resources that can be recreated.\n    }\n    \n\n    /*\n    // MARK: - Navigation\n\n    // In a storyboard-based application, you will often want to do a little preparation before navigation\n    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {\n        // Get the new view controller using segue.destinationViewController.\n        // Pass the selected object to the new view controller.\n    }\n    */\n\n}\n"
  },
  {
    "path": "LegoCV/FaceDetection/View Controllers/LiveCameraVC.swift",
    "content": "//\n//  LiveCameraVC.swift\n//  LegoCV\n//\n//  Created by Dal Rupnik on 23/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\nimport UIKit\n\nclass LiveCameraVC: UIViewController {\n    \n    @IBOutlet weak var cameraView : UIImageView!\n    \n    var faceDetector : FaceDetector!\n\n    override func viewDidLoad() {\n        super.viewDidLoad()\n        \n        faceDetector = FaceDetector(imageView: cameraView, scale: 2.0)\n    }\n\n    override func viewDidAppear(_ animated: Bool) {\n        super.viewDidAppear(animated)\n        \n        faceDetector.startCapture()\n    }\n    \n    override func viewWillDisappear(_ animated: Bool) {\n        super.viewWillDisappear(animated)\n        \n        faceDetector.stopCapture()\n    }\n}\n\n"
  },
  {
    "path": "LegoCV/LegoCV/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>en</string>\n\t<key>CFBundleExecutable</key>\n\t<string>$(EXECUTABLE_NAME)</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>$(PRODUCT_NAME)</string>\n\t<key>CFBundlePackageType</key>\n\t<string>FMWK</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>1.0.0</string>\n\t<key>CFBundleVersion</key>\n\t<string>$(CURRENT_PROJECT_VERSION)</string>\n\t<key>NSPrincipalClass</key>\n\t<string></string>\n</dict>\n</plist>\n"
  },
  {
    "path": "LegoCV/LegoCV/LegoCV.h",
    "content": "//\n//  LegoCV.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 14/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n@import Foundation;\n\n//! Project version number for LegoCV.\nFOUNDATION_EXPORT double LegoCVVersionNumber;\n\n//! Project version string for LegoCV.\nFOUNDATION_EXPORT const unsigned char LegoCVVersionString[];\n\n// In this header, you should import all the public headers of your framework using statements like #import <LegoCV/PublicHeader.h>\n\n#if __has_include(\"OCVCore.h\")\n#import \"OCVCore.h\"\n#endif\n\n#if __has_include(\"OCVImageProcessing.h\")\n#import \"OCVImageProcessing.h\"\n#endif\n\n#if __has_include(\"OCVVideo.h\")\n#import \"OCVVideo.h\"\n#endif\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Aruco/OCVCharucoBoard.h",
    "content": "//\n//  OCVCharucoBoard.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVCharucoBoard : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Aruco/OCVCharucoBoard.m",
    "content": "//\n//  OCVCharucoBoard.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVCharucoBoard.h\"\n\n@implementation OCVCharucoBoard\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/BgSegm/OCVBackgroundSubtractorGMG.h",
    "content": "//\n//  OCVBackgroundSubtractorGMG.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVBackgroundSubtractorGMG : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/BgSegm/OCVBackgroundSubtractorGMG.m",
    "content": "//\n//  OCVBackgroundSubtractorGMG.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVBackgroundSubtractorGMG.h\"\n\n@implementation OCVBackgroundSubtractorGMG\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/BgSegm/OCVBackgroundSubtractorMOG.h",
    "content": "//\n//  OCVBackgroundSubtractorMOG.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVBackgroundSubtractorMOG : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/BgSegm/OCVBackgroundSubtractorMOG.m",
    "content": "//\n//  OCVBackgroundSubtractorMOG.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVBackgroundSubtractorMOG.h\"\n\n@implementation OCVBackgroundSubtractorMOG\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Core/Algorithms/OCVLDA.h",
    "content": "//\n//  OCVLDA.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 07/03/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n#import \"OCVInputArrayable.h\"\n#import \"OCVMat.h\"\n\nNS_ASSUME_NONNULL_BEGIN\n\n/*!\n *  Discriminant Analysis\n */\n@interface OCVLDA : OCVObject\n\n@property (nonatomic, readonly) OCVMat *eigenVectors;\n@property (nonatomic, readonly) OCVMat *eigenValues;\n\n- (instancetype)initWithNumberOfComponents:(NSInteger)numberOfComponents;\n- (instancetype)initWithSource:(NSArray<OCVInputArrayable> *)source labels:(id<OCVInputArrayable>)labels;\n- (instancetype)initWithSource:(NSArray<OCVInputArrayable> *)source labels:(id<OCVInputArrayable>)labels numberOfComponents:(NSInteger)numberOfComponents;\n\n//\n// TODO: Serializable implementation\n//\n\n- (void)computeWithSource:(NSArray<OCVInputArrayable> *)source labels:(id<OCVInputArrayable>)labels;\n\n- (OCVMat *)projectWithSource:(id<OCVInputArrayable>)source;\n- (OCVMat *)reconstructWithSource:(id<OCVInputArrayable>)source;\n\n+ (OCVMat *)subspaceProjectWithW:(id<OCVInputArrayable>)w mean:(id<OCVInputArrayable>)mean source:(id<OCVInputArrayable>)source;\n+ (OCVMat *)subspaceReconstructWithW:(id<OCVInputArrayable>)w mean:(id<OCVInputArrayable>)mean source:(id<OCVInputArrayable>)source;\n\n@end\n\nNS_ASSUME_NONNULL_END\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Core/Algorithms/OCVLDA.mm",
    "content": "//\n//  OCVLDA.mm\n//  LegoCV\n//\n//  Created by Dal Rupnik on 07/03/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVLDA.h\"\n\n@implementation OCVLDA\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Core/Algorithms/OCVPCA.h",
    "content": "//\n//  OCVPCA.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 06/03/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n#import \"OCVInputArrayable.h\"\n#import \"OCVOutputArrayable.h\"\n\n#import \"OCVMat.h\"\n\n/*!\n *  Reference type: cv::PCA Flags\n */\ntypedef NS_OPTIONS(NSInteger, OCVPCAFlags) {\n    OCVPCAFlagDataAsRow             = 0, //!< indicates that the input samples are stored as matrix rows\n    OCVPCAFlagDataAsColumn          = 1, //!< indicates that the input samples are stored as matrix columns\n    OCVPCAFlagUseAvg                = 2\n};\n\nNS_ASSUME_NONNULL_BEGIN\n\n/*!\n *  Principal Component Analysis\n */\n@interface OCVPCA : OCVObject\n\n@property (nonatomic, readonly) OCVMat* eigenVectors;\n@property (nonatomic, readonly) OCVMat* eigenValues;\n@property (nonatomic, readonly) OCVMat* mean;\n\n#pragma mark - Initialization\n\n- (instancetype)initWithData:(id<OCVInputArrayable>)data mean:(id<OCVInputArrayable>)mean flags:(OCVPCAFlags)flags maxComponents:(NSInteger)maxComponents;\n- (instancetype)initWithData:(id<OCVInputArrayable>)data mean:(id<OCVInputArrayable>)mean flags:(OCVPCAFlags)flags retainedVariance:(double)retainedVariance;\n\n#pragma mark - Public Methods\n\n- (OCVPCA *)performWithData:(id<OCVInputArrayable>)data mean:(id<OCVInputArrayable>)mean flags:(OCVPCAFlags)flags maxComponents:(NSInteger)maxComponents;\n- (OCVPCA *)performWithData:(id<OCVInputArrayable>)data mean:(id<OCVInputArrayable>)mean flags:(OCVPCAFlags)flags retainedVariance:(double)retainedVariance;\n\n- (OCVMat *)projectWithVector:(id<OCVInputArrayable>)vector;\n- (void)projectWithVector:(id<OCVInputArrayable>)vector toDestination:(id<OCVOutputArrayable>)destination;\n\n- (OCVMat *)backProjectWithVector:(id<OCVInputArrayable>)vector;\n- (void)backProjectWithVector:(id<OCVInputArrayable>)vector toDestination:(id<OCVOutputArrayable>)destination;\n\n//\n// TODO: Implement OCV FileStorage and OCV FileNode, for serialization\n//\n- (void)writeToPath:(NSString *)path;\n- (void)loadFrompath:(NSString *)path;\n\n@end\n\nNS_ASSUME_NONNULL_END\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Core/Algorithms/OCVPCA.mm",
    "content": "//\n//  OCVPCA.mm\n//  LegoCV\n//\n//  Created by Dal Rupnik on 06/03/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVPCA.h\"\n\n@implementation OCVPCA\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Core/Algorithms/OCVRandomGenerator.h",
    "content": "//\n//  OCVRandomGenerator.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 04/03/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n#import \"OCVInputArrayable.h\"\n#import \"OCVOutputArrayable.h\"\n#import \"OCVInputOutputArrayable.h\"\n\n#import \"OCVGeometry.h\"\n#import \"OCVTypes.h\"\n\ntypedef NS_ENUM(NSInteger, OCVRandomType) {\n    OCVRandomTypeUniform = 0,\n    OCVRandomTypeNormal = 1,\n};\n\n/*!\n *  cv::RNG\n */\n@interface OCVRandomGenerator : OCVObject\n\n@property (nonatomic, assign) unsigned long long state;\n\n#pragma mark - Initialization\n\n- (instancetype)initWithState:(unsigned long long)state;\n\n#pragma mark - Public Methods\n\n- (char)nextChar;\n- (unsigned char)nextUnsignedChar;\n\n- (short)nextShort;\n- (unsigned short)nextUnsignedShort;\n\n- (int)nextInt;\n- (unsigned int)nextUnsignedInt;\n\n- (unsigned long long)nextUnsignedLong;\n\n- (float)nextFloat;\n- (double)nextDouble;\n\n- (int)uniformWithLower:(int)lower upper:(int)upper;\n- (float)uniformFloatWithLower:(float)lower upper:(float)upper;\n- (double)uniformDoubleWithLower:(double)lower upper:(double)upper;\n\n\n- (void)fillSource:(id<OCVInputOutputArrayable>)source type:(OCVRandomType)type distributionA:(id<OCVInputArrayable>)distributionA distributionB:(id<OCVInputArrayable>)distributionB;\n- (void)fillSource:(id<OCVInputOutputArrayable>)source type:(OCVRandomType)type distributionA:(id<OCVInputArrayable>)distributionA distributionB:(id<OCVInputArrayable>)distributionB saturateRange:(BOOL)saturateRange;\n\n- (double)gaussianForSigma:(double)sigma;\n\n/*!\n *  cv::randShuffle()\n *\n *  @note: While OpenCV provides a static method here for randShuffle, this is an instance method, since it requires random generator object.\n */\n- (void)randShuffleToDestination:(id<OCVInputOutputArrayable>)destination;\n- (void)randShuffleToDestination:(id<OCVInputOutputArrayable>)destination iterationFactor:(double)iterationFactor;\n\n#pragma mark - Class Methods\n\n/*!\n *  cv::theRNG()\n */\n+ (instancetype)defaultGenerator;\n\n/*!\n *  cv::setRNGSeed()\n */\n+ (void)setSeed:(NSInteger)seed;\n\n/*!\n *  cv::randu()\n */\n+ (void)randUniformToDestination:(id<OCVInputOutputArrayable>)destination withLowBoundary:(id<OCVInputArrayable>)lowBoundary withHighBoundary:(id<OCVInputArrayable>)highBoundary;\n\n/*!\n *  cv::randn()\n */\n+ (void)randNormallyToDestination:(id<OCVInputOutputArrayable>)destination mean:(id<OCVInputArrayable>)mean standardDeviation:(id<OCVInputArrayable>)standardDeviation;\n\n@end\n\n/*!\n *  cv::RNG_MT19937\n */\n@interface OCVMersenneTwisterRandomGenerator : OCVRandomGenerator\n\n- (void)seedWithState:(unsigned long long)state;\n\n@end\n\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Core/Algorithms/OCVRandomGenerator.mm",
    "content": "//\n//  OCVRandomGenerator.mm\n//  LegoCV\n//\n//  Created by Dal Rupnik on 04/03/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVRandomGenerator.h\"\n\n@implementation OCVRandomGenerator\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Core/Algorithms/OCVSVD.h",
    "content": "//\n//  OCVSVD.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 06/03/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n#import \"OCVInputArrayable.h\"\n#import \"OCVOutputArrayable.h\"\n\n#import \"OCVMat.h\"\n\n/*!\n *  Reference type: cv::PCA Flags\n */\ntypedef NS_OPTIONS(NSInteger, OCVSVDFlags) {\n    OCVSVDModifyA = 0,\n    OCVSVDNoUV    = 1,\n    OCVSVDFullUV  = 4\n};\n\nNS_ASSUME_NONNULL_BEGIN\n\n/*!\n *  Singular Value Decomposition\n */\n@interface OCVSVD : OCVObject\n\n@property (nonatomic, strong) OCVMat* u;\n@property (nonatomic, strong) OCVMat* w;\n@property (nonatomic, strong) OCVMat* vt;\n\n- (instancetype)initWithSource:(id<OCVInputArrayable>)source;\n- (instancetype)initWithSource:(id<OCVInputArrayable>)source flags:(OCVSVDFlags)flags;\n\n- (OCVSVD *)performWithSource:(id<OCVInputArrayable>)source;\n- (OCVSVD *)performWithSource:(id<OCVInputArrayable>)source flags:(OCVSVDFlags)flags;\n\n+ (void)computeWithSource:(id<OCVInputArrayable>)source w:(id<OCVInputArrayable>)w u:(id<OCVOutputArrayable>)u vt:(id<OCVOutputArrayable>)vt;\n+ (void)computeWithSource:(id<OCVInputArrayable>)source w:(id<OCVInputArrayable>)w u:(id<OCVOutputArrayable>)u vt:(id<OCVOutputArrayable>)vt flags:(OCVSVDFlags)flags;\n\n+ (void)computeWithSource:(id<OCVInputArrayable>)source w:(id<OCVOutputArrayable>)w;\n+ (void)computeWithSource:(id<OCVInputArrayable>)source w:(id<OCVOutputArrayable>)w flags:(OCVSVDFlags)flags;\n\n+ (void)backSubstitutionWithW:(id<OCVInputArrayable>)w u:(id<OCVInputArrayable>)u vt:(id<OCVInputArrayable>)vt rightHandSide:(id<OCVInputArrayable>)rightHandSide toDestination:(id<OCVOutputArrayable>)destination;\n\n+ (void)solveZWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination;\n\n+ (void)backSubstitutionWithRightHandSide:(id<OCVInputArrayable>)rightHandSide toDestination:(id<OCVOutputArrayable>)destination;\n\n@end\n\nNS_ASSUME_NONNULL_END\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Core/Algorithms/OCVSVD.mm",
    "content": "//\n//  OCVSVD.mm\n//  LegoCV\n//\n//  Created by Dal Rupnik on 06/03/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVSVD.h\"\n\n@implementation OCVSVD\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Core/Base/OCVAlgorithm.h",
    "content": "//\n//  OCVAlgorithm.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 04/03/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVAlgorithm : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Core/Base/OCVAlgorithm.m",
    "content": "//\n//  OCVAlgorithm.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 04/03/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVAlgorithm.h\"\n\n@implementation OCVAlgorithm\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Core/Base/OCVArrayables.h",
    "content": "//\n//  OCVArrayables.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/03/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#ifndef OCVArrayables_h\n#define OCVArrayables_h\n\n#import \"OCVInputArrayable.h\"\n#import \"OCVOutputArrayable.h\"\n#import \"OCVInputOutputArrayable.h\"\n\n#endif /* OCVData_h */\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Core/Base/OCVComplex.h",
    "content": "//\n//  OCVComplex.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 16/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import <Foundation/Foundation.h>\n\n@interface OCVComplex : NSObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Core/Base/OCVComplex.m",
    "content": "//\n//  OCVComplex.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 16/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVComplex.h\"\n\n@implementation OCVComplex\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Core/Base/OCVEdges.h",
    "content": "//\n//  OCVEdgs.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 04/03/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#ifndef OCVEdges_h\n#define OCVEdges_h\n\ntypedef struct OCVEdges {\n    NSInteger top, left, bottom, right;\n} OCVEdges;\n\n#endif /* OCVEdges_h */\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Core/Base/OCVFormatter.h",
    "content": "//\n//  OCVFormatter.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 04/03/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVFormatter : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Core/Base/OCVFormatter.m",
    "content": "//\n//  OCVFormatter.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 04/03/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVFormatter.h\"\n\n@implementation OCVFormatter\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Core/Base/OCVGeometry.h",
    "content": "//\n//  OCVGeometry.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 30/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#ifndef OCVGeometry_h\n#define OCVGeometry_h\n\n#import \"OCVScalar.h\"\n#import \"OCVPoint.h\"\n#import \"OCVSize.h\"\n#import \"OCVRect.h\"\n\n#endif\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Core/Base/OCVInputArray.h",
    "content": "//\n//  OCVInputArray.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 24/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVReferenceObject.h\"\n\n#import \"OCVGeometry.h\"\n\ntypedef NS_ENUM(NSInteger, OCVInputArrayType) {\n    OCVInputArrayTypeMat        = 65536,\n    OCVInputArrayTypeExpression = 393216\n};\n\n@class OCVMat;\n\n@interface OCVInputArray : OCVReferenceObject\n\n#pragma mark - Public Properties\n\n@property (nonatomic, readonly) OCVInputArrayType type;\n@property (nonatomic, readonly) OCVSize size;\n\n@property (nonatomic, readonly) NSInteger channels;\n@property (nonatomic, readonly) NSInteger depth;\n@property (nonatomic, readonly) NSInteger dims;\n\n@property (nonatomic, readonly) BOOL isEmpty;\n\n@property (nonatomic, readonly) BOOL isMat;\n\n#pragma mark - Initialization\n\n- (void)setup;\n\n#pragma mark - Public Methods\n\n- (NSInteger)channelsWithIndex:(NSInteger)index;\n\n- (NSInteger)depthWithIndex:(NSInteger)index;\n\n- (NSInteger)dimsWithIndex:(NSInteger)index;\n\n- (OCVMat *)mat;\n- (OCVMat *)matWithIndex:(NSInteger)index;\n\n#pragma mark - Static Factory Methods\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Core/Base/OCVInputArray.mm",
    "content": "//\n//  OCVInputArray.mm\n//  LegoCV\n//\n//  Created by Dal Rupnik on 24/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVInputArray+Private.h\"\n\n#import \"OCVInputArray.h\"\n\n#import \"OCVMatDataAllocator+Private.h\"\n#import \"OCVMat.h\"\n\n@interface OCVInputArray () {\n    cv::_InputArray *_arrayReference;\n}\n\n@end\n\n@implementation OCVInputArray\n\n- (cv::_InputArray *)arrayReference {\n    return _arrayReference;\n}\n\n- (void)setArrayReference:(cv::_InputArray *)arrayReference {\n    _arrayReference = arrayReference;\n}\n\n- (cv::_InputArray *)_input {\n    [self setup];\n    \n    return self.arrayReference;\n}\n\n- (NSInteger)channels {\n    return [self channelsWithIndex:-1];\n}\n\n- (NSInteger)depth {\n    return [self depthWithIndex:-1];\n}\n\n- (NSInteger)dims {\n    return [self dimsWithIndex:-1];\n}\n\n#pragma mark - Initialization\n\n- (instancetype)init {\n    [NSException raise:@\"InitNotImplemented\" format:@\"Direct initialization not supported.\"];\n    \n    return nil;\n}\n\n- (void)dealloc {\n    if (_arrayReference != NULL) {\n        free(_arrayReference);\n    }\n    \n    _arrayReference = NULL;\n}\n\n#pragma mark - Public Methods\n\n- (NSInteger)channelsWithIndex:(NSInteger)index {\n    return self._input->channels((int)index);\n}\n\n- (NSInteger)depthWithIndex:(NSInteger)index {\n    return self._input->depth((int)index);\n}\n\n- (NSInteger)dimsWithIndex:(NSInteger)index {\n    return self._input->dims((int)index);\n}\n\n- (OCVMat *)mat {\n    return [self matWithIndex:-1];\n}\n\n- (OCVMat *)matWithIndex:(NSInteger)index {\n    \n    cv::Mat mat = self._input->getMat((int)index);\n    return [[OCVMat alloc] initWithMatInstance:&mat];\n}\n\n#pragma mark - Protected Methods\n\n- (void)setup {\n    if ([self.object isKindOfClass:[OCVMatDataAllocator class]]) {\n        cv::Mat *mat = [self.object source];\n        \n        _arrayReference = new cv::_InputArray(*mat);\n    }\n}\n\n\n#pragma mark - Factory Methods\n\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Core/Base/OCVInputArrayable.h",
    "content": "//\n//  OCVInputArrayable.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 24/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVInputArray.h\"\n\n@protocol OCVInputArrayable <NSObject>\n\n@property (nonatomic, readonly) OCVInputArray *input;\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Core/Base/OCVInputOutputArray.h",
    "content": "//\n//  OCVInputOutputArray.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 24/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVOutputArray.h\"\n\n@interface OCVInputOutputArray : OCVOutputArray\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Core/Base/OCVInputOutputArray.mm",
    "content": "//\n//  OCVInputOutputArray.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 24/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVMatDataAllocator+Private.h\"\n#import \"OCVInputOutputArray.h\"\n#import \"OCVInputOutputArray+Private.h\"\n#import \"OCVInputArray+Private.h\"\n\n@implementation OCVInputOutputArray\n\n- (cv::_InputOutputArray *)_inputOutput {\n    [self setup];\n    \n    return (cv::_InputOutputArray *)self.arrayReference;\n}\n\n- (void)setup {\n    if ([self.object isKindOfClass:[OCVMatDataAllocator class]]) {\n        cv::Mat *mat = [self.object source];\n        \n        self.arrayReference = new cv::_InputOutputArray(*mat);\n    }\n}\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Core/Base/OCVInputOutputArrayable.h",
    "content": "//\n//  OCVInputOutputArrayable.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 24/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVInputOutputArray.h\"\n\n@protocol OCVInputOutputArrayable <NSObject>\n\n@property (nonatomic, readonly) OCVInputOutputArray *inputOutput;\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Core/Base/OCVOutputArray.h",
    "content": "//\n//  OCVOutputArray.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 24/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVInputArray.h\"\n\n@interface OCVOutputArray : OCVInputArray\n\n@property (nonatomic, readonly) BOOL isFixedSize;\n@property (nonatomic, readonly) BOOL isFixedType;\n\n@property (nonatomic, readonly) BOOL isNeeded;\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Core/Base/OCVOutputArray.mm",
    "content": "//\n//  OCVOutputArray.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 24/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVMatDataAllocator+Private.h\"\n\n#import \"OCVOutputArray.h\"\n#import \"OCVInputArray+Private.h\"\n\n@implementation OCVOutputArray\n\n- (cv::_OutputArray *)_output {\n    [self setup];\n    \n    return (cv::_OutputArray *)self.arrayReference;\n}\n\n- (void)setup {\n    if ([self.object isKindOfClass:[OCVMatDataAllocator class]]) {\n        cv::Mat *mat = [self.object source];\n        \n        self.arrayReference = new cv::_OutputArray(*mat);\n    }\n}\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Core/Base/OCVOutputArrayable.h",
    "content": "//\n//  OCVOutputArrayable.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 24/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVOutputArray.h\"\n\n@protocol OCVOutputArrayable <NSObject>\n\n@property (nonatomic, readonly) OCVOutputArray *output;\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Core/Base/OCVPoint.h",
    "content": "//\n//  OCVPoint.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 24/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import <Foundation/Foundation.h>\n\n/*!\n *  Reference type: cv::Point, cv::Point2i, cv::Point_<int>\n */\ntypedef struct OCVPoint\n{\n    NSInteger x;\n    NSInteger y;\n}\nOCVPoint;\n\n/*!\n *  Reference type: cv::Point2f, cv::Point_<float>\n */\ntypedef struct OCVPoint2f {\n    float x;\n    float y;\n} OCVPoint2f;\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Core/Base/OCVRect.h",
    "content": "//\n//  OCVRect.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 22/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import <Foundation/Foundation.h>\n\n#import \"OCVPoint.h\"\n#import \"OCVSize.h\"\n\ntypedef struct OCVRect\n{\n    OCVPoint origin;\n    OCVSize size;\n}\nOCVRect;\n\n/*!\n *  Objective-C class immutable wrapper for OCVRect struct\n */\n@interface OCVRectValue : NSObject\n\n@property (nonatomic, readonly) OCVRect rect;\n\n- (instancetype)initWithRect:(OCVRect)rect;\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Core/Base/OCVRect.m",
    "content": "//\n//  OCVRect.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 24/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVRect.h\"\n\n@interface OCVRectValue ()\n\n@property (nonatomic, readwrite, assign) OCVRect rect;\n\n@end\n\n@implementation OCVRectValue\n\n- (instancetype)initWithRect:(OCVRect)rect {\n    self = [super init];\n    \n    if (self) {\n        self.rect = rect;\n    }\n    \n    return self;\n}\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Core/Base/OCVScalar.h",
    "content": "//\n//  OCVScalar.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 30/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import <Foundation/Foundation.h>\n\ntypedef struct OCVScalar {\n    double value[4];\n}\nOCVScalar;\n\nOCVScalar OCVScalarRGB(double r, double g, double b) CF_SWIFT_NAME(OCVScalar.init(r:g:b:));\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Core/Base/OCVScalar.m",
    "content": "//\n//  OCVScalar.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 30/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVScalar.h\"\n\nOCVScalar OCVScalarRGB(double r, double g, double b) {\n    OCVScalar scalar;\n    scalar.value[0] = r;\n    scalar.value[1] = g;\n    scalar.value[2] = b;\n    scalar.value[3] = 0.0;\n    \n    return scalar;\n}\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Core/Base/OCVSize.h",
    "content": "//\n//  OCVSize.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 16/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import <Foundation/Foundation.h>\n\ntypedef struct OCVSize\n{\n    NSInteger width;\n    NSInteger height;\n}\nOCVSize;\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Core/Base/OCVTypes.h",
    "content": "//\n//  OCVTypes.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 16/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVEdges.h\"\n\ntypedef NS_ENUM(NSInteger, OCVDepthType) {\n    OCVDepthTypeDefault = -1,\n    OCVDepthTypeCv8U    = 0,\n    OCVDepthTypeCv8S    = 1,\n    OCVDepthTypeCv16U   = 2,\n    OCVDepthTypeCv16S   = 3,\n    OCVDepthTypeCv32S   = 4,\n    OCVDepthTypeCv32F   = 5,\n    OCVDepthTypeCv64F   = 6\n};\n\n#pragma mark - Types from base.hpp\n\n/*!\n *  Reference type: cv::DecompTypes\n */\ntypedef NS_ENUM(NSInteger, OCVDecompositionType) {\n    OCVDecompositionTypeLU       = 0,\n    OCVDecompositionTypeSVD      = 1,\n    OCVDecompositionTypeEIG      = 2,\n    OCVDecompositionTypeCholesky = 3,\n    OCVDecompositionTypeQR       = 4,\n    OCVDecompositionTypeNormal   = 16\n};\n\n/*!\n *  Reference type: cv::BorderTypes\n */\ntypedef NS_ENUM(NSInteger, OCVBorderType) {\n    OCVBorderTypeConstant    = 0, //!< `iiiiii|abcdefgh|iiiiiii`  with some specified `i`\n    OCVBorderTypeReplicate   = 1, //!< `aaaaaa|abcdefgh|hhhhhhh`\n    OCVBorderTypeReflect     = 2, //!< `fedcba|abcdefgh|hgfedcb`\n    OCVBorderTypeWrap        = 3, //!< `cdefgh|abcdefgh|abcdefg`\n    OCVBorderTypeReflect101  = 4, //!< `gfedcb|abcdefgh|gfedcba`\n    OCVBorderTypeTransparent = 5, //!< `uvwxyz|absdefgh|ijklmno`\n    OCVBorderTypeDefault     = OCVBorderTypeReflect101, //!< same as OCVBorderTypeReflect101\n    OCVBorderTypeIsolated    = 16 //!< do not look outside of ROI\n};\n\n/*!\n *  Reference type: cv::NormTypes\n */\ntypedef NS_ENUM(NSInteger, OCVNormType) {\n    OCVNormTypeINF       = 1,\n    OCVNormTypeL1        = 2,\n    OCVNormTypeL2        = 4,\n    OCVNormTypeL2SQR     = 5,\n    OCVNormTypeHamming   = 6,\n    OCVNormTypeHamming2  = 7,\n    OCVNormTypeMask      = 7,\n    OCVNormTypeRelative  = 8, //!< flag\n    OCVNormTypeMinMax    = 32 //!< flag\n};\n\n/*!\n *  Reference type: cv::CmpTypes\n */\ntypedef NS_ENUM(NSInteger, OCVCompareType) {\n    OCVCompareTypeEqual             = 0, //!< src1 is equal to src2.\n    OCVCompareTypeGreater           = 1, //!< src1 is greater than src2.\n    OCVCompareTypeGreaterOrEqual    = 2, //!< src1 is greater than or equal to src2.\n    OCVCompareTypeLess              = 3, //!< src1 is less than src2.\n    OCVCompareTypeLessOrEqual       = 4, //!< src1 is less than or equal to src2.\n    OCVCompareTypeNotEqual          = 5  //!< src1 is unequal to src2.\n};\n\n/*!\n *  Reference type: cv::GemmFlags\n */\ntypedef NS_OPTIONS(NSInteger, OCVGemmFlags) {\n    OCVGemmFlag1T = 1, //!< transposes src1\n    OCVGemmFlag2T = 2, //!< transposes src2\n    OCVGemmFlag3T = 4  //!< transposes src3\n};\n\n/*!\n *  Reference type: cv::DftFlags\n */\ntypedef NS_OPTIONS(NSInteger, OCVTransformFlags) {\n    OCVTransformInverse        = 1,\n    OCVTransformScale          = 2,\n    OCVTransformRows           = 4,\n    OCVTransformComplexOutput  = 16,\n    OCVTransformRealOutput     = 32,\n};\n\n#pragma mark - Types from core.hpp\n\n/*!\n *  Reference type: cv::KmeansFlags\n */\ntypedef NS_OPTIONS(NSInteger, OCVKMeansTypes) {\n    OCVKMeansTypeRandomCenters = 0,\n    OCVKMeansPPCenters         = 2,\n    OCVKMeansUseInitialLabels  = 1\n};\n\n/*!\n *  Reference type: cv::LineTypes\n */\ntypedef NS_ENUM(NSInteger, OCVLineType) {\n    OCVLineTypeFilled = -1,\n    OCVLineTypeLine4  = 4, //!< 4-connected line\n    OCVLineTypeLine8  = 8, //!< 8-connected line\n    OCVLineTypeLineAA = 16 //!< antialiased line\n};\n\n/*!\n *  Reference type: cv::HersheyFonts\n */\ntypedef NS_ENUM(NSInteger, OCVHersheyFont) {\n    OCVHersheyFontSimplex        = 0, //!< normal size sans-serif font\n    OCVHersheyFontPlain          = 1, //!< small size sans-serif font\n    OCVHersheyFontDuplex         = 2, //!< normal size sans-serif font (more complex than FONT_HERSHEY_SIMPLEX)\n    OCVHersheyFontComplex        = 3, //!< normal size serif font\n    OCVHersheyFontTriplex        = 4, //!< normal size serif font (more complex than FONT_HERSHEY_COMPLEX)\n    OCVHersheyFontComplexSmall   = 5, //!< smaller version of FONT_HERSHEY_COMPLEX\n    OCVHersheyFontScriptSimplex  = 6, //!< hand-writing style font\n    OCVHersheyFontScriptComplex  = 7, //!< more complex variant of FONT_HERSHEY_SCRIPT_SIMPLEX\n    OCVHersheyFontItalic         = 16 //!< flag for italic font\n};\n\n/*!\n *  Reference type: cv::ReduceTypes\n */\ntypedef NS_ENUM(NSInteger, OCVReduceType) {\n    OCVReduceTypeSum = 0, //!< the output is the sum of all rows/columns of the matrix.\n    OCVReduceTypeAvg = 1, //!< the output is the mean vector of all rows/columns of the matrix.\n    OCVReduceTypeMax = 2, //!< the output is the maximum (column/row-wise) of all rows/columns of the matrix.\n    OCVReduceTypeMin = 3  //!< the output is the minimum (column/row-wise) of all rows/columns of the matrix.\n};\n\n/*!\n *  Reference type: core.hpp cv::flip() function codes\n */\ntypedef NS_ENUM(NSInteger, OCVFlipCode) {\n    OCVFlipCodeXAxis = 0,\n    OCVFlipCodeYAxis = 1,\n    OCVFlipCodeBoth = -1\n};\n\n/*!\n *  Reference type: cv::RotateFlags\n */\ntypedef NS_OPTIONS(NSInteger, OCVRotationTypes) {\n    OCVRotationType90Clockwise            = 0, //Rotate 90 degrees clockwise\n    OCVRotationType180                    = 1, //Rotate 180 degrees clockwise\n    OCVRotationType90CounterClockwise     = 2, //Rotate 270 degrees clockwise\n};\n\n/*!\n *  Reference type: cv::SortFlags\n */\ntypedef NS_OPTIONS(NSInteger, OCVSortTypes) {\n    OCVSortTypeEveryRow     = 0, //!< each matrix row is sorted independently\n    OCVSortTypeEveryColumn  = 1, //!< each matrix column is sorted\n    //!< independently; this flag and the previous one are\n    //!< mutually exclusive.\n    OCVSortTypeAscending    = 0, //!< each matrix row is sorted in the ascending\n    //!< order.\n    OCVSortTypeDescending   = 16 //!< each matrix row is sorted in the\n    //!< descending order; this flag and the previous one are also\n    //!< mutually exclusive.\n};\n\n/*!\n *  Reference type: cv::CovarFlags\n */\ntypedef NS_OPTIONS(NSInteger, OCVCovarTypes) {\n    OCVCovarTypeScrambled = 0,\n    OCVCovarTypeNormal    = 1,\n    OCVCovarTypeUseAvg    = 2,\n    OCVCovarTypeScale     = 4,\n    OCVCovarTypeRows      = 8,\n    OCVCovarTypeCols      = 16\n};\n\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Core/Base/OCVVector.h",
    "content": "//\n//  OCVVector.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 04/03/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n/*!\n *  Custom OpenCV vector of data (wraps std::vector)\n */\n@interface OCVVector : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Core/Base/OCVVector.m",
    "content": "//\n//  OCVVector.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 04/03/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVVector.h\"\n\n@implementation OCVVector\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Core/Mat/OCVMat.h",
    "content": "//\n//  OCVMat.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 16/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVMatDataAllocator.h\"\n\n#import \"OCVTypes.h\"\n#import \"OCVGeometry.h\"\n#import \"OCVMatExpr.h\"\n#import \"OCVInputArrayable.h\"\n#import \"OCVOutputArrayable.h\"\n#import \"OCVInputOutputArrayable.h\"\n\nNS_ASSUME_NONNULL_BEGIN\n\n/*!\n *  OCVMat is a simple Objective-C wrapper around cv::Mat instance.\n */\n@interface OCVMat : OCVMatDataAllocator <NSCopying, OCVInputArrayable, OCVOutputArrayable, OCVInputOutputArrayable>\n\n#pragma mark - Public Properties\n\n@property (nonatomic, readonly) NSInteger rows;\n@property (nonatomic, readonly) NSInteger cols;\n\n@property (nonatomic, readonly) NSInteger dims;\n\n@property (nonatomic, readonly) BOOL isSubmatrix;\n@property (nonatomic, readonly) BOOL isContinuous;\n\n@property (nonatomic, readonly) BOOL isEmpty;\n@property (nonatomic, readonly) NSInteger total;\n\n@property (nonatomic, readonly) NSInteger elemSize;\n@property (nonatomic, readonly) NSInteger elemSize1;\n\n@property (nonatomic, readonly) OCVDepthType type;\n\n@property (nonatomic, readonly) NSInteger channels;\n\n@property (nonatomic, readonly) OCVSize size;\n\n#pragma mark - Initialization\n\n- (instancetype)initWithRows:(NSInteger)rows cols:(NSInteger)cols;\n- (instancetype)initWithRows:(NSInteger)rows cols:(NSInteger)cols type:(OCVDepthType)type channels:(NSInteger)channels;\n- (instancetype)initWithSize:(OCVSize)size type:(OCVDepthType)type channels:(NSInteger)channels;\n\n/*!\n *  Creates a new deep copy of the matrix\n */\n- (instancetype)initWithMat:(OCVMat *)mat;\n\n#pragma mark - Public Methods\n\n/*!\n *  Creates a deep copy of the OCVMat underlying matrix, same as [self copy], as supported by NSCopying.\n */\n- (OCVMat *)clone;\n\n/*!\n *  Returns OCVMat with submatrix (data is not copied and remains in original matrix)\n */\n- (OCVMat *)submatrixWithRect:(OCVRect)rect;\n\n#pragma mark - Operations\n\n- (OCVMat *)reshapeWithChannels:(NSInteger)channels;\n- (OCVMat *)reshapeWithChannels:(NSInteger)channels rows:(NSInteger)rows;\n\n- (OCVMat *)transpose;\n\n- (OCVMat *)inverse;\n- (OCVMat *)inverseWithMethod:(OCVDecompositionType)method;\n\n- (OCVMat *)multiplyWithArray:(id<OCVInputArrayable>)inputArray;\n- (OCVMat *)multiplyWithArray:(id<OCVInputArrayable>)inputArray scale:(double)scale;\n\n- (OCVMat *)crossWithArray:(id<OCVInputArrayable>)inputArray;\n\n- (double)dotWithArray:(id<OCVInputArrayable>)inputArray;\n\n#pragma mark - Public Factory Methods\n\n+ (instancetype)zerosWithRows:(NSInteger)rows cols:(NSInteger)cols type:(OCVDepthType)type channels:(NSInteger)channels;\n+ (instancetype)zerosWithSize:(OCVSize)size type:(OCVDepthType)type channels:(NSInteger)channels;\n\n+ (instancetype)onesWithRows:(NSInteger)rows cols:(NSInteger)cols type:(OCVDepthType)type channels:(NSInteger)channels;\n+ (instancetype)onesWithSize:(OCVSize)size type:(OCVDepthType)type channels:(NSInteger)channels;\n\n@end\n\nNS_ASSUME_NONNULL_END\n\n#pragma mark - iOS Extensions\n\n#import <UIKit/UIKit.h>\n\nNS_ASSUME_NONNULL_BEGIN\n\n@interface OCVMat (UIKit)\n\n- (instancetype)initWithImage:(UIImage *)image;\n- (UIImage *)image;\n\n@end\n\nNS_ASSUME_NONNULL_END\n\n#import <CoreGraphics/CoreGraphics.h>\n\nNS_ASSUME_NONNULL_BEGIN\n\n@interface OCVMat (CoreGraphics)\n- (instancetype)initWithImageRef:(CGImageRef)imageRef;\n- (instancetype)initWithCGSize:(CGSize)size;\n- (instancetype)initWithCGSize:(CGSize)size type:(OCVDepthType)type channels:(NSInteger)channels;\n\n/*!\n *  Construct image reference and returns it\n */\n- (CGImageRef)imageRef;\n\nNS_ASSUME_NONNULL_END\n\n@end\n\n#import <CoreVideo/CoreVideo.h>\n\nNS_ASSUME_NONNULL_BEGIN\n\n@interface OCVMat (CoreVideo)\n\n- (instancetype)initWithPixelBuffer:(CVPixelBufferRef)buffer;\n\n@end\n\nNS_ASSUME_NONNULL_END\n\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Core/Mat/OCVMat.mm",
    "content": "//\n//  OCVMat.mm\n//  LegoCV\n//\n//  Created by Dal Rupnik on 16/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVGeometry+Private.h\"\n#import \"OCVMatDataAllocator+Private.h\"\n#import \"OCVInputArray+Private.h\"\n#import \"OCVOutputArray.h\"\n#import \"OCVInputOutputArray.h\"\n\n#import \"OCVMat.h\"\n\n@interface OCVMat ()\n\n// A reference to output array proxy, to guarantee a single one is passed.\n@property (nonatomic, strong) OCVInputOutputArray* inputOutput;\n\n@end\n\n@implementation OCVMat\n\n#pragma mark - Private Properties\n\n#pragma mark - Public Properties\n- (BOOL)isSubmatrix {\n    return self.source->isSubmatrix();\n}\n\n- (NSInteger)rows {\n    return self.source->rows;\n}\n\n- (NSInteger)cols {\n    return self.source->cols;\n}\n\n- (NSInteger)channels {\n    return self.source->channels();\n}\n\n- (OCVDepthType)type {\n    return (OCVDepthType)self.source->depth();\n}\n\n- (OCVSize)size {\n    return convertSize(self.source->size());\n}\n\n- (NSString *)description {\n    return [NSString stringWithFormat:@\"OCVMat: [%ld, %ld], channels: %ld, type: %ld]\", (long)self.rows, (long)self.cols, (long)self.channels, (long)self.type];\n}\n\n#pragma mark - Initialization\n\n- (instancetype)init {\n    return [super initWithMatInstance:new cv::Mat()];\n}\n\n- (instancetype)initWithSize:(OCVSize)size type:(OCVDepthType)type channels:(NSInteger)channels {\n    return [self initWithRows:size.height cols:size.width type:type channels:channels];\n}\n\n- (instancetype)initWithRows:(NSInteger)rows cols:(NSInteger)cols {\n    return [self initWithRows:rows cols:cols type:OCVDepthTypeCv8U channels:4];\n}\n\n- (instancetype)initWithRows:(NSInteger)rows cols:(NSInteger)cols type:(OCVDepthType)type channels:(NSInteger)channels {\n    // Convert type to OpenCV type\n    int cvType = (int)CV_MAKETYPE(type, channels);\n\n    return [super initWithMatInstance:new cv::Mat((int)rows, (int)cols, cvType)];\n}\n\n#pragma mark - Convenience Initialization\n\n- (instancetype)initWithMat:(OCVMat *)mat {\n    cv::Mat *matSource = new cv::Mat(mat.source->clone());\n    \n    return [self initWithMatInstance:matSource];\n}\n\n- (instancetype)initWithPixelBuffer:(CVPixelBufferRef)buffer {\n    cv::Mat mat = [self.class matFromBuffer:buffer];\n    \n    return [self initWithMatInstance:&mat];\n}\n\n- (instancetype)initWithImage:(UIImage *)image {\n    cv::Mat mat = [self.class matFromImage:image];\n    \n    return [self initWithMatInstance:&mat];\n}\n\n- (instancetype)initWithImageRef:(CGImageRef)imageRef {\n    cv::Mat mat = [self.class matFromImageRef:imageRef];\n    \n    return [self initWithMatInstance:&mat];\n}\n\n- (instancetype)initWithCGSize:(CGSize)size {\n    return [self initWithCGSize:size type:OCVDepthTypeCv8U channels:4];\n}\n\n- (instancetype)initWithCGSize:(CGSize)size type:(OCVDepthType)type channels:(NSInteger)channels {\n    return [self initWithRows:(NSInteger)size.height cols:(NSInteger)size.width type:type channels:channels];\n}\n\n#pragma mark - NSCopying\n\n- (instancetype)copyWithZone:(NSZone *)zone {\n    return [[[self class] alloc] initWithMat:self];\n}\n\n#pragma mark - Public Methods\n\n- (OCVMat *)clone {\n    cv::Mat *mat = new cv::Mat(self.source->clone());\n    \n    return [[OCVMat alloc] initWithMatInstance:mat];\n}\n\n- (OCVMat *)submatrixWithRect:(OCVRect)rect {\n    cv::Mat sourceMat = *self.source;\n    \n    cv::Mat mat = sourceMat(convertRect(rect));\n    \n    return [[OCVMat alloc] initWithMatInstance:new cv::Mat(mat)];\n}\n\n- (CGImageRef)imageRef {\n    if (self.source == NULL) {\n        return nil;\n    }\n    \n    return [self.class imageRefFromMat:*(self.source)];\n}\n\n- (UIImage *)image {\n    CGImageRef imageRef = [self imageRef];\n    \n    return [UIImage imageWithCGImage:imageRef];\n}\n\n- (OCVMat *)reshapeWithChannels:(NSInteger)channels {\n    return [self reshapeWithChannels:channels rows:0];\n}\n\n- (OCVMat *)reshapeWithChannels:(NSInteger)channels rows:(NSInteger)rows {\n    cv::Mat mat = self.source->reshape((int)channels, (int)rows);\n    return [[OCVMat alloc] initWithMatInstance:new cv::Mat(mat)];\n}\n\n- (OCVMat *)transpose {\n    cv::Mat mat = self.source->t();\n    return [[OCVMat alloc] initWithMatInstance:new cv::Mat(mat)];\n}\n\n- (OCVMat *)inverse {\n    return [self inverseWithMethod:OCVDecompositionTypeLU];\n}\n\n- (OCVMat *)inverseWithMethod:(OCVDecompositionType)method {\n    cv::Mat mat = self.source->inv((int)method);\n    return [[OCVMat alloc] initWithMatInstance:new cv::Mat(mat)];\n}\n\n- (OCVMat *)multiplyWithArray:(id<OCVInputArrayable>)inputArray {\n    return [self multiplyWithArray:inputArray scale:1];\n}\n\n- (OCVMat *)multiplyWithArray:(id<OCVInputArrayable>)inputArray scale:(double)scale {\n    cv::Mat mat = self.source->mul(*inputArray.input._input, scale);\n    return [[OCVMat alloc] initWithMatInstance:new cv::Mat(mat)];\n}\n\n- (OCVMat *)crossWithArray:(id<OCVInputArrayable>)inputArray {\n    cv::Mat mat = self.source->cross(*inputArray.input._input);\n    return [[OCVMat alloc] initWithMatInstance:new cv::Mat(mat)];\n}\n\n- (double)dotWithArray:(id<OCVInputArrayable>)inputArray {\n    return self.source->dot(*inputArray.input._input);\n}\n\n#pragma mark - OCVInputOutputArrayable\n\n- (OCVInputOutputArray *)inputOutput {\n    if (!_inputOutput) {\n        _inputOutput = [[OCVInputOutputArray alloc] initWithObject:self];\n    }\n    \n    return _inputOutput;\n}\n\n#pragma mark - OCVInputArrayable\n\n- (OCVInputArray *)input {\n    return self.inputOutput;\n}\n\n#pragma mark - OCVOutputArrayable\n\n- (OCVOutputArray *)output {\n    return self.inputOutput;\n}\n\n#pragma mark - Public Factory Methods\n\n+ (instancetype)zerosWithSize:(OCVSize)size type:(OCVDepthType)type channels:(NSInteger)channels {\n    return [self zerosWithRows:size.height cols:size.width type:type channels:channels];\n}\n\n+ (instancetype)zerosWithRows:(NSInteger)rows cols:(NSInteger)cols type:(OCVDepthType)type channels:(NSInteger)channels {\n    int cvType = (int)CV_MAKETYPE(type, channels);\n    \n    cv::Mat mat = cv::Mat::zeros((int)rows, (int)cols, cvType);\n    \n    return [[OCVMat alloc] initWithMatInstance:new cv::Mat(mat)];\n}\n\n+ (instancetype)onesWithSize:(OCVSize)size type:(OCVDepthType)type channels:(NSInteger)channels {\n    return [self onesWithRows:size.height cols:size.width type:type channels:channels];\n}\n\n+ (instancetype)onesWithRows:(NSInteger)rows cols:(NSInteger)cols type:(OCVDepthType)type channels:(NSInteger)channels {\n    int cvType = (int)CV_MAKETYPE(type, channels);\n    \n    cv::Mat mat = cv::Mat::ones((int)rows, (int)cols, cvType);\n    \n    return [[OCVMat alloc] initWithMatInstance:new cv::Mat(mat)];\n}\n\n#pragma mark - Private Utility Methods\n\n+ (cv::Mat)matFromImageRef:(CGImageRef)imageRef {\n    CGColorSpaceRef colorSpace = CGImageGetColorSpace(imageRef);\n    size_t cols = CGImageGetWidth(imageRef);\n    size_t rows = CGImageGetHeight(imageRef);\n    \n    cv::Mat cvMat((int)rows, (int)cols, CV_8UC4);\n    \n    CGContextRef contextRef = CGBitmapContextCreate(\n                                                    cvMat.data,                 // Pointer to  data\n                                                    cols,                       // Width of bitmap\n                                                    rows,                       // Height of bitmap\n                                                    8,                          // Bits per component\n                                                    cvMat.step[0],              // Bytes per row\n                                                    colorSpace,                 // Colorspace\n                                                    kCGImageAlphaNoneSkipLast|kCGBitmapByteOrderDefault // Bitmap info flags\n                                                    );\n    \n    CGContextDrawImage(contextRef, CGRectMake(0, 0, cols, rows), imageRef);\n    CGContextRelease(contextRef);\n    CGColorSpaceRelease(colorSpace);\n    \n    return cvMat;\n}\n\n\n+ (cv::Mat)matFromImage:(UIImage *)image {\n    CGColorSpaceRef colorSpace = CGImageGetColorSpace(image.CGImage);\n    CGFloat cols = image.size.width;\n    CGFloat rows = image.size.height;\n    \n    cv::Mat cvMat(rows, cols, CV_8UC4);\n    \n    CGContextRef contextRef = CGBitmapContextCreate(\n                                                    cvMat.data,                 // Pointer to  data\n                                                    cols,                       // Width of bitmap\n                                                    rows,                       // Height of bitmap\n                                                    8,                          // Bits per component\n                                                    cvMat.step[0],              // Bytes per row\n                                                    colorSpace,                 // Colorspace\n                                                    kCGImageAlphaNoneSkipLast|kCGBitmapByteOrderDefault // Bitmap info flags\n                                                    );\n    \n    CGContextDrawImage(contextRef, CGRectMake(0, 0, cols, rows), image.CGImage);\n    CGContextRelease(contextRef);\n    CGColorSpaceRelease(colorSpace);\n    \n    return cvMat;\n}\n\n+ (cv::Mat)matFromBuffer:(CVPixelBufferRef)buffer {\n    size_t cols = CVPixelBufferGetWidth(buffer);\n    size_t rows = CVPixelBufferGetHeight(buffer);\n    \n    cv::Mat cvMat((int)rows, (int)cols, CV_8UC4); // 8 bits per component, 4 channels (color channels + alpha)\n    \n    CVPixelBufferLockBaseAddress(buffer, 0);\n    \n    void *baseAddress = CVPixelBufferGetBaseAddress(buffer);\n    \n    size_t dataSize = CVPixelBufferGetDataSize(buffer);\n    \n    size_t targetDataSize = rows * cols * 4;\n    \n    if (dataSize >= targetDataSize) {\n        std::memcpy(cvMat.data, baseAddress, targetDataSize);\n    }\n    \n    CVPixelBufferUnlockBaseAddress(buffer, 0);\n    \n    return cvMat;\n}\n\n\n+ (CGImageRef)imageRefFromMat:(cv::Mat)cvMat {\n    \n    NSData *data = [NSData dataWithBytes:cvMat.data length:cvMat.elemSize()*cvMat.total()];\n    \n    CGColorSpaceRef colorSpace;\n    CGBitmapInfo bitmapInfo;\n    \n    if (cvMat.elemSize() == 1) {\n        colorSpace = CGColorSpaceCreateDeviceGray();\n        bitmapInfo = kCGImageAlphaNone | kCGBitmapByteOrderDefault;\n    }\n    else {\n        colorSpace = CGColorSpaceCreateDeviceRGB();\n        bitmapInfo = kCGImageAlphaLast | kCGBitmapByteOrderDefault;\n    }\n    \n    CGDataProviderRef provider = CGDataProviderCreateWithCFData((__bridge CFDataRef)data);\n    \n    CGImageRef imageRef = CGImageCreate(\n                                        cvMat.cols,                 //width\n                                        cvMat.rows,                 //height\n                                        8,                          //bits per component\n                                        8 * cvMat.elemSize(),       //bits per pixel\n                                        cvMat.step[0],              //bytesPerRow\n                                        colorSpace,                 //colorspace\n                                        bitmapInfo,                 // bitmap info\n                                        provider,                   //CGDataProviderRef\n                                        NULL,                       //decode\n                                        false,                      //should interpolate\n                                        kCGRenderingIntentDefault   //intent\n                                        );\n    \n    CGDataProviderRelease(provider);\n    CGColorSpaceRelease(colorSpace);\n    \n    return imageRef;\n}\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Core/Mat/OCVMatDataAllocator.h",
    "content": "//\n//  OCVMatDataAllocator.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 24/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVMatDataAllocator : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Core/Mat/OCVMatDataAllocator.mm",
    "content": "//\n//  OCVMatDataAllocator.mm\n//  LegoCV\n//\n//  Created by Dal Rupnik on 24/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import <opencv2/core.hpp>\n\n#import \"OCVMatDataAllocator.h\"\n\n@interface OCVMatDataAllocator () {\n    cv::Mat *source;\n}\n\n@end\n\n@implementation OCVMatDataAllocator\n\n- (cv::Mat *)source {\n    return source;\n}\n\n- (instancetype)initWithMatInstance:(cv::Mat *)mat {\n    self = [super init];\n    \n    if (self) {\n        self->source = mat;\n    }\n    \n    return self;\n}\n\n- (void)dealloc {\n    if (source) {\n        free(source);\n    }\n    \n    source = NULL;\n}\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Core/Mat/OCVMatExpr.h",
    "content": "//\n//  OCVMatExpr.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 16/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import <Foundation/Foundation.h>\n\n@interface OCVMatExpr : NSObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Core/Mat/OCVMatExpr.mm",
    "content": "//\n//  OCVMatExpr.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 16/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVMatExpr.h\"\n\n@implementation OCVMatExpr\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Core/Mat/OCVUMat.h",
    "content": "//\n//  OCVUMat.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 04/03/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVUMat : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Core/Mat/OCVUMat.m",
    "content": "//\n//  OCVUMat.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 04/03/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVUMat.h\"\n\n@implementation OCVUMat\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Core/OCVCore.h",
    "content": "//\n//  OCVCore.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 23/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#ifndef OCVCore_h\n#define OCVCore_h\n\n#import \"OCVMat.h\"\n#import \"OCVOperation.h\"\n\n#import \"OCVInputArrayable.h\"\n#import \"OCVOutputArrayable.h\"\n#import \"OCVInputOutputArray.h\"\n#import \"OCVInputOutputArrayable.h\"\n#import \"OCVCascadeClassifier.h\"\n\n#endif /* OCVCore_h */\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Core/Operations/OCVMinimumMaximum.h",
    "content": "//\n//  OCVMinimumMaximum.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 04/03/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVGeometry.h\"\n\n#import \"OCVObject.h\"\n\n@interface OCVMinimumMaximumLocation : OCVObject\n\n@property (nonatomic, assign) double minimumValue;\n@property (nonatomic, assign) double maximumValue;\n@property (nonatomic, assign) OCVPoint minimumLocation;\n@property (nonatomic, assign) OCVPoint maximumLocation;\n\n@end\n\n@interface OCVMinimumMaximumIndex : OCVObject\n\n@property (nonatomic, assign) double minimumValue;\n@property (nonatomic, assign) double maximumValue;\n@property (nonatomic, assign) NSInteger minimumIndex;\n@property (nonatomic, assign) NSInteger maximumIndex;\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Core/Operations/OCVMinimumMaximum.m",
    "content": "//\n//  OCVMinimumMaximum.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 04/03/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVMinimumMaximum.h\"\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Core/Operations/OCVOperation+Bitwise.h",
    "content": "//\n//  OCVOperation+Bitwise.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 04/03/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n#import \"OCVInputArrayable.h\"\n#import \"OCVOutputArrayable.h\"\n#import \"OCVInputOutputArrayable.h\"\n\n#import \"OCVGeometry.h\"\n#import \"OCVTypes.h\"\n\n#import \"OCVOperation.h\"\n\nNS_ASSUME_NONNULL_BEGIN\n\n/*!\n *  Wraps bitwise operations defined in core.hpp\n */\n@interface OCVOperation (Bitwise)\n\n/*!\n *  cv::bitwise_and()\n */\n+ (void)bitwiseAndWithSource:(id<OCVInputArrayable>)source1 withSource:(id<OCVInputArrayable>)source2 toDestination:(id<OCVOutputArrayable>)destination;\n+ (void)bitwiseAndWithSource:(id<OCVInputArrayable>)source1 withSource:(id<OCVInputArrayable>)source2 toDestination:(id<OCVOutputArrayable>)destination withMask:(id<OCVInputArrayable>)mask;\n\n/*!\n *  cv::bitwise_or()\n */\n+ (void)bitwiseOrWithSource:(id<OCVInputArrayable>)source1 withSource:(id<OCVInputArrayable>)source2 toDestination:(id<OCVOutputArrayable>)destination;\n+ (void)bitwiseOrWithSource:(id<OCVInputArrayable>)source1 withSource:(id<OCVInputArrayable>)source2 toDestination:(id<OCVOutputArrayable>)destination withMask:(id<OCVInputArrayable>)mask;\n\n/*!\n *  cv::bitwise_xor()\n */\n+ (void)bitwiseXorWithSource:(id<OCVInputArrayable>)source1 withSource:(id<OCVInputArrayable>)source2 toDestination:(id<OCVOutputArrayable>)destination;\n+ (void)bitwiseXorWithSource:(id<OCVInputArrayable>)source1 withSource:(id<OCVInputArrayable>)source2 toDestination:(id<OCVOutputArrayable>)destination withMask:(id<OCVInputArrayable>)mask;\n\n/*!\n *  cv::bitwise_not()\n */\n+ (void)bitwiseNotWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination;\n+ (void)bitwiseNotWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination withMask:(id<OCVInputArrayable>)mask;\n\n@end\n\nNS_ASSUME_NONNULL_END\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Core/Operations/OCVOperation+Bitwise.mm",
    "content": "//\n//  OCVOperation+Bitwise.mm\n//  LegoCV\n//\n//  Created by Dal Rupnik on 04/03/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVOperation+Bitwise.h\"\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Core/Operations/OCVOperation+Transform.h",
    "content": "//\n//  OCVOperation+Transform.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 04/03/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n\n#import \"OCVObject.h\"\n#import \"OCVInputArrayable.h\"\n#import \"OCVOutputArrayable.h\"\n#import \"OCVInputOutputArrayable.h\"\n\n#import \"OCVGeometry.h\"\n#import \"OCVTypes.h\"\n\n#import \"OCVOperation.h\"\n\nNS_ASSUME_NONNULL_BEGIN\n\n/*!\n *  Wraps transform operations defined in core.hpp such as DFT and DCT\n */\n@interface OCVOperation (Transform)\n\n/*!\n *  cv::dft()\n */\n+ (BOOL)dftWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destinatio;\n+ (BOOL)dftWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination flags:(OCVTransformFlags)flags;\n+ (BOOL)dftWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination flags:(OCVTransformFlags)flags nonZeroRows:(NSInteger)nonZeroRows;\n\n/*!\n *  cv::idft()\n */\n+ (BOOL)idftWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destinatio;\n+ (BOOL)idftWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination flags:(OCVTransformFlags)flags;\n+ (BOOL)idftWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination flags:(OCVTransformFlags)flags nonZeroRows:(NSInteger)nonZeroRows;\n\n/*!\n *  cv::dct()\n */\n+ (BOOL)dctWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destinatio;\n+ (BOOL)dctWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination flags:(OCVTransformFlags)flags;\n+ (BOOL)dctWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination flags:(OCVTransformFlags)flags nonZeroRows:(NSInteger)nonZeroRows;\n\n/*!\n *  cv::idct()\n */\n+ (BOOL)idctWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destinatio;\n+ (BOOL)idctWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination flags:(OCVTransformFlags)flags;\n+ (BOOL)idctWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination flags:(OCVTransformFlags)flags nonZeroRows:(NSInteger)nonZeroRows;\n\n/*!\n *  cv::mulSpectrums()\n */\n+ (BOOL)multiplySpectrumsWithSource:(id<OCVInputArrayable>)source1 withSource:(id<OCVInputArrayable>)source2 toDestination:(id<OCVOutputArrayable>)destinatio;\n+ (BOOL)multiplySpectrumsWithSource:(id<OCVInputArrayable>)source1 withSource:(id<OCVInputArrayable>)source2 toDestination:(id<OCVOutputArrayable>)destination flags:(OCVTransformFlags)flags;\n+ (BOOL)multiplySpectrumsWithSource:(id<OCVInputArrayable>)source1 withSource:(id<OCVInputArrayable>)source2 toDestination:(id<OCVOutputArrayable>)destination flags:(OCVTransformFlags)flags conjugateSecond:(BOOL)conjugateSecond;\n\n/*!\n *  cv::getOptimalDFTSize()\n */\n+ (NSInteger)optimalDFTSizeForVectorSize:(NSInteger)vectorSize;\n\n@end\n\nNS_ASSUME_NONNULL_END\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Core/Operations/OCVOperation+Transform.mm",
    "content": "//\n//  OCVOperation+Transform.mm\n//  LegoCV\n//\n//  Created by Dal Rupnik on 04/03/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVOperation+Transform.h\"\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Core/Operations/OCVOperation.h",
    "content": "//\n//  OCVOperation.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 23/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n#import \"OCVInputArrayable.h\"\n#import \"OCVOutputArrayable.h\"\n#import \"OCVInputOutputArrayable.h\"\n\n#import \"OCVGeometry.h\"\n#import \"OCVTypes.h\"\n\n#import \"OCVVector.h\"\n#import \"OCVUMat.h\"\n\n#import \"OCVMinimumMaximum.h\"\n#import \"OCVTermCriteria.h\"\n\nNS_ASSUME_NONNULL_BEGIN\n\n/*!\n *  Wraps operations defined in core.hpp\n */\n@interface OCVOperation : OCVObject\n\n+ (void)swapMat:(OCVMat *)a toMat:(OCVMat *)b;\n+ (void)swapUMat:(OCVUMat *)a toUMat:(OCVUMat *)b;\n\n+ (NSInteger)borderInterpolateWithPixel:(NSInteger)pixel ofLength:(NSInteger)length withBorderType:(OCVBorderType)borderType;\n\n/*!\n *  cv::copyMakeBorder()\n */\n+ (OCVScalar)copyMakeBorderFromSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination withTop:(NSInteger)top withBottom:(NSInteger)bottom withLeft:(NSInteger)left withRight:(NSInteger)right withBorderType:(OCVBorderType)borderType;\n\n/*!\n *  cv::copyMakeBorder() - Convenience method with custom struct\n */\n+ (OCVScalar)copyMakeBorderFromSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination withEdges:(OCVEdges)edges withBorderType:(OCVBorderType)borderType;\n\n#pragma mark - Basic operations\n\n/*!\n *  cv::add()\n */\n+ (void)addSource:(id<OCVInputArrayable>)source1 toSource:(id<OCVInputArrayable>)source2 toDestination:(id<OCVOutputArrayable>)destination;\n+ (void)addSource:(id<OCVInputArrayable>)source1 toSource:(id<OCVInputArrayable>)source2 toDestination:(id<OCVOutputArrayable>)destination withMask:(id<OCVInputArrayable>)mask;\n+ (void)addSource:(id<OCVInputArrayable>)source1 toSource:(id<OCVInputArrayable>)source2 toDestination:(id<OCVOutputArrayable>)destination withMask:(id<OCVInputArrayable>)mask ofDepthType:(NSInteger)depthType;\n\n/*!\n *  cv::subtract()\n */\n+ (void)subtractSource:(id<OCVInputArrayable>)source1 fromSource:(id<OCVInputArrayable>)source2 toDestination:(id<OCVOutputArrayable>)destination;\n+ (void)subtractSource:(id<OCVInputArrayable>)source1 fromSource:(id<OCVInputArrayable>)source2 toDestination:(id<OCVOutputArrayable>)destination withMask:(id<OCVInputArrayable>)mask;\n+ (void)subtractSource:(id<OCVInputArrayable>)source1 fromSource:(id<OCVInputArrayable>)source2 toDestination:(id<OCVOutputArrayable>)destination withMask:(id<OCVInputArrayable>)mask ofDepthType:(NSInteger)depthType;\n\n/*!\n *  cv::multiply()\n */\n+ (void)multiplySource:(id<OCVInputArrayable>)source1 withSource:(id<OCVInputArrayable>)source2 toDestination:(id<OCVOutputArrayable>)destination;\n+ (void)multiplySource:(id<OCVInputArrayable>)source1 withSource:(id<OCVInputArrayable>)source2 toDestination:(id<OCVOutputArrayable>)destination withScale:(double)scale;\n+ (void)multiplySource:(id<OCVInputArrayable>)source1 withSource:(id<OCVInputArrayable>)source2 toDestination:(id<OCVOutputArrayable>)destination withScale:(double)scale ofDepthType:(NSInteger)depthType;\n\n/*!\n *  cv::divide()\n */\n+ (void)divideSource:(id<OCVInputArrayable>)source1 withSource:(id<OCVInputArrayable>)source2 toDestination:(id<OCVOutputArrayable>)destination;\n+ (void)divideSource:(id<OCVInputArrayable>)source1 withSource:(id<OCVInputArrayable>)source2 toDestination:(id<OCVOutputArrayable>)destination withScale:(double)scale;\n+ (void)divideSource:(id<OCVInputArrayable>)source1 withSource:(id<OCVInputArrayable>)source2 toDestination:(id<OCVOutputArrayable>)destination withScale:(double)scale ofDepthType:(NSInteger)depthType;\n\n+ (void)divideScale:(double)scale withSource:(id<OCVInputArrayable>)source2 toDestination:(id<OCVOutputArrayable>)destination;\n+ (void)divideScale:(double)scale withSource:(id<OCVInputArrayable>)source2 toDestination:(id<OCVOutputArrayable>)destination ofDepthType:(NSInteger)depthType;\n\n/*!\n *  cv::scaleAdd()\n */\n+ (void)scaleAddSource:(id<OCVInputArrayable>)source1 withAlpha:(double)alpha withSource:(id<OCVInputArrayable>)source2 toDestination:(id<OCVOutputArrayable>)destination;\n\n/*!\n *  cv::addWeighted()\n */\n+ (void)addWeightedSource:(id<OCVInputArrayable>)source1 withAlpha:(double)alpha withSource:(id<OCVInputArrayable>)source2 withBeta:(double)beta withGamma:(double)gamma toDestination:(id<OCVOutputArrayable>)destination;\n+ (void)addWeightedSource:(id<OCVInputArrayable>)source1 withAlpha:(double)alpha withSource:(id<OCVInputArrayable>)source2 withBeta:(double)beta withGamma:(double)gamma toDestination:(id<OCVOutputArrayable>)destination ofDepthType:(NSInteger)depthType;\n\n/*!\n *  cv::convertScaleAbs()\n */\n+ (void)convertScaleAbsoluteWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination;\n+ (void)convertScaleAbsoluteWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination withAlpha:(double)alpha;\n+ (void)convertScaleAbsoluteWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination withAlpha:(double)alpha withBeta:(double)beta;\n\n/*!\n *  cv::convertFp16()\n */\n+ (void)convertFp16Source:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination;\n\n/*!\n *  cv::LUT()\n */\n+ (void)lookupTableTransformWithSource:(id<OCVInputArrayable>)source withLookupTable:(id<OCVInputArrayable>)lookupTable toDestination:(id<OCVOutputArrayable>)destination;\n\n/*!\n *  cv::sum()\n */\n+ (OCVScalar)sumOfSource:(id<OCVInputArrayable>)source;\n\n/*!\n *  cv::countNonZero()\n */\n+ (NSInteger)countNonZeroInSource:(id<OCVInputArrayable>)source;\n\n/*!\n *  cv::findNonZero()\n */\n+ (void)findNonZeroInSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination;\n\n/*!\n *  cv::mean()\n */\n+ (OCVScalar)meanOfSource:(id<OCVInputArrayable>)source;\n+ (OCVScalar)meanOfSource:(id<OCVInputArrayable>)source withMask:(id<OCVInputArrayable>)mask;\n\n/*!\n *  cv::meanStdDev()\n */\n+ (void)meanStandardDeviationOfSource:(id<OCVInputArrayable>)source withMean:(id<OCVOutputArrayable>)mean withStandardDeviation:(id<OCVOutputArrayable>)standardDeviation;\n+ (void)meanStandardDeviationOfSource:(id<OCVInputArrayable>)source withMean:(id<OCVOutputArrayable>)mean withStandardDeviation:(id<OCVOutputArrayable>)standardDeviation withMask:(id<OCVInputArrayable>)mask;\n\n/*!\n *  cv::norm()\n */\n+ (double)normOfSource:(id<OCVInputArrayable>)source;\n+ (double)normOfSource:(id<OCVInputArrayable>)source withType:(OCVNormType)normType;\n+ (double)normOfSource:(id<OCVInputArrayable>)source withType:(OCVNormType)normType withMask:(id<OCVInputArrayable>)mask;\n\n/*!\n *  cv::PSNR()\n */\n+ (double)PSNROfSource:(id<OCVInputArrayable>)source1 withSource:(id<OCVInputArrayable>)source2;\n\n/*!\n *  cv::batchDistance()\n */\n+ (void)batchDistanceOfSource:(id<OCVInputArrayable>)source1 toSource:(id<OCVInputArrayable>)source2 toDestination:(id<OCVOutputArrayable>)destination ofDepthType:(NSInteger)depthType toIndex:(id<OCVOutputArrayable>)index;\n+ (void)batchDistanceOfSource:(id<OCVInputArrayable>)source1 toSource:(id<OCVInputArrayable>)source2 toDestination:(id<OCVOutputArrayable>)destination ofDepthType:(NSInteger)depthType toIndex:(id<OCVOutputArrayable>)index withNormType:(OCVNormType)normType;\n+ (void)batchDistanceOfSource:(id<OCVInputArrayable>)source1 toSource:(id<OCVInputArrayable>)source2 toDestination:(id<OCVOutputArrayable>)destination ofDepthType:(NSInteger)depthType toIndex:(id<OCVOutputArrayable>)index withNormType:(OCVNormType)normType withK:(NSInteger)k;\n+ (void)batchDistanceOfSource:(id<OCVInputArrayable>)source1 toSource:(id<OCVInputArrayable>)source2 toDestination:(id<OCVOutputArrayable>)destination ofDepthType:(NSInteger)depthType toIndex:(id<OCVOutputArrayable>)index withNormType:(OCVNormType)normType withK:(NSInteger)k withMask:(id<OCVInputArrayable>)mask;\n+ (void)batchDistanceOfSource:(id<OCVInputArrayable>)source1 toSource:(id<OCVInputArrayable>)source2 toDestination:(id<OCVOutputArrayable>)destination ofDepthType:(NSInteger)depthType toIndex:(id<OCVOutputArrayable>)index withNormType:(OCVNormType)normType withK:(NSInteger)k withMask:(id<OCVInputArrayable>)mask withUpdate:(NSInteger)update;\n+ (void)batchDistanceOfSource:(id<OCVInputArrayable>)source1 toSource:(id<OCVInputArrayable>)source2 toDestination:(id<OCVOutputArrayable>)destination ofDepthType:(NSInteger)depthType toIndex:(id<OCVOutputArrayable>)index withNormType:(OCVNormType)normType withK:(NSInteger)k withMask:(id<OCVInputArrayable>)mask withUpdate:(NSInteger)update withCrosscheck:(BOOL)crosscheck;\n\n/*!\n *  cv::normalize()\n */\n+ (void)normalizeWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVInputOutputArrayable>)destination;\n+ (void)normalizeWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVInputOutputArrayable>)destination withAlpha:(double)alpha;\n+ (void)normalizeWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVInputOutputArrayable>)destination withAlpha:(double)alpha withBeta:(double)beta;\n+ (void)normalizeWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVInputOutputArrayable>)destination withAlpha:(double)alpha withBeta:(double)beta withNormType:(OCVNormType)normType;\n+ (void)normalizeWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVInputOutputArrayable>)destination withAlpha:(double)alpha withBeta:(double)beta withNormType:(OCVNormType)normType ofDepthType:(NSInteger)depthType;\n+ (void)normalizeWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVInputOutputArrayable>)destination withAlpha:(double)alpha withBeta:(double)beta withNormType:(OCVNormType)normType ofDepthType:(NSInteger)depthType withMask:(id<OCVInputArrayable>)mask;\n\n/*!\n *  cv::minMaxLoc()\n */\n+ (void)minimumMaximumLocationInSource:(id<OCVInputArrayable>)source withMinValue:(double *)minValue withMaxValue:(double *)maxValue withMinLocation:(OCVPoint *)minLocation withMaxLocation:(OCVPoint *)maxLocation withMask:(id<OCVInputArrayable>)mask;\n\n\n// Convenience of LegoCV\n+ (OCVMinimumMaximumLocation *)minimumMaximumLocationInSource:(id<OCVInputArrayable>)source;\n+ (OCVMinimumMaximumLocation *)minimumMaximumLocationInSource:(id<OCVInputArrayable>)source withMask:(id<OCVInputArrayable>)mask;\n\n/*!\n *  cv::minMaxIdx()\n */\n+ (void)minimumMaximumIndexInSource:(id<OCVInputArrayable>)source withMinValue:(double *)minValue withMaxValue:(double *)maxValue  withMaxValue:(double *)maxValue withMinIndex:(NSInteger *)minIndex withMaxIndex:(NSInteger *)maxIndex withMask:(id<OCVInputArrayable>)mask;\n\n// Convenience of LegoCV\n+ (OCVMinimumMaximumIndex *)minimumMaximumIndexInSource:(id<OCVInputArrayable>)source;\n+ (OCVMinimumMaximumIndex *)minimumMaximumIndexInSource:(id<OCVInputArrayable>)source withMask:(id<OCVInputArrayable>)mask;\n\n/*!\n *  cv::reduce()\n */\n+ (void)reduceWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination withDimenstion:(NSInteger)dimension withReduceType:(OCVReduceType)reduceType;\n+ (void)reduceWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination withDimenstion:(NSInteger)dimension withReduceType:(OCVReduceType)reduceType ofDepthType:(NSInteger)depthType;\n\n/*!\n *  cv::merge()\n */\n+ (void)mergeWithSource:(OCVMat *)source withCount:(NSInteger)count toDestination:(id<OCVOutputArrayable>)destination;\n+ (void)mergeWithSource:(NSArray<OCVInputArrayable> *)source toDestination:(id<OCVOutputArrayable>)destination;\n\n/*!\n *  cv::split()\n */\n+ (void)splitWithMat:(OCVMat *)source toMat:(OCVMat *)destination;\n+ (void)splitWithSource:(id<OCVInputArrayable>)source toDestination:(NSArray<OCVInputOutputArrayable> *)destination;\n\n/*!\n *  cv::mixChannels()\n *\n *  TODO: Maybe implement an options class as a parameter instead of passing pointers and also a Swift compatible replacement for std::vector.\n */\n+ (void)mixChannelsWithSource:(OCVMat *)mat withNumberOfSources:(NSInteger)numberOfSources toMat:(OCVMat *)destination withNumberOfDestinations:(NSInteger)numberOfDestinations fromTo:(NSInteger *)fromTo withNumberOfPairs:(NSInteger)pairs;\n+ (void)mixChannelsWithSource:(NSArray <OCVInputArrayable> *)source toDestination:(NSArray<OCVInputOutputArrayable> *)destination fromTo:(NSInteger *)fromTo withNumberOfPairs:(NSInteger)pairs;\n+ (void)mixChannelsWithSource:(NSArray <OCVInputArrayable> *)source toDestination:(NSArray<OCVInputOutputArrayable> *)destination fromToIndexes:(OCVVector *)fromToIndexes;\n\n/*!\n *  cv::extractChannel()\n */\n+ (void)extractChannelFromSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination atIndexOfChannel:(NSInteger)indexOfChannel;\n\n/*!\n *  cv::insertChannel()\n */\n+ (void)insertChannelFromSource:(id<OCVInputArrayable>)source toDestination:(id<OCVInputOutputArrayable>)destination atIndexOfChannel:(NSInteger)indexOfChannel;\n\n/*!\n *  cv::flip()\n */\n+ (void)flipWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination withFlipCode:(OCVFlipCode)flipCode;\n\n/*!\n *  cv::rotate()\n */\n+ (void)rotateWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination withTypes:(OCVRotationTypes)types;\n\n/*!\n *  cv::repeat()\n */\n+ (void)repeatWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination withNumberOfYAxis:(NSInteger)ny withNumberOfXAxis:(NSInteger)nx;\n+ (OCVMat *)repeatWithSource:(OCVMat *)source withNumberOfYAxis:(NSInteger)ny withNumberOfXAxis:(NSInteger)nx;\n\n/*!\n *  cv::hconcat()\n */\n+ (void)horizontalConcatenationWithSource:(OCVMat *)mat withNumberOfSources:(NSInteger)numberOfSources toDestination:(id<OCVOutputArrayable>)destination;\n+ (void)horizontalConcatenationWithSource:(id<OCVInputArrayable>)source1 withSource:(id<OCVInputArrayable>)source2 toDestination:(id<OCVOutputArrayable>)destination;\n+ (void)horizontalConcatenationWithSource:(NSArray<OCVInputArrayable> *)source toDestination:(id<OCVOutputArrayable>)destination;\n\n/*!\n *  cv::vconcat()\n */\n+ (void)verticalConcatenationWithSource:(OCVMat *)mat withNumberOfSources:(NSInteger)numberOfSources toDestination:(id<OCVOutputArrayable>)destination;\n+ (void)verticalConcatenationWithSource:(id<OCVInputArrayable>)source1 withSource:(id<OCVInputArrayable>)source2 toDestination:(id<OCVOutputArrayable>)destination;\n+ (void)verticalConcatenationWithSource:(NSArray<OCVInputArrayable> *)source toDestination:(id<OCVOutputArrayable>)destination;\n\n#pragma mark - Other operations\n\n/*!\n *  cv::absdiff()\n */\n+ (void)absoluteDifferenceWithSource:(id<OCVInputArrayable>)source1 withSource:(id<OCVInputArrayable>)source2 toDestination:(id<OCVOutputArrayable>)destination;\n\n/*!\n *  cv::inRange()\n */\n+ (void)absoluteDifferenceWithSource:(id<OCVInputArrayable>)source1 withLowerBoundary:(id<OCVInputArrayable>)lowerBoundary withUpperBoundary:(id<OCVInputArrayable>)upperBoundary toDestination:(id<OCVOutputArrayable>)destination;\n\n/*!\n *  cv::compare()\n */\n+ (void)compareSource:(id<OCVInputArrayable>)source1 withSource:(id<OCVInputArrayable>)source2 toDestination:(id<OCVOutputArrayable>)destination withType:(OCVCompareType)type;\n\n/*!\n *  cv::min()\n *\n *  @note: OpenCV has separate methods for Mat and UMat classes, but this is handled in the implementation.\n */\n+ (void)minWithSource:(id<OCVInputArrayable>)source1 withSource:(id<OCVInputArrayable>)source2 toDestination:(id<OCVOutputArrayable>)destination;\n\n/*!\n *  cv::max()\n *\n *  @note: OpenCV has separate methods for Mat and UMat classes, but this is handled in the implementation.\n */\n+ (void)maxWithSource:(id<OCVInputArrayable>)source1 withSource:(id<OCVInputArrayable>)source2 toDestination:(id<OCVOutputArrayable>)destination;\n\n/*!\n *  cv::sqrt()\n */\n+ (void)sqrtWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination;\n\n/*!\n *  cv::pow()\n */\n+ (void)powWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination withPower:(double)power;\n\n/*!\n *  cv::exp()\n */\n+ (void)expWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination;\n\n/*!\n *  cv::log()\n */\n+ (void)logWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination;\n\n/*!\n *  cv::polarToCart()\n */\n+ (void)polarToCartWithMagnitude:(id<OCVInputArrayable>)magintude withAngle:(id<OCVInputArrayable>)angle toX:(id<OCVOutputArrayable>)x toY:(id<OCVOutputArrayable>)y;\n+ (void)polarToCartWithMagnitude:(id<OCVInputArrayable>)magintude withAngle:(id<OCVInputArrayable>)angle toX:(id<OCVOutputArrayable>)x toY:(id<OCVOutputArrayable>)y withAngleInDegrees:(BOOL)angleInDegrees;\n\n/*!\n *  cv::cartToPolar()\n */\n+ (void)cartToPolarWithX:(id<OCVInputArrayable>)x withY:(id<OCVInputArrayable>)y toMagnitude:(id<OCVOutputArrayable>)magnitude toAngle:(id<OCVOutputArrayable>)angle;\n+ (void)cartToPolarWithX:(id<OCVInputArrayable>)x withY:(id<OCVInputArrayable>)y toMagnitude:(id<OCVOutputArrayable>)magnitude toAngle:(id<OCVOutputArrayable>)angle withAngleInDegrees:(BOOL)angleInDegrees;\n\n/*!\n *  cv::phase()\n */\n+ (void)phaseWithX:(id<OCVInputArrayable>)x withY:(id<OCVInputArrayable>)y toAngle:(id<OCVOutputArrayable>)angle;\n+ (void)phaseWithX:(id<OCVInputArrayable>)x withY:(id<OCVInputArrayable>)y toAngle:(id<OCVOutputArrayable>)angle withAngleInDegrees:(BOOL)angleInDegrees;\n\n/*!\n *  cv::magnitude()\n */\n+ (void)magnitudeWithX:(id<OCVInputArrayable>)x withY:(id<OCVInputArrayable>)y toMagnitude:(id<OCVOutputArrayable>)magnitude;\n\n/*!\n *  cv::checkRange()\n *\n *  TODO: Should we add a result wrapper class?\n */\n+ (BOOL)checkRangeInSource:(id<OCVInputArrayable>)source;\n+ (BOOL)checkRangeInSource:(id<OCVInputArrayable>)source quiet:(BOOL)quiet;\n+ (BOOL)checkRangeInSource:(id<OCVInputArrayable>)source quiet:(BOOL)quiet withPosition:(OCVPoint *)position;\n+ (BOOL)checkRangeInSource:(id<OCVInputArrayable>)source quiet:(BOOL)quiet withPosition:(OCVPoint *)position withMinValue:(double)minValue;\n+ (BOOL)checkRangeInSource:(id<OCVInputArrayable>)source quiet:(BOOL)quiet withPosition:(OCVPoint *)position withMinValue:(double)minValue withMaxValue:(double)maxValue;\n\n/*!\n *  cv::magnitude()\n */\n+ (void)patchNansInSource:(id<OCVInputOutputArrayable>)source;\n+ (void)patchNansInSource:(id<OCVInputOutputArrayable>)source withValue:(double)value;\n\n/*!\n *  cv::gemm()\n */\n+ (void)gemmWithSource:(id<OCVInputArrayable>)source1 withSource:(id<OCVInputArrayable>)source2 withAlpha:(double)alpha withSource:(id<OCVInputArrayable>)source3 withBeta:(double)beta toDestination:(id<OCVOutputArrayable>)destination;\n+ (void)gemmWithSource:(id<OCVInputArrayable>)source1 withSource:(id<OCVInputArrayable>)source2 withAlpha:(double)alpha withSource:(id<OCVInputArrayable>)source3 withBeta:(double)beta toDestination:(id<OCVOutputArrayable>)destination withFlags:(OCVGemmFlags)flags;\n\n/*!\n *  cv::mulTransposed()\n */\n+ (void)multiplyTransposeWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination withOrdering:(BOOL)ordering;\n+ (void)multiplyTransposeWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination withOrdering:(BOOL)ordering withDelta:(id<OCVInputArrayable>)delta;\n+ (void)multiplyTransposeWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination withOrdering:(BOOL)ordering withDelta:(id<OCVInputArrayable>)delta withScale:(double)scale;\n+ (void)multiplyTransposeWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination withOrdering:(BOOL)ordering withDelta:(id<OCVInputArrayable>)delta withScale:(double)scale ofDepthType:(NSInteger)depthType;\n\n/*!\n *  cv::transpose()\n */\n+ (void)transposeWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination;\n\n/*!\n *  cv::transform()\n */\n+ (void)transformWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination withTransformation:(id<OCVInputArrayable>)transformation;\n\n/*!\n *  cv::perspectiveTransform()\n */\n+ (void)perspectiveTransformWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination withTransformation:(id<OCVInputArrayable>)transformation;\n\n/*!\n *  cv::completeSymm()\n */\n+ (void)completeSymmOfSource:(id<OCVInputOutputArrayable>)source;\n+ (void)completeSymmOfSource:(id<OCVInputOutputArrayable>)source withLowerToUpper:(BOOL)lowerToUpper;\n\n/*!\n *  cv::setIdentity()\n */\n+ (void)setIdentityOfSource:(id<OCVInputOutputArrayable>)source;\n+ (void)setIdentityOfSource:(id<OCVInputOutputArrayable>)source withScalar:(OCVScalar)scalar;\n\n/*!\n *  cv::determinant()\n */\n+ (double)determinantOfSource:(id<OCVInputArrayable>)source;\n\n/*!\n *  cv::trace()\n */\n+ (OCVScalar)traceOfSource:(id<OCVInputArrayable>)source;\n\n/*!\n *  cv::invert()\n */\n+ (void)invertSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination;\n+ (void)invertSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination withType:(OCVDecompositionType)type;\n\n/*!\n *  cv::solve()\n */\n+ (void)solveSource:(id<OCVInputArrayable>)source1 withSource:(id<OCVInputArrayable>)source2 toDestination:(id<OCVOutputArrayable>)destination;\n+ (void)solveSource:(id<OCVInputArrayable>)source1 withSource:(id<OCVInputArrayable>)source2 toDestination:(id<OCVOutputArrayable>)destination withType:(OCVDecompositionType)type;\n\n/*!\n *  cv::sort()\n */\n+ (void)sortSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination withTypes:(OCVSortTypes)types;\n\n/*!\n *  cv::sortIdx()\n */\n+ (void)sortIndexSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination withTypes:(OCVSortTypes)types;\n\n/*!\n *  cv::solveCubic()\n */\n+ (NSInteger)solveCubicWithCoefficients:(id<OCVInputArrayable>)coefficients toRoots:(id<OCVOutputArrayable>)roots;\n\n/*!\n *  cv::solvePoly()\n */\n+ (double)solvePolyWithCoefficients:(id<OCVInputArrayable>)coefficients toRoots:(id<OCVOutputArrayable>)roots;\n+ (double)solvePolyWithCoefficients:(id<OCVInputArrayable>)coefficients toRoots:(id<OCVOutputArrayable>)roots maxIterations:(NSInteger)maxIterations;\n\n/*!\n *  cv::eigen()\n */\n+ (BOOL)eigenWithSource:(id<OCVInputArrayable>)source toEigenValues:(id<OCVOutputArrayable>)eigenValues;\n+ (BOOL)eigenWithSource:(id<OCVInputArrayable>)source toEigenValues:(id<OCVOutputArrayable>)eigenValues withEigenVectors:(id<OCVOutputArrayable>)eigenValues;\n\n/*!\n *  cv::calcCovarMatrix()\n */\n+ (void)calcCovarMatrixWithSamples:(OCVMat *)samples numberOfSamples:(NSInteger)numberOfSamples covar:(OCVMat *)covar mean:(OCVMat *)mean flags:(OCVCovarTypes)flags;\n+ (void)calcCovarMatrixWithSamples:(OCVMat *)samples numberOfSamples:(NSInteger)numberOfSamples covar:(OCVMat *)covar mean:(OCVMat *)mean flags:(OCVCovarTypes)flags depthType:(OCVDepthType)depthType;\n\n+ (void)calcCovarMatrixWithSamples:(id<OCVInputArrayable>)samples toCovar:(id<OCVOutputArrayable>)covar mean:(id<OCVInputOutputArrayable>)mean flags:(OCVCovarTypes)flags;\n+ (void)calcCovarMatrixWithSamples:(id<OCVInputArrayable>)samples toCovar:(id<OCVOutputArrayable>)covar mean:(id<OCVInputOutputArrayable>)mean flags:(OCVCovarTypes)flags depthType:(OCVDepthType)depthType;\n\n/*!\n\n TODO: Check if those methods should even be implemented on operation, but rather on specific PCA and SV classes?\n \n  CV_EXPORTS_W void PCACompute(InputArray data, InputOutputArray mean, OutputArray eigenvectors, double retainedVariance);\n  CV_EXPORTS_W void PCAProject(InputArray data, InputArray mean, InputArray eigenvectors, OutputArray result);\n  CV_EXPORTS_W void PCABackProject(InputArray data, InputArray mean, InputArray eigenvectors, OutputArray result);\n  CV_EXPORTS_W void SVDecomp( InputArray src, OutputArray w, OutputArray u, OutputArray vt, int flags = 0 );\n  CV_EXPORTS_W void SVBackSubst( InputArray w, InputArray u, InputArray vt, nputArray rhs, OutputArray dst );\n */\n\n/*!\n *  cv::Mahalanobis()\n */\n+ (double)mahalanobisWithVector:(id<OCVInputArrayable>)vector1 vector2:(id<OCVInputArrayable>)vector2 inverseCovar:(id<OCVInputArrayable>)inverseCovar;\n\n/*!\n *  cv::kmeans()\n */\n+ (double)kmeansWithData:(id<OCVInputArrayable>)data k:(NSInteger)k bestLabels:(id<OCVInputOutputArrayable>)bestLabels termCriteria:(OCVTermCriteria *)termCriteria attempts:(NSInteger)attempts flags:(OCVKMeansTypes)flags centers:(id<OCVOutputArrayable>)centers;\n\n@end\n\nNS_ASSUME_NONNULL_END\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Core/Operations/OCVOperation.mm",
    "content": "//\n//  OCVOperation.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 23/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import <opencv2/core.hpp>\n#import <opencv2/imgproc.hpp>\n\n#import \"OCVGeometry+Private.h\"\n\n#import \"OCVInputArray+Private.h\"\n#import \"OCVOutputArray+Private.h\"\n#import \"OCVInputOutputArray+Private.h\"\n\n#import \"OCVMatDataAllocator+Private.h\"\n\n#import \"OCVOperation.h\"\n\n@implementation OCVOperation\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Core/Operations/OCVTermCriteria.h",
    "content": "//\n//  OCVTermCriteria.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 04/03/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVTermCriteria : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Core/Operations/OCVTermCriteria.m",
    "content": "//\n//  OCVTermCriteria.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 04/03/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVTermCriteria.h\"\n\n@implementation OCVTermCriteria\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Core/Persistence/OCVFileNode.h",
    "content": "//\n//  OCVFileNode.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 07/03/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n#import \"OCVFileStorageFormatDescriptor.h\"\n\n@class OCVMat;\n\ntypedef NS_ENUM(NSInteger, OCVFileNodeType) {\n    OCVFileNodeTypeNone      = 0, //!< empty node\n    OCVFileNodeTypeInteger   = 1, //!< an integer\n    OCVFileNodeTypeReal      = 2, //!< floating-point number\n    OCVFileNodeTypeString    = 3, //!< text string in UTF-8 encoding\n    OCVFileNodeTypeReference = 4, //!< integer of size size_t. Typically used for storing complex dynamic structures where some elements reference the others\n    OCVFileNodeTypeSequence  = 5, //!< sequence\n    OCVFileNodeTypeMap       = 6, //!< mapping\n    OCVFileNodeTypeTypeMask  = 7,\n    OCVFileNodeTypeFlow      = 8,  //!< compact representation of a sequence or mapping. Used only by YAML writer\n    OCVFileNodeTypeUser      = 16, //!< a registered object (e.g. a matrix)\n    OCVFileNodeTypeEmpty     = 32, //!< empty structure (sequence or mapping)\n    OCVFileNodeTypeNamed     = 64  //!< the node has a name (i.e. it is element of a mapping)};\n};\n\nNS_ASSUME_NONNULL_BEGIN\n\n@interface OCVFileNode : OCVObject\n\n@property (nonatomic, readonly) OCVFileNodeType type;\n\n@property (nonatomic, readonly) BOOL isEmpty;\n\n@property (nullable, nonatomic, readonly) NSString* name;\n\n@property (nonatomic, readonly) NSInteger size;\n\n- (instancetype)initWithNode:(OCVFileNode *)node;\n\n//\n// MARK: Subscript\n//\n\n/*!\n *  Only available if type == map\n */\n- (nullable OCVFileNode *)objectAtIndexedSubscript:(NSString *)idx;\n\n/*!\n *  Only available if type == sequence\n */\n- (nullable OCVFileNode *)objectAtIndex:(NSInteger)index;\n\n//\n// TODO: Add File Node Iterator??\n//\n\n#pragma mark - Read methods\n\n- (NSData *)readRawWithFormat:(NSString *)format;\n- (NSData *)readRawWithDescriptor:(OCVFileStorageFormatDescriptor *)descriptor;\n\n//\n// Following methods mimic Foundation NSNumber API.\n//\n\n- (nullable id)objectValue;\n- (int)intValue;\n- (NSInteger)integerValue;\n- (float)floatValue;\n- (double)doubleValue;\n- (nullable NSString *)stringValue;\n\n- (nullable OCVMat *)matValue;\n\n@end\n\nNS_ASSUME_NONNULL_END\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Core/Persistence/OCVFileNode.mm",
    "content": "//\n//  OCVFileNode.mm\n//  LegoCV\n//\n//  Created by Dal Rupnik on 07/03/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVFileNode.h\"\n\n@implementation OCVFileNode\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Core/Persistence/OCVFileStorage.h",
    "content": "//\n//  OCVFileStorage.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 07/03/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n#import \"OCVSerializable.h\"\n#import \"OCVInputArrayable.h\"\n\n\n#import \"OCVFileNode.h\"\n\n/*!\n *  Reference type: cv::FileStorage Mode\n */\ntypedef NS_OPTIONS(NSInteger, OCVFileStorageModes) {\n    OCVFileStorageModeRead          = 0,        //!< value, open the file for reading\n    OCVFileStorageModeWrite         = 1,        //!< value, open the file for writing\n    OCVFileStorageModeAppend        = 2,        //!< value, open the file for appending\n    OCVFileStorageModeMemory        = 4,        //!< flag, read data from source or write data to the internal buffer (which is\n    OCVFileStorageModeFormatMask    = (7<<3),   //!< mask for format flags\n    OCVFileStorageModeFormatAuto    = 0,        //!< flag, auto format\n    OCVFileStorageModeFormatXML     = (1<<3),   //!< flag, XML format\n    OCVFileStorageModeFormatYAML    = (2<<3),   //!< flag, YAML format\n    OCVFileStorageModeFormatJSON    = (3<<3),   //!< flag, JSON format\n    \n    OCVFileStorageModeBase64        = 64,       //!< flag, write rawdata in Base64 by default. (consider using OCVFileStorageModeWriteBase64)\n    OCVFileStorageModeWriteBase64   = OCVFileStorageModeBase64 | OCVFileStorageModeWrite, //!< flag, enable both Write and Base64\n};\n\nNS_ASSUME_NONNULL_BEGIN\n\n/*!\n *  cv::FileStorage\n */\n@interface OCVFileStorage : OCVObject\n\n#pragma mark - Public Properties\n\n@property (nonatomic, readonly) NSInteger state;\n@property (nonatomic, readonly) BOOL isOpened;\n@property (nullable, nonatomic, readonly) NSString *elementName;\n\n#pragma mark - Initialization\n\n- (instancetype)initWithPath:(NSString *)path mode:(OCVFileStorageModes)mode;\n\n- (instancetype)initWithPath:(NSString *)path mode:(OCVFileStorageModes)mode encoding:(NSStringEncoding)encoding;\n\n#pragma mark - Public Methods\n\n- (void)openWithPath:(NSString *)path mode:(OCVFileStorageModes)mode;\n- (void)openWithPath:(NSString *)path mode:(OCVFileStorageModes)mode encoding:(NSStringEncoding)encoding;\n\n- (nullable OCVFileNode *)firstTopLevelNode;\n\n- (nullable OCVFileNode *)root;\n- (nullable OCVFileNode *)rootWithStreamIndex:(NSInteger)streamIndex;\n\n//\n// MARK: Subscript\n//\n- (nullable OCVFileNode *)objectAtIndexedSubscript:(NSString *)idx;\n\n// Should do nothing, only allows access.\n//- (void)setObject:(id)obj atIndexedSubscript:(NSString *)idx;\n\n#pragma mark - Write Methods\n\n- (void)writeRawWithFormat:(NSString *)format data:(NSData *)data;\n- (void)writeRawWithFormat:(NSString *)format data:(void *)data length:(NSInteger)length;\n\n- (void)writeRawWithDescriptor:(OCVFileStorageFormatDescriptor *)descriptor data:(NSData *)data;\n- (void)writeRawWithDescriptor:(OCVFileStorageFormatDescriptor *)descriptor data:(void *)data length:(NSInteger)length;\n\n- (void)writeObject:(id<OCVSerializable>)object withName:(NSString *)name;\n\n- (void)writeDouble:(double)value withName:(NSString *)name;\n- (void)writeString:(NSString *)string withName:(NSString *)name;\n- (void)writeSource:(id<OCVInputArrayable>)source withName:(NSString *)name;\n\n- (void)writeComment:(NSString *)comment;\n- (void)writeComment:(NSString *)comment append:(BOOL)append;\n\n- (void)writeInt:(int)value;\n- (void)writeInteger:(NSInteger)value;\n- (void)writeFloat:(float)value;\n- (void)writeDouble:(double)value;\n- (void)writeString:(NSString *)value;\n\n#pragma mark - Class Methods\n\n+ (NSString *)defaultObjectNameForFilename:(NSString *)filename;\n\n@end\n\nNS_ASSUME_NONNULL_END\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Core/Persistence/OCVFileStorage.mm",
    "content": "//\n//  OCVFileStorage.mm\n//  LegoCV\n//\n//  Created by Dal Rupnik on 07/03/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVFileStorage.h\"\n\n@implementation OCVFileStorage\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Core/Persistence/OCVFileStorageFormatDescriptor.h",
    "content": "//\n//  OCVFileStorageFormatDescriptor.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 07/03/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\ntypedef NS_ENUM(NSInteger, OCVFileStorageFormatType) {\n    OCVFileStorageFormatType8BitUnsigned,\n    OCVFileStorageFormatType8BitSigned,\n    OCVFileStorageFormatType16BitUnsigned,\n    OCVFileStorageFormatType16BitSigned,\n    OCVFileStorageFormatType32BitSigned,\n    OCVFileStorageFormatTypeSinglePrecisionFloat,\n    OCVFileStorageFormatTypeDoublePrecisionFloat,\n    OCVFileStorageFormatType32BitPointer\n};\n\nNS_ASSUME_NONNULL_BEGIN\n/*!\n *  See @format_spec in OpenCV\n *\n *  Describes format of the array being written.\n */\n@interface OCVFileStorageFormatDescriptor : OCVObject\n\n/*!\n *  Converted format for OpenCV\n */\n@property (nonatomic, readonly) NSString *format;\n\n- (void)addFormatOfType:(OCVFileStorageFormatType)type;\n- (void)addFormatOfType:(OCVFileStorageFormatType)type withCount:(NSInteger)count;\n\n@end\n\nNS_ASSUME_NONNULL_END\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Core/Persistence/OCVFileStorageFormatDescriptor.m",
    "content": "//\n//  OCVFileStorageFormatDescriptor.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 07/03/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVFileStorageFormatDescriptor.h\"\n\nNSString* NSStringFromFileStorageFormatType(OCVFileStorageFormatType type) {\n    switch (type) {\n        case OCVFileStorageFormatType8BitUnsigned:\n            return @\"u\";\n        case OCVFileStorageFormatType8BitSigned:\n            return @\"c\";\n        case OCVFileStorageFormatType16BitUnsigned:\n            return @\"w\";\n        case OCVFileStorageFormatType16BitSigned:\n            return @\"s\";\n        case OCVFileStorageFormatType32BitSigned:\n            return @\"i\";\n        case OCVFileStorageFormatTypeSinglePrecisionFloat:\n            return @\"f\";\n        case OCVFileStorageFormatTypeDoublePrecisionFloat:\n            return @\"d\";\n        case OCVFileStorageFormatType32BitPointer:\n            return @\"r\";\n        default:\n            return @\"\";\n    }\n}\n\n@interface OCVFileStorageFormatDescriptor ()\n\n@property (nonatomic, strong) NSMutableString *formatStore;\n\n@end\n\n@implementation OCVFileStorageFormatDescriptor\n\n#pragma mark - Properties\n\n- (NSMutableString *)formatStore {\n    if (!_formatStore) {\n        _formatStore = [[NSMutableString alloc] init];\n    }\n    \n    return _formatStore;\n}\n\n- (NSString *)format {\n    return [self.formatStore copy];\n}\n\n#pragma mark - Public Methods\n\n- (void)addFormatOfType:(OCVFileStorageFormatType)type {\n    [self.formatStore appendString:NSStringFromFileStorageFormatType(type)];\n}\n\n- (void)addFormatOfType:(OCVFileStorageFormatType)type withCount:(NSInteger)count {\n    if (count > 1) {\n        [self.formatStore appendFormat:@\"%ldd\", (long)count];\n    }\n    \n    [self.formatStore appendString:NSStringFromFileStorageFormatType(type)];\n}\n\n@end\n\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Core/Persistence/OCVPersistence.h",
    "content": "//\n//  OCVPersistence.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 07/03/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#ifndef OCVPersistence_h\n#define OCVPersistence_h\n\n#import \"OCVFileStorage.h\"\n#import \"OCVFileNode.h\"\n#import \"OCVSerializable.h\"\n\n#endif /* OCVPersistence_h */\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Core/Persistence/OCVSerializable.h",
    "content": "//\n//  OCVSerializable.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 07/03/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#ifndef OCVSerializable_h\n#define OCVSerializable_h\n\n#import <Foundation/Foundation.h>\n\n@protocol OCVSerializable <NSObject>\n\n@end\n\n#endif /* OCVSerializable_h */\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Core/Private/OCVGeometry+Private.h",
    "content": "//\n//  OCVGeometry+Private.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 30/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#ifndef OCVGeometry_Private_h\n#define OCVGeometry_Private_h\n\n#import \"OCVPoint+Private.h\"\n#import \"OCVSize+Private.h\"\n#import \"OCVRect+Private.h\"\n\n#endif /* OCVGeometry_Private_h */\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Core/Private/OCVInputArray+Private.h",
    "content": "//\n//  OCVInputArray+Private.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 24/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVInputArray.h\"\n#import <opencv2/core/mat.hpp>\n\n@interface OCVInputArray (OpenCV)\n\n@property (nonatomic, assign) cv::_InputArray *arrayReference;\n\n@property (nonatomic, readonly) cv::_InputArray *_input;\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Core/Private/OCVInputOutputArray+Private.h",
    "content": "//\n//  OCVInputOutputArray+Private.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 24/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVInputOutputArray.h\"\n#import <opencv2/core/mat.hpp>\n\n@interface OCVInputOutputArray (OpenCV)\n\n@property (nonatomic, readonly) cv::_InputOutputArray *_inputOutput;\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Core/Private/OCVMatDataAllocator+Private.h",
    "content": "//\n//  OCVMatDataAllocator+Private.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 24/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n//\n// MARK: Unavailable in Swift, convenience for OpenCV, should be private\n//\n\n#import \"OCVMatDataAllocator.h\"\n#import <opencv2/core/mat.hpp>\n\n@interface OCVMatDataAllocator (OpenCV)\n\n@property (nonatomic, readonly) cv::Mat *source;\n\n- (instancetype)initWithMatInstance:(cv::Mat *)mat;\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Core/Private/OCVOutputArray+Private.h",
    "content": "//\n//  OCVOutputArray+Private.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 24/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVOutputArray.h\"\n#import <opencv2/core/mat.hpp>\n\n@interface OCVOutputArray (OpenCV)\n\n@property (nonatomic, readonly) cv::_OutputArray *_output;\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Core/Private/OCVPoint+Private.h",
    "content": "//\n//  OCVPoint+Private.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 30/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVPoint.h\"\n\n#import <opencv2/core.hpp>\n\ncv::Point convertPoint(OCVPoint point);\nOCVPoint convertPoint(cv::Point point);\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Core/Private/OCVPoint+Private.mm",
    "content": "//\n//  OCVPoint+Private.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 30/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVPoint+Private.h\"\n\ncv::Point convertPoint(OCVPoint point) {\n    cv::Point finalPoint;\n    finalPoint.x = (int)point.x;\n    finalPoint.y = (int)point.y;\n\n    return finalPoint;\n}\n\nOCVPoint convertPoint(cv::Point point) {\n    OCVPoint finalPoint;\n    finalPoint.x = point.x;\n    finalPoint.y = point.y;\n    \n    return finalPoint;\n}\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Core/Private/OCVRect+Private.h",
    "content": "//\n//  OCVRect+Private.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 24/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVRect.h\"\n\n#import <opencv2/core.hpp>\n\ncv::Rect convertRect(OCVRect rect);\nOCVRect convertRect(cv::Rect rect);\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Core/Private/OCVRect+Private.mm",
    "content": "//\n//  OCVRect+Private.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 30/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVRect+Private.h\"\n\n#import <opencv2/core.hpp>\n\ncv::Rect convertRect(OCVRect rect) {\n    cv::Rect finalRect;\n    \n    finalRect.x = (int)rect.origin.x;\n    finalRect.y = (int)rect.origin.y;\n    finalRect.width = (int)rect.size.width;\n    finalRect.height = (int)rect.size.height;\n    \n    return finalRect;\n}\n\nOCVRect convertRect(cv::Rect rect) {\n    OCVRect finalRect;\n    finalRect.origin.x = rect.x;\n    finalRect.origin.y = rect.y;\n    finalRect.size.width = rect.width;\n    finalRect.size.height = rect.height;\n    \n    return finalRect;\n}\n\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Core/Private/OCVSize+Private.h",
    "content": "//\n//  OCVSize+Private.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 24/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVSize.h\"\n#import <opencv2/core.hpp>\n\ncv::Size convertSize(OCVSize size);\nOCVSize convertSize(cv::Size size);\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Core/Private/OCVSize+Private.mm",
    "content": "//\n//  OCVSize+Private.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 30/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVSize+Private.h\"\n#import <opencv2/core.hpp>\n\ncv::Size convertSize(OCVSize size) {\n    cv::Size finalSize;\n    finalSize.width = (int)size.width;\n    finalSize.height = (int)size.height;\n    \n    return finalSize;\n}\n\nOCVSize convertSize(cv::Size size) {\n    OCVSize finalSize;\n    finalSize.width = size.width;\n    finalSize.height = size.height;\n    \n    return finalSize;\n}\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Cuda/OCVGPUMat.h",
    "content": "//\n//  OCVGPUMat.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVGPUMat : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Cuda/OCVGPUMat.m",
    "content": "//\n//  OCVGPUMat.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVGPUMat.h\"\n\n@implementation OCVGPUMat\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/CvEnum/OCVStorageOperationType.h",
    "content": "//\n//  OCVStorageOperationType.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVStorageOperationType : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/CvEnum/OCVStorageOperationType.m",
    "content": "//\n//  OCVStorageOperationType.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVStorageOperationType.h\"\n\n@implementation OCVStorageOperationType\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Cvb/OCVBlob.h",
    "content": "//\n//  OCVBlob.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVBlob : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Cvb/OCVBlob.m",
    "content": "//\n//  OCVBlob.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVBlob.h\"\n\n@implementation OCVBlob\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Dnn/OCVImporter.h",
    "content": "//\n//  OCVImporter.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVImporter : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Dnn/OCVImporter.m",
    "content": "//\n//  OCVImporter.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVImporter.h\"\n\n@implementation OCVImporter\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Dnn/OCVNet.h",
    "content": "//\n//  OCVNet.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVNet : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Dnn/OCVNet.m",
    "content": "//\n//  OCVNet.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVNet.h\"\n\n@implementation OCVNet\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Face/OCVEigenFaceRecognizer.h",
    "content": "//\n//  OCVEigenFaceRecognizer.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVEigenFaceRecognizer : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Face/OCVEigenFaceRecognizer.m",
    "content": "//\n//  OCVEigenFaceRecognizer.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVEigenFaceRecognizer.h\"\n\n@implementation OCVEigenFaceRecognizer\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Face/OCVFaceRecognizer.h",
    "content": "//\n//  OCVFaceRecognizer.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVFaceRecognizer : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Face/OCVFaceRecognizer.m",
    "content": "//\n//  OCVFaceRecognizer.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVFaceRecognizer.h\"\n\n@implementation OCVFaceRecognizer\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Face/OCVFisherFaceRecognizer.h",
    "content": "//\n//  OCVFisherFaceRecognizer.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVFisherFaceRecognizer : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Face/OCVFisherFaceRecognizer.m",
    "content": "//\n//  OCVFisherFaceRecognizer.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVFisherFaceRecognizer.h\"\n\n@implementation OCVFisherFaceRecognizer\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Face/OCVLBPHFaceRecognizer.h",
    "content": "//\n//  OCVLBPHFaceRecognizer.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVLBPHFaceRecognizer : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Face/OCVLBPHFaceRecognizer.m",
    "content": "//\n//  OCVLBPHFaceRecognizer.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVLBPHFaceRecognizer.h\"\n\n@implementation OCVLBPHFaceRecognizer\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Features2D/OCVFeature2D.h",
    "content": "//\n//  OCVFeature2D.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVFeature2D : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Features2D/OCVFeature2D.m",
    "content": "//\n//  OCVFeature2D.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVFeature2D.h\"\n\n@implementation OCVFeature2D\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Flann/OCVIndex.h",
    "content": "//\n//  OCVIndex.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVIndex : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Flann/OCVIndex.m",
    "content": "//\n//  OCVIndex.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVIndex.h\"\n\n@implementation OCVIndex\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Fuzzy/OCVFuzzyInvoke.h",
    "content": "//\n//  OCVFuzzyInvoke.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVFuzzyInvoke : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Fuzzy/OCVFuzzyInvoke.m",
    "content": "//\n//  OCVFuzzyInvoke.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVFuzzyInvoke.h\"\n\n@implementation OCVFuzzyInvoke\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Geodetic/OCVGeodeticCoordinate.h",
    "content": "//\n//  OCVGeodeticCoordinate.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVGeodeticCoordinate : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Geodetic/OCVGeodeticCoordinate.m",
    "content": "//\n//  OCVGeodeticCoordinate.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVGeodeticCoordinate.h\"\n\n@implementation OCVGeodeticCoordinate\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/ImageProcessing/OCVColorConversionType.h",
    "content": "//\n//  OCVColorConversionType.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 23/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#ifndef OCVColorConversionType_h\n#define OCVColorConversionType_h\n\n/*!\n *  Reference type: cv::ColorConversionCodes\n */\ntypedef NS_ENUM(NSInteger, OCVColorConversionType) {\n    OCVColorConversionTypeBGR2BGRA    = 0,\n    OCVColorConversionTypeRGB2RGBA    = OCVColorConversionTypeBGR2BGRA,\n    \n    OCVColorConversionTypeBGRA2BGR    = 1,\n    OCVColorConversionTypeRGBA2RGB    = OCVColorConversionTypeBGRA2BGR,\n    \n    OCVColorConversionTypeBGR2RGBA    = 2,\n    OCVColorConversionTypeRGB2BGRA    = OCVColorConversionTypeBGR2RGBA,\n    \n    OCVColorConversionTypeRGBA2BGR    = 3,\n    OCVColorConversionTypeBGRA2RGB    = OCVColorConversionTypeRGBA2BGR,\n    \n    OCVColorConversionTypeBGR2RGB     = 4,\n    OCVColorConversionTypeRGB2BGR     = OCVColorConversionTypeBGR2RGB,\n    \n    OCVColorConversionTypeBGRA2RGBA   = 5,\n    OCVColorConversionTypeRGBA2BGRA   = OCVColorConversionTypeBGRA2RGBA,\n    \n    OCVColorConversionTypeBGR2GRAY    = 6,\n    OCVColorConversionTypeRGB2GRAY    = 7,\n    OCVColorConversionTypeGRAY2BGR    = 8,\n    OCVColorConversionTypeGRAY2RGB    = OCVColorConversionTypeGRAY2BGR,\n    OCVColorConversionTypeGRAY2BGRA   = 9,\n    OCVColorConversionTypeGRAY2RGBA   = OCVColorConversionTypeGRAY2BGRA,\n    OCVColorConversionTypeBGRA2GRAY   = 10,\n    OCVColorConversionTypeRGBA2GRAY   = 11,\n    \n    OCVColorConversionTypeBGR2BGR565  = 12,\n    OCVColorConversionTypeRGB2BGR565  = 13,\n    OCVColorConversionTypeBGR5652BGR  = 14,\n    OCVColorConversionTypeBGR5652RGB  = 15,\n    OCVColorConversionTypeBGRA2BGR565 = 16,\n    OCVColorConversionTypeRGBA2BGR565 = 17,\n    OCVColorConversionTypeBGR5652BGRA = 18,\n    OCVColorConversionTypeBGR5652RGBA = 19,\n    \n    OCVColorConversionTypeGRAY2BGR565 = 20,\n    OCVColorConversionTypeBGR5652GRAY = 21,\n    \n    OCVColorConversionTypeBGR2BGR555  = 22,\n    OCVColorConversionTypeRGB2BGR555  = 23,\n    OCVColorConversionTypeBGR5552BGR  = 24,\n    OCVColorConversionTypeBGR5552RGB  = 25,\n    OCVColorConversionTypeBGRA2BGR555 = 26,\n    OCVColorConversionTypeRGBA2BGR555 = 27,\n    OCVColorConversionTypeBGR5552BGRA = 28,\n    OCVColorConversionTypeBGR5552RGBA = 29,\n    \n    OCVColorConversionTypeGRAY2BGR555 = 30,\n    OCVColorConversionTypeBGR5552GRAY = 31,\n    \n    OCVColorConversionTypeBGR2XYZ     = 32,\n    OCVColorConversionTypeRGB2XYZ     = 33,\n    OCVColorConversionTypeXYZ2BGR     = 34,\n    OCVColorConversionTypeXYZ2RGB     = 35,\n    \n    OCVColorConversionTypeBGR2YCrCb   = 36,\n    OCVColorConversionTypeRGB2YCrCb   = 37,\n    OCVColorConversionTypeYCrCb2BGR   = 38,\n    OCVColorConversionTypeYCrCb2RGB   = 39,\n    \n    OCVColorConversionTypeBGR2HSV     = 40,\n    OCVColorConversionTypeRGB2HSV     = 41,\n    \n    OCVColorConversionTypeBGR2Lab     = 44,\n    OCVColorConversionTypeRGB2Lab     = 45,\n    \n    OCVColorConversionTypeBayerBG2BGR = 46,\n    OCVColorConversionTypeBayerGB2BGR = 47,\n    OCVColorConversionTypeBayerRG2BGR = 48,\n    OCVColorConversionTypeBayerGR2BGR = 49,\n    \n    OCVColorConversionTypeBayerBG2RGB = OCVColorConversionTypeBayerRG2BGR,\n    OCVColorConversionTypeBayerGB2RGB = OCVColorConversionTypeBayerGR2BGR,\n    OCVColorConversionTypeBayerRG2RGB = OCVColorConversionTypeBayerBG2BGR,\n    OCVColorConversionTypeBayerGR2RGB = OCVColorConversionTypeBayerGB2BGR,\n    \n    OCVColorConversionTypeBGR2Luv     = 50,\n    OCVColorConversionTypeRGB2Luv     = 51,\n    OCVColorConversionTypeBGR2HLS     = 52,\n    OCVColorConversionTypeRGB2HLS     = 53,\n    \n    OCVColorConversionTypeHSV2BGR     = 54,\n    OCVColorConversionTypeHSV2RGB     = 55,\n    \n    OCVColorConversionTypeLab2BGR     = 56,\n    OCVColorConversionTypeLab2RGB     = 57,\n    OCVColorConversionTypeLuv2BGR     = 58,\n    OCVColorConversionTypeLuv2RGB     = 59,\n    OCVColorConversionTypeHLS2BGR     = 60,\n    OCVColorConversionTypeHLS2RGB     = 61,\n    \n    OCVColorConversionTypeBayerBG2BGRVng = 62,\n    OCVColorConversionTypeBayerGB2BGRVng = 63,\n    OCVColorConversionTypeBayerRG2BGRVng = 64,\n    OCVColorConversionTypeBayerGR2BGRVng = 65,\n    \n    OCVColorConversionTypeBayerBG2RGBVng = OCVColorConversionTypeBayerRG2BGRVng,\n    OCVColorConversionTypeBayerGB2RGBVng = OCVColorConversionTypeBayerGR2BGRVng,\n    OCVColorConversionTypeBayerRG2RGBVng = OCVColorConversionTypeBayerBG2BGRVng,\n    OCVColorConversionTypeBayerGR2RGBVng = OCVColorConversionTypeBayerGB2BGRVng,\n    \n    OCVColorConversionTypeBGR2HSVFull = 66,\n    OCVColorConversionTypeRGB2HSVFull = 67,\n    OCVColorConversionTypeBGR2HLSFull = 68,\n    OCVColorConversionTypeRGB2HLSFull = 69,\n    \n    OCVColorConversionTypeHSV2BGRFull = 70,\n    OCVColorConversionTypeHSV2RGBFull = 71,\n    OCVColorConversionTypeHLS2BGRFull = 72,\n    OCVColorConversionTypeHLS2RGBFull = 73,\n    \n    OCVColorConversionTypeLBGR2Lab     = 74,\n    OCVColorConversionTypeLRGB2Lab     = 75,\n    OCVColorConversionTypeLBGR2Luv     = 76,\n    OCVColorConversionTypeLRGB2Luv     = 77,\n    \n    OCVColorConversionTypeLab2LBGR     = 78,\n    OCVColorConversionTypeLab2LRGB     = 79,\n    OCVColorConversionTypeLuv2LBGR     = 80,\n    OCVColorConversionTypeLuv2LRGB     = 81,\n    \n    OCVColorConversionTypeBGR2YUV      = 82,\n    OCVColorConversionTypeRGB2YUV      = 83,\n    OCVColorConversionTypeYUV2BGR      = 84,\n    OCVColorConversionTypeYUV2RGB      = 85,\n    \n    OCVColorConversionTypeBayerBG2GRAY = 86,\n    OCVColorConversionTypeBayerGB2GRAY = 87,\n    OCVColorConversionTypeBayerRG2GRAY = 88,\n    OCVColorConversionTypeBayerGR2GRAY = 89,\n    \n    //YUV 4:2:0 formats family\n    OCVColorConversionTypeYUV2RGB_NV12 = 90,\n    OCVColorConversionTypeYUV2BGR_NV12 = 91,\n    OCVColorConversionTypeYUV2RGB_NV21 = 92,\n    OCVColorConversionTypeYUV2BGR_NV21 = 93,\n    OCVColorConversionTypeYUV420sp2RGB = OCVColorConversionTypeYUV2RGB_NV21,\n    OCVColorConversionTypeYUV420sp2BGR = OCVColorConversionTypeYUV2BGR_NV21,\n    \n    OCVColorConversionTypeYUV2RGBA_NV12 = 94,\n    OCVColorConversionTypeYUV2BGRA_NV12 = 95,\n    OCVColorConversionTypeYUV2RGBA_NV21 = 96,\n    OCVColorConversionTypeYUV2BGRA_NV21 = 97,\n    OCVColorConversionTypeYUV420sp2RGBA = OCVColorConversionTypeYUV2RGBA_NV21,\n    OCVColorConversionTypeYUV420sp2BGRA = OCVColorConversionTypeYUV2BGRA_NV21,\n    \n    OCVColorConversionTypeYUV2RGB_YV12 = 98,\n    OCVColorConversionTypeYUV2BGR_YV12 = 99,\n    OCVColorConversionTypeYUV2RGB_IYUV = 100,\n    OCVColorConversionTypeYUV2BGR_IYUV = 101,\n    OCVColorConversionTypeYUV2RGB_I420 = OCVColorConversionTypeYUV2RGB_IYUV,\n    OCVColorConversionTypeYUV2BGR_I420 = OCVColorConversionTypeYUV2BGR_IYUV,\n    OCVColorConversionTypeYUV420p2RGB = OCVColorConversionTypeYUV2RGB_YV12,\n    OCVColorConversionTypeYUV420p2BGR = OCVColorConversionTypeYUV2BGR_YV12,\n    \n    OCVColorConversionTypeYUV2RGBA_YV12 = 102,\n    OCVColorConversionTypeYUV2BGRA_YV12 = 103,\n    OCVColorConversionTypeYUV2RGBA_IYUV = 104,\n    OCVColorConversionTypeYUV2BGRA_IYUV = 105,\n    OCVColorConversionTypeYUV2RGBA_I420 = OCVColorConversionTypeYUV2RGBA_IYUV,\n    OCVColorConversionTypeYUV2BGRA_I420 = OCVColorConversionTypeYUV2BGRA_IYUV,\n    OCVColorConversionTypeYUV420p2RGBA = OCVColorConversionTypeYUV2RGBA_YV12,\n    OCVColorConversionTypeYUV420p2BGRA = OCVColorConversionTypeYUV2BGRA_YV12,\n    \n    OCVColorConversionTypeYUV2GRAY_420 = 106,\n    OCVColorConversionTypeYUV2GRAY_NV21 = OCVColorConversionTypeYUV2GRAY_420,\n    OCVColorConversionTypeYUV2GRAY_NV12 = OCVColorConversionTypeYUV2GRAY_420,\n    OCVColorConversionTypeYUV2GRAY_YV12 = OCVColorConversionTypeYUV2GRAY_420,\n    OCVColorConversionTypeYUV2GRAY_IYUV = OCVColorConversionTypeYUV2GRAY_420,\n    OCVColorConversionTypeYUV2GRAY_I420 = OCVColorConversionTypeYUV2GRAY_420,\n    OCVColorConversionTypeYUV420sp2GRAY = OCVColorConversionTypeYUV2GRAY_420,\n    OCVColorConversionTypeYUV420p2GRAY = OCVColorConversionTypeYUV2GRAY_420,\n    \n    //YUV 4:2:2 formats family\n    OCVColorConversionTypeYUV2RGB_UYVY = 107,\n    OCVColorConversionTypeYUV2BGR_UYVY = 108,\n    //OCVColorConversionTypeYUV2RGB_VYUY = 109,\n    //OCVColorConversionTypeYUV2BGR_VYUY = 110,\n    OCVColorConversionTypeYUV2RGB_Y422 = OCVColorConversionTypeYUV2RGB_UYVY,\n    OCVColorConversionTypeYUV2BGR_Y422 = OCVColorConversionTypeYUV2BGR_UYVY,\n    OCVColorConversionTypeYUV2RGB_UYNV = OCVColorConversionTypeYUV2RGB_UYVY,\n    OCVColorConversionTypeYUV2BGR_UYNV = OCVColorConversionTypeYUV2BGR_UYVY,\n    \n    OCVColorConversionTypeYUV2RGBA_UYVY = 111,\n    OCVColorConversionTypeYUV2BGRA_UYVY = 112,\n    //OCVColorConversionTypeYUV2RGBA_VYUY = 113,\n    //OCVColorConversionTypeYUV2BGRA_VYUY = 114,\n    OCVColorConversionTypeYUV2RGBA_Y422 = OCVColorConversionTypeYUV2RGBA_UYVY,\n    OCVColorConversionTypeYUV2BGRA_Y422 = OCVColorConversionTypeYUV2BGRA_UYVY,\n    OCVColorConversionTypeYUV2RGBA_UYNV = OCVColorConversionTypeYUV2RGBA_UYVY,\n    OCVColorConversionTypeYUV2BGRA_UYNV = OCVColorConversionTypeYUV2BGRA_UYVY,\n    \n    OCVColorConversionTypeYUV2RGB_YUY2 = 115,\n    OCVColorConversionTypeYUV2BGR_YUY2 = 116,\n    OCVColorConversionTypeYUV2RGB_YVYU = 117,\n    OCVColorConversionTypeYUV2BGR_YVYU = 118,\n    OCVColorConversionTypeYUV2RGB_YUYV = OCVColorConversionTypeYUV2RGB_YUY2,\n    OCVColorConversionTypeYUV2BGR_YUYV = OCVColorConversionTypeYUV2BGR_YUY2,\n    OCVColorConversionTypeYUV2RGB_YUNV = OCVColorConversionTypeYUV2RGB_YUY2,\n    OCVColorConversionTypeYUV2BGR_YUNV = OCVColorConversionTypeYUV2BGR_YUY2,\n    \n    OCVColorConversionTypeYUV2RGBA_YUY2 = 119,\n    OCVColorConversionTypeYUV2BGRA_YUY2 = 120,\n    OCVColorConversionTypeYUV2RGBA_YVYU = 121,\n    OCVColorConversionTypeYUV2BGRA_YVYU = 122,\n    OCVColorConversionTypeYUV2RGBA_YUYV = OCVColorConversionTypeYUV2RGBA_YUY2,\n    OCVColorConversionTypeYUV2BGRA_YUYV = OCVColorConversionTypeYUV2BGRA_YUY2,\n    OCVColorConversionTypeYUV2RGBA_YUNV = OCVColorConversionTypeYUV2RGBA_YUY2,\n    OCVColorConversionTypeYUV2BGRA_YUNV = OCVColorConversionTypeYUV2BGRA_YUY2,\n    \n    OCVColorConversionTypeYUV2GRAY_UYVY = 123,\n    OCVColorConversionTypeYUV2GRAY_YUY2 = 124,\n    //OCVColorConversionTypeYUV2GRAY_VYUY = OCVColorConversionTypeYUV2GRAY_UYVY,\n    OCVColorConversionTypeYUV2GRAY_Y422 = OCVColorConversionTypeYUV2GRAY_UYVY,\n    OCVColorConversionTypeYUV2GRAY_UYNV = OCVColorConversionTypeYUV2GRAY_UYVY,\n    OCVColorConversionTypeYUV2GRAY_YVYU = OCVColorConversionTypeYUV2GRAY_YUY2,\n    OCVColorConversionTypeYUV2GRAY_YUYV = OCVColorConversionTypeYUV2GRAY_YUY2,\n    OCVColorConversionTypeYUV2GRAY_YUNV = OCVColorConversionTypeYUV2GRAY_YUY2,\n    \n    // alpha premultiplication\n    OCVColorConversionTypeRGBA2mRGBA = 125,\n    OCVColorConversionTypemRGBA2RGBA = 126,\n    \n    OCVColorConversionTypeRGB2YUV_I420 = 127,\n    OCVColorConversionTypeBGR2YUV_I420 = 128,\n    OCVColorConversionTypeRGB2YUV_IYUV = OCVColorConversionTypeRGB2YUV_I420,\n    OCVColorConversionTypeBGR2YUV_IYUV = OCVColorConversionTypeBGR2YUV_I420,\n    \n    OCVColorConversionTypeRGBA2YUV_I420 = 129,\n    OCVColorConversionTypeBGRA2YUV_I420 = 130,\n    OCVColorConversionTypeRGBA2YUV_IYUV = OCVColorConversionTypeRGBA2YUV_I420,\n    OCVColorConversionTypeBGRA2YUV_IYUV = OCVColorConversionTypeBGRA2YUV_I420,\n    OCVColorConversionTypeRGB2YUV_YV12  = 131,\n    OCVColorConversionTypeBGR2YUV_YV12  = 132,\n    OCVColorConversionTypeRGBA2YUV_YV12 = 133,\n    OCVColorConversionTypeBGRA2YUV_YV12 = 134,\n    \n    OCVColorConversionTypeColorConversionMax  = 135\n};\n\n#endif /* OCVColorConversionType_h */\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/ImageProcessing/OCVContrastLimitedAdaptiveHistogramEqualization.h",
    "content": "//\n//  OCVContrastLimitedAdaptiveHistogramEqualization.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/03/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVGeometry.h\"\n#import \"OCVAlgorithm.h\"\n#import \"OCVArrayables.h\"\n\n/*!\n *  Reference type: cv::CLAHE\n */\n@interface OCVContrastLimitedAdaptiveHistogramEqualization : OCVAlgorithm\n\n@property (nonatomic, assign) double clipLimit;\n@property (nonatomic, assign) OCVSize tileGridSize;\n\n- (void)applyWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination;\n\n- (void)collectGarbage;\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/ImageProcessing/OCVContrastLimitedAdaptiveHistogramEqualization.m",
    "content": "//\n//  OCVContrastLimitedAdaptiveHistogramEqualization.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/03/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVContrastLimitedAdaptiveHistogramEqualization.h\"\n\n@implementation OCVContrastLimitedAdaptiveHistogramEqualization\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/ImageProcessing/OCVGeneralizedHough.h",
    "content": "//\n//  OCVGeneralizedHough.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/03/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVGeometry.h\"\n#import \"OCVArrayables.h\"\n#import \"OCVAlgorithm.h\"\n\n/*!\n *  Reference type: cv::GeneralizedHough\n */\n@interface OCVGeneralizedHough : OCVAlgorithm\n\n@property (nonatomic, assign) NSInteger cannyLowThreshold;\n@property (nonatomic, assign) NSInteger cannyHighThreshold;\n@property (nonatomic, assign) double minimumDistance;\n@property (nonatomic, assign) double dp;\n\n@property (nonatomic, assign) NSInteger maxBufferSize;\n\n- (void)setTemplateWithTemplate:(id<OCVInputArrayable>)template;\n- (void)setTemplateWithTemplate:(id<OCVInputArrayable>)template withTemplateCenter:(OCVPoint)templateCenter;\n\n- (void)detectOnImage:(id<OCVInputArrayable>)image toPositions:(id<OCVOutputArrayable>)positions;\n- (void)detectOnImage:(id<OCVInputArrayable>)image toPositions:(id<OCVOutputArrayable>)positions withVotes:(id<OCVOutputArrayable>)votes;\n\n- (void)detectEdges:(id<OCVInputArrayable>)edges withDx:(id<OCVInputArrayable>)dx withDy:(id<OCVInputArrayable>)dy toPositions:(id<OCVOutputArrayable>)positions;\n- (void)detectEdges:(id<OCVInputArrayable>)edges withDx:(id<OCVInputArrayable>)dx withDy:(id<OCVInputArrayable>)dy toPositions:(id<OCVOutputArrayable>)positions withVotes:(id<OCVOutputArrayable>)votes;\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/ImageProcessing/OCVGeneralizedHough.m",
    "content": "//\n//  OCVGeneralizedHough.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/03/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVGeneralizedHough.h\"\n\n@implementation OCVGeneralizedHough\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/ImageProcessing/OCVGeneralizedHoughBallard.h",
    "content": "//\n//  OCVGeneralizedHoughBallard.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/03/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVGeneralizedHough.h\"\n\n/*!\n *  Reference type: cv::GeneralizedHoughBallard\n */\n@interface OCVGeneralizedHoughBallard : OCVGeneralizedHough\n\n@property (nonatomic, assign) NSInteger levels;\n@property (nonatomic, assign) NSInteger voteThreshold;\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/ImageProcessing/OCVGeneralizedHoughBallard.m",
    "content": "//\n//  OCVGeneralizedHoughBallard.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/03/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVGeneralizedHoughBallard.h\"\n\n@implementation OCVGeneralizedHoughBallard\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/ImageProcessing/OCVGeneralizedHoughGuil.h",
    "content": "//\n//  OCVGeneralizedHoughGuil.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/03/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVGeneralizedHough.h\"\n\n/*!\n *  Reference type: cv::GeneralizedHoughGuil\n */\n@interface OCVGeneralizedHoughGuil : OCVGeneralizedHough\n\n@property (nonatomic, assign) double xi;\n@property (nonatomic, assign) NSInteger levels;\n@property (nonatomic, assign) double angleEpsilon;\n@property (nonatomic, assign) double minAngle;\n@property (nonatomic, assign) double maxAngle;\n@property (nonatomic, assign) double angleStep;\n@property (nonatomic, assign) NSInteger angleThreshold;\n@property (nonatomic, assign) double maxScale;\n@property (nonatomic, assign) double scaleStep;\n@property (nonatomic, assign) NSInteger scaleThreshold;\n@property (nonatomic, assign) NSInteger positionThreshold;\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/ImageProcessing/OCVGeneralizedHoughGuil.m",
    "content": "//\n//  OCVGeneralizedHoughGuil.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/03/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVGeneralizedHoughGuil.h\"\n\n@implementation OCVGeneralizedHoughGuil\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/ImageProcessing/OCVImage.h",
    "content": "//\n//  OCVImage.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 16/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import <Foundation/Foundation.h>\n\n@interface OCVImage : NSObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/ImageProcessing/OCVImage.m",
    "content": "//\n//  OCVImage.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 16/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVImage.h\"\n\n@implementation OCVImage\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/ImageProcessing/OCVImageOperation.h",
    "content": "//\n//  OCVImageOperation.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 04/03/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVTypes.h\"\n#import \"OCVImageTypes.h\"\n#import \"OCVObject.h\"\n#import \"OCVArrayables.h\"\n\n#import \"OCVGeometry.h\"\n\n#import \"OCVColorConversionType.h\"\n#import \"OCVInterpolationType.h\"\n\n/*!\n *  Common Image Operations as defined in imgproc.hpp\n */\n@interface OCVImageOperation : OCVObject\n\n/*!\n *  Reference type: cv::getGaussianKernel()\n */\n+ (OCVMat *)gaussianKernelForApertureSize:(NSInteger)size sigma:(double)sigma;\n+ (OCVMat *)gaussianKernelForApertureSize:(NSInteger)size sigma:(double)sigma coefficientDepthType:(OCVDepthType)depthType;\n\n/*!\n *  Reference type: cv::getDerivKernels()\n */\n+ (void)derivKernelsWithKx:(id<OCVOutputArrayable>)kx ky:(id<OCVOutputArrayable>)ky dx:(NSInteger)dx dy:(NSInteger)dy apertureSize:(NSInteger)size;\n+ (void)derivKernelsWithKx:(id<OCVOutputArrayable>)kx ky:(id<OCVOutputArrayable>)ky dx:(NSInteger)dx dy:(NSInteger)dy apertureSize:(NSInteger)size normalize:(BOOL)normalize;\n+ (void)derivKernelsWithKx:(id<OCVOutputArrayable>)kx ky:(id<OCVOutputArrayable>)ky dx:(NSInteger)dx dy:(NSInteger)dy apertureSize:(NSInteger)size normalize:(BOOL)normalize coefficientDepthType:(OCVDepthType)depthType;\n\n/*!\n *  Reference type: cv::getGaborKernel()\n */\n+ (OCVMat *)gaborKernelForSize:(OCVSize)size sigma:(double)sigma theta:(double)theta waveLength:(double)lambd gamma:(double)gamma;\n+ (OCVMat *)gaborKernelForSize:(OCVSize)size sigma:(double)sigma theta:(double)theta waveLength:(double)lambd gamma:(double)gamma phaseOffset:(double)phaseOffset;\n+ (OCVMat *)gaborKernelForSize:(OCVSize)size sigma:(double)sigma theta:(double)theta waveLength:(double)lambd gamma:(double)gamma phaseOffset:(double)phaseOffset coefficientDepthType:(OCVDepthType)depthType;\n\n/*!\n *  Reference type: cv::morphologyDefaultBorderValue()\n */\n+ (OCVScalar)morphologyDefaultBorderValue;\n\n/*!\n *  Reference type: cv::getStructuringElement()\n */\n+ (OCVMat *)structuringElementWithShape:(OCVMorphShape)shape size:(OCVSize)size;\n+ (OCVMat *)structuringElementWithShape:(OCVMorphShape)shape size:(OCVSize)size anchorPoint:(OCVPoint)anchorPoint;\n\n/*!\n *  Reference type: cv::medianBlur()\n */\n+ (void)medianBlurWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination size:(NSInteger)size;\n\n/*!\n *  Reference type: cv::GaussianBlur()\n */\n+ (void)gaussianBlurWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination size:(NSInteger)size sigmaX:(double)sigmaX;\n+ (void)gaussianBlurWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination size:(NSInteger)size sigmaX:(double)sigmaX sigmaY:(double)sigmaY;\n+ (void)gaussianBlurWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination size:(NSInteger)size sigmaX:(double)sigmaX sigmaY:(double)sigmaY borderType:(OCVBorderType)borderType;\n\n/*!\n *  Reference type: cv::bilateralFilter()\n */\n+ (void)bilateralFilterWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination diameter:(NSInteger)diameter sigmaColor:(double)sigmaColor sigmaSpace:(double)sigmaSpace;\n+ (void)bilateralFilterWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination diameter:(NSInteger)diameter sigmaColor:(double)sigmaColor sigmaSpace:(double)sigmaSpace borderType:(OCVBorderType)borderType;\n\n/*!\n *  Reference type: cv::boxFilter()\n */\n+ (void)boxFilterWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination depth:(NSInteger)depth size:(NSInteger)size;\n+ (void)boxFilterWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination depth:(NSInteger)depth size:(NSInteger)size anchorPoint:(OCVPoint)anchorPoint;\n+ (void)boxFilterWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination depth:(NSInteger)depth size:(NSInteger)size anchorPoint:(OCVPoint)anchorPoint normalize:(BOOL)normalize;\n+ (void)boxFilterWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination depth:(NSInteger)depth size:(NSInteger)size anchorPoint:(OCVPoint)anchorPoint normalize:(BOOL)normalize borderType:(OCVBorderType)borderType;\n\n/*!\n *  Reference type: cv::sqrBoxFilter()\n */\n+ (void)squareBoxFilterWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination depth:(NSInteger)depth size:(NSInteger)size;\n+ (void)squareBoxFilterWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination depth:(NSInteger)depth size:(NSInteger)size anchorPoint:(OCVPoint)anchorPoint;\n+ (void)squareBoxFilterWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination depth:(NSInteger)depth size:(NSInteger)size anchorPoint:(OCVPoint)anchorPoint normalize:(BOOL)normalize;\n+ (void)squareBoxFilterWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination depth:(NSInteger)depth size:(NSInteger)size anchorPoint:(OCVPoint)anchorPoint normalize:(BOOL)normalize borderType:(OCVBorderType)borderType;\n\n/*!\n *  Reference type: cv::blur()\n */\n+ (void)blurWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination size:(NSInteger)size;\n+ (void)blurWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination size:(NSInteger)size anchorPoint:(OCVPoint)anchorPoint;\n+ (void)blurWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination size:(NSInteger)size anchorPoint:(OCVPoint)anchorPoint borderType:(OCVBorderType)borderType;\n\n/*!\n *  Reference type: cv::filter2D()\n */\n+ (void)filter2DWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination depth:(NSInteger)depth kernel:(id<OCVInputArrayable>)kernel;\n+ (void)filter2DWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination depth:(NSInteger)depth kernel:(id<OCVInputArrayable>)kernel anchorPoint:(OCVPoint)anchorPoint;\n+ (void)filter2DWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination depth:(NSInteger)depth kernel:(id<OCVInputArrayable>)kernel anchorPoint:(OCVPoint)anchorPoint delta:(double)delta;\n+ (void)filter2DWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination depth:(NSInteger)depth kernel:(id<OCVInputArrayable>)kernel anchorPoint:(OCVPoint)anchorPoint delta:(double)delta borderType:(OCVBorderType)borderType;\n\n/*!\n *  Reference type: cv::sepFilter2D()\n */\n+ (void)separableFilter2DWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination depth:(NSInteger)depth kernelX:(id<OCVInputArrayable>)kernelX kernelY:(id<OCVInputArrayable>)kernelY;\n+ (void)separableFilter2DWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination depth:(NSInteger)depth kernelX:(id<OCVInputArrayable>)kernelX kernelY:(id<OCVInputArrayable>)kernelY anchorPoint:(OCVPoint)anchorPoint;\n+ (void)separableFilter2DWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination depth:(NSInteger)depth kernelX:(id<OCVInputArrayable>)kernelX kernelY:(id<OCVInputArrayable>)kernelY anchorPoint:(OCVPoint)anchorPoint delta:(double)delta;\n+ (void)separableFilter2DWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination depth:(NSInteger)depth kernelX:(id<OCVInputArrayable>)kernelX kernelY:(id<OCVInputArrayable>)kernelY anchorPoint:(OCVPoint)anchorPoint delta:(double)delta borderType:(OCVBorderType)borderType;\n\n/*!\n *  Reference type: cv::Sobel()\n */\n+ (void)sobelWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination depth:(NSInteger)depth dx:(NSInteger)dx dy:(NSInteger)dy;\n+ (void)sobelWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination depth:(NSInteger)depth dx:(NSInteger)dx dy:(NSInteger)dy size:(NSInteger)size;\n+ (void)sobelWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination depth:(NSInteger)depth dx:(NSInteger)dx dy:(NSInteger)dy size:(NSInteger)size scale:(double)scale;\n+ (void)sobelWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination depth:(NSInteger)depth dx:(NSInteger)dx dy:(NSInteger)dy size:(NSInteger)size scale:(double)scale delta:(double)delta;\n+ (void)sobelWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination depth:(NSInteger)depth dx:(NSInteger)dx dy:(NSInteger)dy size:(NSInteger)size scale:(double)scale delta:(double)delta borderType:(OCVBorderType)borderType;\n\n/*!\n *  Reference type: cv::spatialGradient()\n */\n+ (void)spatialGradientWithSource:(id<OCVInputArrayable>)source dx:(id<OCVOutputArrayable>)dx dy:(id<OCVOutputArrayable>)dy;\n+ (void)spatialGradientWithSource:(id<OCVInputArrayable>)source dx:(id<OCVOutputArrayable>)dx dy:(id<OCVOutputArrayable>)dy size:(NSInteger)size;\n+ (void)spatialGradientWithSource:(id<OCVInputArrayable>)source dx:(id<OCVOutputArrayable>)dx dy:(id<OCVOutputArrayable>)dy size:(NSInteger)size borderType:(OCVBorderType)borderType;\n\n/*!\n *  Reference type: cv::Scharr()\n */\n+ (void)scharrWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination depth:(NSInteger)depth dx:(NSInteger)dx dy:(NSInteger)dy;\n+ (void)scharrWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination depth:(NSInteger)depth dx:(NSInteger)dx dy:(NSInteger)dy scale:(double)scale;\n+ (void)scharrWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination depth:(NSInteger)depth dx:(NSInteger)dx dy:(NSInteger)dy scale:(double)scale delta:(double)delta;\n+ (void)scharrWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination depth:(NSInteger)depth dx:(NSInteger)dx dy:(NSInteger)dy scale:(double)scale delta:(double)delta borderType:(OCVBorderType)borderType;\n\n/*!\n *  Reference type: cv::Laplacian()\n */\n+ (void)laplacianWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination depth:(NSInteger)depth;\n+ (void)laplacianWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination depth:(NSInteger)depth size:(NSInteger)size;\n+ (void)laplacianWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination depth:(NSInteger)depth size:(NSInteger)size scale:(double)scale;\n+ (void)laplacianWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination depth:(NSInteger)depth size:(NSInteger)size scale:(double)scale delta:(double)delta;\n+ (void)laplacianWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination depth:(NSInteger)depth size:(NSInteger)size scale:(double)scale delta:(double)delta borderType:(OCVBorderType)borderType;\n\n\n+ (void)convertColorFromSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination withType:(OCVColorConversionType)type;\n+ (void)convertColorFromSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination withType:(OCVColorConversionType)type withDestinationCn:(NSInteger)destinationCn;\n\n+ (void)resizeFromSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination size:(OCVSize)size fx:(double)fx fy:(double)fy interpolation:(OCVInterpolationType)interpolation;\n\n+ (void)equalizeHistogramFromSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination;\n+ (void)rectangleOnSource:(id<OCVInputOutputArrayable>)source fromPoint:(OCVPoint)point1 toPoint:(OCVPoint)point2 withColor:(OCVScalar)color thickness:(NSInteger)thickness lineType:(NSInteger)lineType shift:(NSInteger)shift;\n\n+ (void)rectangleOnSource:(id<OCVInputOutputArrayable>)source fromRect:(OCVRect)rect withColor:(OCVScalar)color thickness:(NSInteger)thickness lineType:(NSInteger)lineType shift:(NSInteger)shift;\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/ImageProcessing/OCVImageOperation.mm",
    "content": "//\n//  OCVImageOperation.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 04/03/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import <opencv2/core.hpp>\n#import <opencv2/imgproc.hpp>\n\n#import \"OCVGeometry+Private.h\"\n\n#import \"OCVInputArray+Private.h\"\n#import \"OCVOutputArray+Private.h\"\n#import \"OCVInputOutputArray+Private.h\"\n\n#import \"OCVMatDataAllocator+Private.h\"\n\n#import \"OCVImageOperation.h\"\n\n@implementation OCVImageOperation\n\n+ (void)convertColorFromSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination withType:(OCVColorConversionType)type {\n    [self convertColorFromSource:source toDestination:destination withType:type withDestinationCn:0];\n}\n\n+ (void)convertColorFromSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination withType:(OCVColorConversionType)type withDestinationCn:(NSInteger)destinationCn {\n    \n    cv::cvtColor(*source.input._input, *destination.output._output, (int)type, (int)destinationCn);\n}\n\n+ (void)equalizeHistogramFromSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination {\n    cv::equalizeHist(*source.input._input, *destination.output._output);\n}\n\n+ (void)resizeFromSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination size:(OCVSize)size fx:(double)fx fy:(double)fy interpolation:(OCVInterpolationType)interpolation {\n    cv::resize(*source.input._input, *destination.output._output, convertSize(size), fx, fy, (int)interpolation);\n}\n\n#pragma mark - Drawing\n\n+ (void)rectangleOnSource:(id<OCVInputOutputArrayable>)source fromPoint:(OCVPoint)point1 toPoint:(OCVPoint)point2 withColor:(OCVScalar)color thickness:(NSInteger)thickness lineType:(NSInteger)lineType shift:(NSInteger)shift {\n#warning FIX THIS\n    //cv::rectangle(*source.inputOutput._inputOutput, convertPoint(point1), convertPoint(point2), convertScalar(color), (int)thickness, (int)lineType, (int)shift);\n}\n\n+ (void)rectangleOnSource:(id<OCVInputOutputArrayable>)source fromRect:(OCVRect)rect withColor:(OCVScalar)color thickness:(NSInteger)thickness lineType:(NSInteger)lineType shift:(NSInteger)shift {\n    \n    OCVPoint point1;\n    point1.x = rect.origin.x;\n    point1.y = rect.origin.y;\n    \n    OCVPoint point2;\n    point2.x = rect.origin.x + rect.size.width;\n    point2.y = rect.origin.y + rect.size.height;\n    \n#warning FIX THIS\n    //cv::rectangle(*source.inputOutput._inputOutput, convertPoint(point1), convertPoint(point2), convertScalar(color), (int)thickness, (int)lineType, (int)shift);\n}\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/ImageProcessing/OCVImageProcessing.h",
    "content": "//\n//  OCVImageProcessing.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 07/03/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#ifndef OCVImageProcessing_h\n#define OCVImageProcessing_h\n\n#import \"OCVImageOperation.h\"\n\n#endif /* OCVImageProcessing_h */\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/ImageProcessing/OCVImageTypes.h",
    "content": "//\n//  OCVImageTypes.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/03/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#ifndef OCVImageTypes_h\n#define OCVImageTypes_h\n\n/*!\n *  Reference type: cv::MorphTypes\n */\ntypedef NS_ENUM(NSInteger, OCVMorphType) {\n    OCVMorphTypeErode      = 0,\n    OCVMorphTypeDilate     = 1,\n    OCVMorphTypeOpen       = 2,\n    OCVMorphTypeClose      = 3,\n    OCVMorphTypeGradient   = 4,\n    OCVMorphTypeTopHat     = 5,\n    OCVMorphTypeBlackHat   = 6,\n    OCVMorphTypeHitOrMiss  = 7\n};\n\n/*!\n *  Reference type: cv::MorphShapes\n */\ntypedef NS_ENUM(NSInteger, OCVMorphShape) {\n    OCVMorphShapeRect    = 0,\n    OCVMorphShapeCross   = 1,\n    OCVMorphShapeEllipse = 2\n};\n\n\n/*!\n *  Reference type: cv::DistanceTypes\n */\ntypedef NS_ENUM(NSInteger, OCVDistanceType) {\n    OCVDistanceTypeUser    = -1,  //!< User defined distance\n    OCVDistanceTypeL1      = 1,   //!< distance = |x1-x2| + |y1-y2|\n    OCVDistanceTypeL2      = 2,   //!< the simple euclidean distance\n    OCVDistanceTypeC       = 3,   //!< distance = max(|x1-x2|,|y1-y2|)\n    OCVDistanceTypeL12     = 4,   //!< L1-L2 metric: distance = 2(sqrt(1+x*x/2) - 1))\n    OCVDistanceTypeFair    = 5,   //!< distance = c^2(|x|/c-log(1+|x|/c)), c = 1.3998\n    OCVDistanceTypeWelsch  = 6,   //!< distance = c^2/2(1-exp(-(x/c)^2)), c = 2.9846\n    OCVDistanceTypeHubar   = 7    //!< distance = |x|<c ? x^2/2 : c(|x|-c/2), c=1.345\n};\n\n/*!\n *  Reference type: cv::DistanceTransformMasks\n */\ntypedef NS_OPTIONS(NSInteger, OCVDistanceTransformMasks) {\n    OCVDistanceTransformMask3       = 3, //!< mask=3\n    OCVDistanceTransformMask5       = 5, //!< mask=5\n    OCVDistanceTransformMaskPrecise = 0  //!<\n};\n\n/*!\n *  Reference type: cv::ThresholdTypes\n */\ntypedef NS_ENUM(NSInteger, OCVThresholdType) {\n    OCVThresholdTypeBinary          = 0,\n    OCVThresholdTypeBinaryInverse   = 1,\n    OCVThresholdTypeTruncate        = 2,\n    OCVThresholdTypeToZero          = 3,\n    OCVThresholdTypeToZeroInverse   = 4,\n    OCVThresholdTypeMask            = 7,\n    OCVThresholdTypeOtsu            = 8, //!< flag, use Otsu algorithm to choose the optimal threshold value\n    OCVThresholdTypeTriangle        = 16 //!< flag, use Triangle algorithm to choose the optimal threshold value\n};\n\n/*!\n *  Reference type: cv::AdaptiveThresholdTypes\n */\ntypedef NS_ENUM(NSInteger, OCVAdaptiveThresholdType) {\n    OCVAdaptiveThresholdTypeMeanC     = 0,\n    OCVAdaptiveThresholdTypeGaussianC = 1\n};\n\n/*!\n *  Reference type: cv::UndistortTypes\n */\ntypedef NS_ENUM(NSInteger, OCVUndistortType) {\n    OCVUndistortTypeProjectionSphericalOrthogonal     = 0,\n    OCVUndistortTypeProjectionSphericalEqualRectangle = 1\n};\n\n/*!\n *  Reference type: cv::GrabCutClasses\n */\ntypedef NS_ENUM(NSInteger, OCVGrabCutClassType) {\n    OCVGrabCutClassTypeBackground           = 0,  //!< an obvious background pixels\n    OCVGrabCutClassTypeForeground           = 1,  //!< an obvious foreground (object) pixel\n    OCVGrabCutClassTypePossibleBackground   = 2,  //!< a possible background pixel\n    OCVGrabCutClassTypePossibleForeground   = 3   //!< a possible foreground pixel\n};\n\n/*!\n *  Reference type: cv::GrabCutModes\n */\ntypedef NS_ENUM(NSInteger, OCVGrabCutMode) {\n    OCVGrabCutModeInitWithRect  = 0,\n    OCVGrabCutModeInitWithMask  = 1,\n    OCVGrabCutModeEval          = 2\n};\n\n/*!\n *  Reference type: cv::DistanceTransformLabelTypes\n */\ntypedef NS_ENUM(NSInteger, OCVDistanceTransformLabelType) {\n    OCVDistanceTransformLabelTypeConnectedComponent = 0,\n    OCVDistanceTransformLabelTypePixel              = 1\n};\n\n/*!\n *  Reference type: cv::FloodFillFlags\n */\ntypedef NS_OPTIONS(NSInteger, OCVFloodFillFlags) {\n    OCVFloodFillFlagFixedRange      = 1 << 16,\n    OCVFloodFillFlagsMaskOnly       = 1 << 17\n};\n\n/*!\n *  Reference type: cv::ConnectedComponentsTypes\n */\ntypedef NS_ENUM(NSInteger, OCVConnectedComponentType) {\n    OCVConnectedComponentTypeLeft   = 0, //!< The leftmost (x) coordinate which is the inclusive start of the bounding\n    //!< box in the horizontal direction.\n    OCVConnectedComponentTypeTop    = 1, //!< The topmost (y) coordinate which is the inclusive start of the bounding\n    //!< box in the vertical direction.\n    OCVConnectedComponentTypeWidth  = 2, //!< The horizontal size of the bounding box\n    OCVConnectedComponentTypeHeight = 3, //!< The vertical size of the bounding box\n    OCVConnectedComponentTypeArea   = 4, //!< The total area (in pixels) of the connected component\n    OCVConnectedComponentTypeMax    = 5\n};\n\n/*!\n *  Reference type: cv::ConnectedComponentsAlgorithmsTypes\n */\ntypedef NS_ENUM(NSInteger, OCVConnectedComponentAlgorithmType) {\n    OCVConnectedComponentAlgorithmTypeWu      = 0,  //!< SAUF algorithm for 8-way connectivity, SAUF algorithm for 4-way connectivity\n    OCVConnectedComponentAlgorithmTypeDefault = -1, //!< BBDT algortihm for 8-way connectivity, SAUF algorithm for 4-way connectivity\n    OCVConnectedComponentAlgorithmTypeGrana   = 1   //!< BBDT algorithm for 8-way connectivity, SAUF algorithm for 4-way connectivity\n};\n\n/*!\n *  Reference type: cv::RetrievalModes\n */\ntypedef NS_ENUM(NSInteger, OCVRetrievalMode) {\n    OCVRetrievalModeExternal                = 0,\n    OCVRetrievalModeList                    = 1,\n    OCVRetrievalModeConnectedComponent      = 2,\n    OCVRetrievalModeTree                    = 3,\n    OCVRetrievalModeFloodFill               = 4\n};\n\n/*!\n *  Reference type: cv::ContourApproximationModes\n */\ntypedef NS_ENUM(NSInteger, OCVContourApproximationMode) {\n    OCVContourApproximationModeNone         = 1,\n    /** compresses horizontal, vertical, and diagonal segments and leaves only their end points.\n     For example, an up-right rectangular contour is encoded with 4 points. */\n    OCVContourApproximationModeSimple       = 2,\n    /** applies one of the flavors of the Teh-Chin chain approximation algorithm @cite TehChin89 */\n    OCVContourApproximationModeTC89L1       = 3,\n    /** applies one of the flavors of the Teh-Chin chain approximation algorithm @cite TehChin89 */\n    OCVContourApproximationModeC89KCOS      = 4\n};\n\n/*!\n *  Reference type: cv::HoughModes\n */\ntypedef NS_ENUM(NSInteger, OCVHoughMode) {\n    OCVHoughModeStandard      = 0,\n    OCVHoughModeProbabilistic = 1,\n    OCVHoughModeMultiScale    = 2,\n    OCVHoughModeGradient      = 3\n};\n\n/*!\n *  Reference type: cv::LineSegmentDetectorModes\n */\ntypedef NS_ENUM(NSInteger, OCVLineSegmentDetectorMode) {\n    OCVLineSegmentDetectorModeNone          = 0, //!< No refinement applied\n    OCVLineSegmentDetectorModeStandard      = 1, //!< Standard refinement is applied. E.g. breaking arches into smaller straighter line approximations.\n    OCVLineSegmentDetectorModeAdvanced      = 2  //!< Advanced refinement. Number of false alarms is calculated, lines are\n    //!< refined through increase of precision, decrement in size, etc.\n};\n\n/*!\n *  Reference type: cv::HistCompMethods\n */\ntypedef NS_ENUM(NSInteger, OCVHistogramComparisonMethodType) {\n    OCVHistogramComparisonMethodTypeCorrelation             = 0,\n    OCVHistogramComparisonMethodTypeChiSquare               = 1,\n    OCVHistogramComparisonMethodTypeIntersection            = 2,\n    OCVHistogramComparisonMethodTypeBhattacharyya           = 3,\n    OCVHistogramComparisonMethodTypeHellinger               = OCVHistogramComparisonMethodTypeBhattacharyya,\n    OCVHistogramComparisonMethodTypeChiSquareAlternative    = 4,\n    OCVHistogramComparisonMethodTypeKullbackLeibler         = 5\n};\n\n/*!\n *  Reference type: cv::RectanglesIntersectTypes\n */\ntypedef NS_ENUM(NSInteger, OCVRectangleIntersectType) {\n    OCVRectangleIntersectTypeNone       = 0, //!< No intersection\n    OCVRectangleIntersectTypePartial    = 1, //!< There is a partial intersection\n    OCVRectangleIntersectTypeFull       = 2 //!< One of the rectangle is fully enclosed in the other\n};\n\n\n#endif /* OCVImageTypes_h */\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/ImageProcessing/OCVInterpolationType.h",
    "content": "//\n//  OCVInterpolationType.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 24/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#ifndef OCVInterpolationType_h\n#define OCVInterpolationType_h\n\n/*!\n *  Reference type: cv::InterpolationFlags\n */\ntypedef NS_OPTIONS(NSInteger, OCVInterpolationType) {\n    OCVInterpolationTypeNearest             = 0,\n    OCVInterpolationTypeLinear              = 1,\n    OCVInterpolationTypeCubic               = 2,\n    OCVInterpolationTypeArea                = 3,\n    OCVInterpolationTypeLanczos4            = 4,\n    OCVInterpolationTypeMax                 = 7,\n    OCVInterpolationTypeWarpFillOutliers    = 8,\n    OCVInterpolationTypeWarpInverseMap      = 9\n};\n\n/*!\n *  Reference type: cv::InterpolationMasks\n */\ntypedef NS_OPTIONS(NSInteger, OCVInterpolationMasks) {\n    OCVInterpolationMaskBits      = 5,\n    OCVInterpolationMaskBits2     = OCVInterpolationMaskBits * 2,\n    OCVInterpolationMaskTabSize   = 1 << OCVInterpolationMaskBits,\n    OCVInterpolationMaskTabSize2  = OCVInterpolationMaskTabSize * OCVInterpolationMaskTabSize\n};\n\n\n#endif /* OCVInterpolationType_h */\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/ImageProcessing/OCVLineSegmentDetector.h",
    "content": "//\n//  OCVLineSegmentDetector.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/03/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n#import \"OCVImageTypes.h\"\n#import \"OCVGeometry.h\"\n#import \"OCVArrayables.h\"\n#import \"OCVAlgorithm.h\"\n\n@interface OCVLineSegmentDetectorOptions : OCVObject\n\n@property (nonatomic, assign) OCVLineSegmentDetectorMode mode;\n@property (nonatomic, assign) double scale;\n@property (nonatomic, assign) double sigmaScale;\n@property (nonatomic, assign) double quantization;\n@property (nonatomic, assign) double gradientAngleTolerance;\n@property (nonatomic, assign) double logEps;\n@property (nonatomic, assign) double minimalDensity;\n@property (nonatomic, assign) NSInteger numberOfBins;\n\n+ (instancetype)defaultOptions;\n\n@end\n\n@interface OCVLineSegmentDetector : OCVAlgorithm\n\n- (instancetype)initWitOptions:(OCVLineSegmentDetectorOptions *)options;\n\n- (void)detectOnImage:(id<OCVInputArrayable>)image toLines:(id<OCVOutputArrayable>)lines;\n- (void)detectOnImage:(id<OCVInputArrayable>)image toLines:(id<OCVOutputArrayable>)lines widthRegions:(id<OCVOutputArrayable>)widthRegions;\n- (void)detectOnImage:(id<OCVInputArrayable>)image toLines:(id<OCVOutputArrayable>)lines widthRegions:(id<OCVOutputArrayable>)widthRegions precisions:(id<OCVOutputArrayable>)precisions;\n- (void)detectOnImage:(id<OCVInputArrayable>)image toLines:(id<OCVOutputArrayable>)lines widthRegions:(id<OCVOutputArrayable>)widthRegions precisions:(id<OCVOutputArrayable>)precisions falseAlarms:(id<OCVOutputArrayable>)falseAlarms;\n\n- (void)drawSegmentsOnImage:(id<OCVInputOutputArrayable>)image lines:(id<OCVInputArrayable>)lines;\n\n- (NSInteger)compareSegmentsInSize:(OCVSize)size lines1:(id<OCVInputArrayable>)lines1 lines2:(id<OCVInputArrayable>)lines2;\n- (NSInteger)compareSegmentsInSize:(OCVSize)size lines1:(id<OCVInputArrayable>)lines1 lines2:(id<OCVInputArrayable>)lines2 onImage:(id<OCVInputOutputArrayable>)image;\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/ImageProcessing/OCVLineSegmentDetector.m",
    "content": "//\n//  OCVLineSegmentDetector.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/03/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVLineSegmentDetector.h\"\n\n@implementation OCVLineSegmentDetector\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/ImageProcessing/OCVSubdiv2D.h",
    "content": "//\n//  OCVSubdiv2D.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/03/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n#import \"OCVGeometry.h\"\n\n/*!\n *  Reference type: cv::Subdiv2D::Point location cases\n */\ntypedef NS_ENUM(NSInteger, OCVSubdiv2DPointLocationType) {\n    OCVSubdiv2DPointLocationTypeError        = -2, //!< Point location error\n    OCVSubdiv2DPointLocationTypeOutsideRect  = -1, //!< Point outside the subdivision bounding rect\n    OCVSubdiv2DPointLocationTypeInside       = 0, //!< Point inside some facet\n    OCVSubdiv2DPointLocationTypeVertex       = 1, //!< Point coincides with one of the subdivision vertices\n    OCVSubdiv2DPointLocationTypeOnEdge       = 2  //!< Point on some edge\n};\n\n/*!\n *  Reference type: cv::Subdiv2D::Edge type navigation\n */\ntypedef NS_ENUM(NSInteger, OCVSubdiv2DEdgeType) {\n    OCVSubdiv2DEdgeTypeNextAroundOrg        = 0x00,\n    OCVSubdiv2DEdgeTypeNextAroundDst        = 0x22,\n    OCVSubdiv2DEdgeTypePreviousAroundOrg    = 0x11,\n    OCVSubdiv2DEdgeTypePreviousAroundDst    = 0x33,\n    OCVSubdiv2DEdgeTypeNextAroundLeft       = 0x13,\n    OCVSubdiv2DEdgeTypeNextAroundRight      = 0x31,\n    OCVSubdiv2DEdgeTypePreviousAroundLeft   = 0x20,\n    OCVSubdiv2DEdgeTypePreviousAroundRight  = 0x02\n};\n\ntypedef NS_ENUM(NSInteger, OCVSubdiv2DRotationType) {\n    OCVSubdiv2DRotationTypeInputEdge                = 0,\n    OCVSubdiv2DRotationTypeRotatedEdge              = 1,\n    OCVSubdiv2DRotationTypeReversedEdge             = 2,\n    OCVSubdiv2DRotationTypeReversedRotatedEdge      = 3\n};\n\n//\n// MARK: Utility classes and structs to improve API design\n//\n\n\n/*!\n *  Used with locating point methods\n */\ntypedef struct OCVSubdiv2DLocateResult {\n    OCVSubdiv2DEdgeType edgeType;\n    NSInteger edge;\n    NSInteger vertex;\n} OCVSubdiv2DLocateResult;\n\ntypedef struct OCVSubdiv2DNearestResult {\n    OCVPoint2f nearestPoint;\n    NSInteger vertex;\n} OCVSubdiv2DNearestResult;\n\ntypedef struct OCVSubdiv2DVertexResult {\n    OCVPoint2f vertex;\n    NSInteger firstEdge;\n} OCVSubdiv2DVertexResult;\n\ntypedef struct OCVSubdiv2DEdgePointResult {\n    NSInteger edge;\n    OCVPoint2f point;\n} OCVSubdiv2DEdgePointResult;\n\nNS_ASSUME_NONNULL_BEGIN\n\n@interface OCVVoronoiFacetResult : OCVObject\n\n//\n// TODO: Implement type here, array of arrays of OCVPoint2f\n//\n@property (nonatomic, strong) NSArray <NSArray *> * facets;\n\n//\n// TODO: Implement type here, array of OCVPoint2f\n//\n@property (nonatomic, strong) NSArray* facetCenters;\n\n@end\n\n/*!\n *  Reference type: cv::Subdiv2D\n */\n@interface OCVSubdiv2D : OCVObject\n\n//\n// TODO: Implement type here, an array of Vec4f elements\n//\n@property (nonatomic, readonly) NSArray* edges;\n\n//\n// TODO: Implement Swift wrapper, numbers are all integers\n//\n@property (nonatomic, readonly) NSArray<NSNumber *>* leadingEdges;\n\n//\n// TODO: Implement type here, an array of Vec6f elements\n//\n@property (nonatomic, readonly) NSArray* triangles;\n\n\n- (instancetype)initWithRect:(OCVRect)rect;\n\n- (void)setupDelaunayWithRect:(OCVRect)rect;\n- (NSInteger)insertPoint:(OCVPoint2f)point;\n\n/*!\n *  Inserts vector of OCVPoint2f structs\n *\n *  TODO: Add Swift wrapper for this\n */\n- (NSInteger)insertArray:(NSArray<NSValue *> *)array;\n\n- (OCVSubdiv2DLocateResult)locatePoint:(OCVPoint2f)point;\n\n- (OCVSubdiv2DNearestResult)findNearestWithPoint:(OCVPoint2f)point;\n\n- (OCVVoronoiFacetResult *)voronoiFacetListWithIndexes:(NSArray<NSNumber *> *)indexes;\n\n- (OCVSubdiv2DVertexResult)vertexResultWithId:(NSInteger)vertex;\n\n- (NSInteger)edgeWithEdge:(NSInteger)edge nextEdgeType:(OCVSubdiv2DEdgeType)nextEdgeType;\n- (NSInteger)nextEdgeWithEdge:(NSInteger)edge;\n\n- (NSInteger)rotateEdgeWithEdge:(NSInteger)edge rotationType:(OCVSubdiv2DRotationType)rotationType;\n- (NSInteger)symEdgeWithEdge:(NSInteger)edge;\n\n- (OCVSubdiv2DEdgePointResult)edgeOriginWithEdge:(NSInteger)edge;\n- (OCVSubdiv2DEdgePointResult)edgeDistanceToEdge:(NSInteger)edge;\n\n@end\n\nNS_ASSUME_NONNULL_END\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/ImageProcessing/OCVSubdiv2D.m",
    "content": "//\n//  OCVSubdiv2D.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/03/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVSubdiv2D.h\"\n\n@implementation OCVSubdiv2D\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/LineDescriptor/OCVLSDDetector.h",
    "content": "//\n//  OCVLSDDetector.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVLSDDetector : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/LineDescriptor/OCVLSDDetector.m",
    "content": "//\n//  OCVLSDDetector.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVLSDDetector.h\"\n\n@implementation OCVLSDDetector\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/ML/Enum/OCVBoostType.h",
    "content": "//\n//  OCVBoostType.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVBoostType : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/ML/Enum/OCVBoostType.m",
    "content": "//\n//  OCVBoostType.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVBoostType.h\"\n\n@implementation OCVBoostType\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/ML/Enum/OCVVarType.h",
    "content": "//\n//  OCVVarType.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVVarType : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/ML/Enum/OCVVarType.m",
    "content": "//\n//  OCVVarType.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVVarType.h\"\n\n@implementation OCVVarType\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/ML/OCVANNMLP.h",
    "content": "//\n//  OCVANNMLP.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVANNMLP : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/ML/OCVANNMLP.m",
    "content": "//\n//  OCVANNMLP.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVANNMLP.h\"\n\n@implementation OCVANNMLP\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/ML/OCVBoost.h",
    "content": "//\n//  OCVBoost.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVBoost : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/ML/OCVBoost.m",
    "content": "//\n//  OCVBoost.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVBoost.h\"\n\n@implementation OCVBoost\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/ML/OCVDTree.h",
    "content": "//\n//  OCVDTree.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVDTree : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/ML/OCVDTree.m",
    "content": "//\n//  OCVDTree.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVDTree.h\"\n\n@implementation OCVDTree\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/ML/OCVEM.h",
    "content": "//\n//  OCVEM.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVEM : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/ML/OCVEM.m",
    "content": "//\n//  OCVEM.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVEM.h\"\n\n@implementation OCVEM\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/ML/OCVKNearest.h",
    "content": "//\n//  OCVKNearest.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVKNearest : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/ML/OCVKNearest.m",
    "content": "//\n//  OCVKNearest.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVKNearest.h\"\n\n@implementation OCVKNearest\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/ML/OCVLogisticRegression.h",
    "content": "//\n//  OCVLogisticRegression.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVLogisticRegression : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/ML/OCVLogisticRegression.m",
    "content": "//\n//  OCVLogisticRegression.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVLogisticRegression.h\"\n\n@implementation OCVLogisticRegression\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/ML/OCVNormalBayesClassifier.h",
    "content": "//\n//  OCVNormalBayesClassifier.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVNormalBayesClassifier : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/ML/OCVNormalBayesClassifier.m",
    "content": "//\n//  OCVNormalBayesClassifier.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVNormalBayesClassifier.h\"\n\n@implementation OCVNormalBayesClassifier\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/ML/OCVRTree.h",
    "content": "//\n//  OCVRTree.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVRTree : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/ML/OCVRTree.m",
    "content": "//\n//  OCVRTree.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVRTree.h\"\n\n@implementation OCVRTree\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/ML/OCVSVM.h",
    "content": "//\n//  OCVSVM.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVSVM : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/ML/OCVSVM.m",
    "content": "//\n//  OCVSVM.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVSVM.h\"\n\n@implementation OCVSVM\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/ML/OCVStatModelExtensions.h",
    "content": "//\n//  OCVStatModelExtensions.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVStatModelExtensions : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/ML/OCVStatModelExtensions.m",
    "content": "//\n//  OCVStatModelExtensions.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVStatModelExtensions.h\"\n\n@implementation OCVStatModelExtensions\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/ML/OCVTrainData.h",
    "content": "//\n//  OCVTrainData.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVTrainData : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/ML/OCVTrainData.m",
    "content": "//\n//  OCVTrainData.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVTrainData.h\"\n\n@implementation OCVTrainData\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/ML/Structure/OCVMCvDTreeNode.h",
    "content": "//\n//  OCVMCvDTreeNode.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVMCvDTreeNode : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/ML/Structure/OCVMCvDTreeNode.m",
    "content": "//\n//  OCVMCvDTreeNode.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVMCvDTreeNode.h\"\n\n@implementation OCVMCvDTreeNode\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/ML/Structure/OCVMCvDTreeSplit.h",
    "content": "//\n//  OCVMCvDTreeSplit.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVMCvDTreeSplit : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/ML/Structure/OCVMCvDTreeSplit.m",
    "content": "//\n//  OCVMCvDTreeSplit.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVMCvDTreeSplit.h\"\n\n@implementation OCVMCvDTreeSplit\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/ML/Structure/OCVMCvDTreeSplitMOrder.h",
    "content": "//\n//  OCVMCvDTreeSplitMOrder.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVMCvDTreeSplitMOrder : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/ML/Structure/OCVMCvDTreeSplitMOrder.m",
    "content": "//\n//  OCVMCvDTreeSplitMOrder.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVMCvDTreeSplitMOrder.h\"\n\n@implementation OCVMCvDTreeSplitMOrder\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/ML/Structure/OCVMCvParamGrid.h",
    "content": "//\n//  OCVMCvParamGrid.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVMCvParamGrid : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/ML/Structure/OCVMCvParamGrid.m",
    "content": "//\n//  OCVMCvParamGrid.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVMCvParamGrid.h\"\n\n@implementation OCVMCvParamGrid\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/OCR/OCVOrientation.h",
    "content": "//\n//  OCVOrientation.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVOrientation : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/OCR/OCVOrientation.m",
    "content": "//\n//  OCVOrientation.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVOrientation.h\"\n\n@implementation OCVOrientation\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/OCR/OCVPageIterator.h",
    "content": "//\n//  OCVPageIterator.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVPageIterator : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/OCR/OCVPageIterator.m",
    "content": "//\n//  OCVPageIterator.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVPageIterator.h\"\n\n@implementation OCVPageIterator\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/OCR/OCVTesseract.h",
    "content": "//\n//  OCVTesseract.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVTesseract : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/OCR/OCVTesseract.m",
    "content": "//\n//  OCVTesseract.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVTesseract.h\"\n\n@implementation OCVTesseract\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/OCR/OCVTesseractResult.h",
    "content": "//\n//  OCVTesseractResult.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVTesseractResult : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/OCR/OCVTesseractResult.m",
    "content": "//\n//  OCVTesseractResult.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVTesseractResult.h\"\n\n@implementation OCVTesseractResult\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/ObjectDetection/OCVBaseCascadeClassifier.h",
    "content": "//\n//  OCVBaseCascadeClassifier.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/03/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVPointerObject.h\"\n#import \"OCVArrayables.h\"\n#import \"OCVSize.h\"\n#import \"OCVRect.h\"\n\n#import \"OCVCascadeClassifierResult.h\"\n#import \"OCVCascadeClassifierOptions.h\"\n\nNS_ASSUME_NONNULL_BEGIN\n\n@interface OCVMaskGenerator : OCVObject\n\n- (instancetype)initWithSource:(OCVMat *)source;\n- (OCVMat *)generateMaskWithSource:(OCVMat *)source;\n\n@end\n\n\n@interface OCVBaseCascadeClassifier : OCVPointerObject\n\n@property (nonatomic, readonly) BOOL isEmpty;\n@property (nonatomic, readonly) NSInteger featureType;\n\n@property (nullable, nonatomic, strong) OCVMaskGenerator *maskGenerator;\n\n@property (nonatomic, readonly) BOOL isOldFormatCascade;\n@property (nonatomic, readonly) OCVSize originalWindowSize;\n\n- (instancetype)initWithURL:(NSURL *)url;\n- (instancetype)initWithPath:(NSString *)path;\n\n/*!\n *  Needs to be absolute path to the XML model for classifier: Bundle.main.bundlePath + relativePath\n */\n- (void)loadPath:(NSString *)path;\n- (void)loadURL:(NSURL *)url;\n\n//\n// TODO: Add Swift wrapper method to return OCVRect directly.\n//\n- (NSArray<OCVRectValue *>*)detectMultiScaleOnImage:(id<OCVInputArrayable>)image scaleFactor:(double)scaleFactor;\n- (NSArray<OCVRectValue *>*)detectMultiScaleOnImage:(id<OCVInputArrayable>)image scaleFactor:(double)scaleFactor minNeighbours:(NSInteger)minNeighbours;\n- (NSArray<OCVRectValue *>*)detectMultiScaleOnImage:(id<OCVInputArrayable>)image scaleFactor:(double)scaleFactor minNeighbours:(NSInteger)minNeighbours flags:(NSInteger)flags;\n- (NSArray<OCVRectValue *>*)detectMultiScaleOnImage:(id<OCVInputArrayable>)image scaleFactor:(double)scaleFactor minNeighbours:(NSInteger)minNeighbours flags:(NSInteger)flags minSize:(OCVSize)minSize;\n- (NSArray<OCVRectValue *>*)detectMultiScaleOnImage:(id<OCVInputArrayable>)image scaleFactor:(double)scaleFactor minNeighbours:(NSInteger)minNeighbours flags:(NSInteger)flags minSize:(OCVSize)minSize maxSize:(OCVSize)maxSize;\n\n/*!\n *  Objective wrapper call by specifying options.\n */\n- (OCVCascadeClassifierResult *)detectMultiScaleOnImage:(id<OCVInputArrayable>)image;\n- (OCVCascadeClassifierResult *)detectMultiScaleOnImage:(id<OCVInputArrayable>)image withOptions:(OCVCascadeClassifierOptions *)options;\n\n@end\n\nNS_ASSUME_NONNULL_END\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/ObjectDetection/OCVBaseCascadeClassifier.m",
    "content": "//\n//  OCVBaseCascadeClassifier.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/03/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVBaseCascadeClassifier.h\"\n\n@implementation OCVBaseCascadeClassifier\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/ObjectDetection/OCVCascadeClassifier.h",
    "content": "//\n//  OCVCascadeClassifier.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 24/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVBaseCascadeClassifier.h\"\n#import \"OCVInputArrayable.h\"\n#import \"OCVSize.h\"\n#import \"OCVRect.h\"\n#import \"OCVPersistence.h\"\n\nNS_ASSUME_NONNULL_BEGIN\n\n@interface OCVCascadeClassifier : OCVBaseCascadeClassifier\n\n- (void)readWithNode:(OCVFileNode *)node;\n\n@end\n\nNS_ASSUME_NONNULL_END\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/ObjectDetection/OCVCascadeClassifier.mm",
    "content": "//\n//  OCVCascadeClassifier.mm\n//  LegoCV\n//\n//  Created by Dal Rupnik on 24/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import <opencv2/core.hpp>\n#import <opencv2/objdetect.hpp>\n\n#import \"OCVCascadeClassifier.h\"\n#import \"OCVInputArray+Private.h\"\n\n#import \"OCVRect+Private.h\"\n#import \"OCVSize+Private.h\"\n\n@interface OCVCascadeClassifier ()\n\n@property (nonatomic, readonly) cv::CascadeClassifier* classifier;\n\n@end\n\n@implementation OCVCascadeClassifier\n\n- (BOOL)isOldFormatCascade {\n    return self.classifier->isOldFormatCascade();\n}\n\n- (OCVSize)originalWindowSize {\n    return convertSize(self.classifier->getOriginalWindowSize());\n}\n\n- (cv::CascadeClassifier *)classifier {\n    return (cv::CascadeClassifier *)pointer;\n}\n\n- (instancetype)init {\n    cv::CascadeClassifier* classifier = new cv::CascadeClassifier();\n    \n    self = [super initWithPointer:classifier];\n    \n    return self;\n}\n\n- (instancetype)initWithPath:(NSString *)path {\n    self = [self init];\n    \n    if (self) {\n        [self loadPath:path];\n    }\n    \n    return self;\n}\n\n- (instancetype)initWithURL:(NSURL *)url {\n    return [self initWithPath:[self.class convertUrlToPath:url]];\n}\n\n#pragma mark - Public Methods\n\n- (void)loadURL:(NSURL *)url {\n    [self loadPath:[self.class convertUrlToPath:url]];\n}\n\n- (void)loadPath:(NSString *)path {\n    self.classifier->load(path.UTF8String);\n}\n\n- (NSArray<OCVRectValue *>*)detectMultiscaleWith:(id<OCVInputArrayable>)image {\n    return [self detectMultiscaleWith:image scaleFactor:1.1];\n}\n\n- (NSArray<OCVRectValue *>*)detectMultiscaleWith:(id<OCVInputArrayable>)image scaleFactor:(double)scaleFactor {\n    return [self detectMultiscaleWith:image scaleFactor:scaleFactor minNeighbours:3];\n}\n\n- (NSArray<OCVRectValue *>*)detectMultiscaleWith:(id<OCVInputArrayable>)image scaleFactor:(double)scaleFactor minNeighbours:(NSInteger)minNeighbours {\n    return [self detectMultiscaleWith:image scaleFactor:scaleFactor minNeighbours:minNeighbours flags:0];\n}\n\n- (NSArray<OCVRectValue *>*)detectMultiscaleWith:(id<OCVInputArrayable>)image scaleFactor:(double)scaleFactor minNeighbours:(NSInteger)minNeighbours flags:(NSInteger)flags {\n    return [self detectMultiscaleWith:image scaleFactor:scaleFactor minNeighbours:minNeighbours flags:flags minSize:OCVSize()];\n}\n\n- (NSArray<OCVRectValue *>*)detectMultiscaleWith:(id<OCVInputArrayable>)image scaleFactor:(double)scaleFactor minNeighbours:(NSInteger)minNeighbours flags:(NSInteger)flags minSize:(OCVSize)minSize {\n    return [self detectMultiscaleWith:image scaleFactor:scaleFactor minNeighbours:minNeighbours flags:flags minSize:minSize maxSize:OCVSize()];\n}\n\n- (NSArray<OCVRectValue *>*)detectMultiscaleWith:(id<OCVInputArrayable>)image scaleFactor:(double)scaleFactor minNeighbours:(NSInteger)minNeighbours flags:(NSInteger)flags minSize:(OCVSize)minSize maxSize:(OCVSize)maxSize {\n    \n    std::vector<cv::Rect> faceRects;\n    \n    self.classifier->detectMultiScale(*image.input._input, faceRects, scaleFactor, (int)minNeighbours, (int)flags, convertSize(minSize), convertSize(maxSize));\n    \n    return [self convertRects:faceRects];\n}\n\n#pragma mark - Private Methods\n\n- (NSArray<OCVRectValue *>*)convertRects:(std::vector<cv::Rect>)rects {\n    NSMutableArray *values = [NSMutableArray array];\n    int i = 0;\n    \n    //\n    // Convert Face Rects into OCVRectValue wrappers to return correctly.\n    //\n    \n    for (std::vector<cv::Rect>::const_iterator r = rects.begin(); r != rects.end(); r++, i++) {\n        OCVRect rect = convertRect(rects[i]);\n        \n        [values addObject:[[OCVRectValue alloc] initWithRect:rect]];\n    }\n    \n    return values.copy;\n}\n\n#pragma mark - Private Class Methods\n\n+ (NSString *)convertUrlToPath:(NSURL *)url {\n    //\n    // TODO: Correctly handle all path variants, such as file://\n    //\n    \n    return [url absoluteString];\n}\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/ObjectDetection/OCVCascadeClassifierOptions.h",
    "content": "//\n//  OCVCascadeClassifierOptions.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/03/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVSize.h\"\n#import \"OCVObject.h\"\n\n/*!\n *  Reference type: cv::BaseCascadeClassifier enum\n */\ntypedef NS_OPTIONS(NSInteger, OCVCascadeClassifierFlags) {\n    OCVCascadeClassifierFlagDoCannyPruning     = 1,\n    OCVCascadeClassifierFlagScaleImage         = 2,\n    OCVCascadeClassifierFlagFindBiggestObject  = 4,\n    OCVCascadeClassifierFlagDoRoughSearch      = 8\n};\n\n/*!\n *  Simple object wrapper around options for cv::BaseCascadeClassifier::detectMultiScale() function.\n *  Options effectively affect the contents of the returned result object.\n *  \n *  @note: If outputLevelWeights property is set to YES, outputNumberOfDetections property is ignored,\n *         if set to NO (default), outputRejectLevels property is ignored.\n */\n@interface OCVCascadeClassifierOptions : OCVObject\n\n@property (nonatomic, assign) BOOL outputNumberOfDetections;\n@property (nonatomic, assign) BOOL outputLevelWeights;\n@property (nonatomic, assign) BOOL outputRejectLevels;\n \n@property (nonatomic, assign) double scaleFactor;\n@property (nonatomic, assign) NSInteger minNeighbors;\n@property (nonatomic, assign) OCVCascadeClassifierFlags flags;\n@property (nonatomic, assign) OCVSize minSize;\n@property (nonatomic, assign) OCVSize maxSize;\n\n/*!\n *  Default options will only return objects.\n */\n+ (nonnull instancetype)defaultOptions;\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/ObjectDetection/OCVCascadeClassifierOptions.m",
    "content": "//\n//  OCVCascadeClassifierOptions.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/03/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVCascadeClassifierOptions.h\"\n\n@implementation OCVCascadeClassifierOptions\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/ObjectDetection/OCVCascadeClassifierResult.h",
    "content": "//\n//  OCVCascadeClassifierResult.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/03/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n#import \"OCVRect.h\"\n\nNS_ASSUME_NONNULL_BEGIN\n\n@interface OCVCascadeClassifierResult : OCVObject\n\n@property (nonatomic, strong) NSArray <OCVRectValue *>* objects;\n@property (nullable, nonatomic, strong) NSArray <NSNumber *>* numberOfDetections;\n@property (nullable, nonatomic, strong) NSArray <NSNumber *>* rejectLevels;\n@property (nullable, nonatomic, strong) NSArray <NSNumber *>* levelWeights;\n\n@end\n\nNS_ASSUME_NONNULL_END\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/ObjectDetection/OCVCascadeClassifierResult.m",
    "content": "//\n//  OCVCascadeClassifierResult.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/03/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVCascadeClassifierResult.h\"\n\n@implementation OCVCascadeClassifierResult\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Ocl/OCVDevice.h",
    "content": "//\n//  OCVDevice.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVDevice : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Ocl/OCVDevice.m",
    "content": "//\n//  OCVDevice.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVDevice.h\"\n\n@implementation OCVDevice\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Ocl/OCVImage2D.h",
    "content": "//\n//  OCVImage2D.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVImage2D : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Ocl/OCVImage2D.m",
    "content": "//\n//  OCVImage2D.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVImage2D.h\"\n\n@implementation OCVImage2D\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Ocl/OCVKernel.h",
    "content": "//\n//  OCVKernel.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVKernel : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Ocl/OCVKernel.m",
    "content": "//\n//  OCVKernel.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVKernel.h\"\n\n@implementation OCVKernel\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Ocl/OCVKernelConfiguration.h",
    "content": "//\n//  OCVKernelConfiguration.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVKernelConfiguration : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Ocl/OCVKernelConfiguration.m",
    "content": "//\n//  OCVKernelConfiguration.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVKernelConfiguration.h\"\n\n@implementation OCVKernelConfiguration\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Ocl/OCVPlatformInfo.h",
    "content": "//\n//  OCVPlatformInfo.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVPlatformInfo : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Ocl/OCVPlatformInfo.m",
    "content": "//\n//  OCVPlatformInfo.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVPlatformInfo.h\"\n\n@implementation OCVPlatformInfo\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Ocl/OCVProgramSource.h",
    "content": "//\n//  OCVProgramSource.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVProgramSource : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Ocl/OCVProgramSource.m",
    "content": "//\n//  OCVProgramSource.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVProgramSource.h\"\n\n@implementation OCVProgramSource\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Ocl/OCVQueue.h",
    "content": "//\n//  OCVQueue.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVQueue : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Ocl/OCVQueue.m",
    "content": "//\n//  OCVQueue.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVQueue.h\"\n\n@implementation OCVQueue\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Plot/OCVPlot.h",
    "content": "//\n//  OCVPlot.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVPlot : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Plot/OCVPlot.m",
    "content": "//\n//  OCVPlot.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVPlot.h\"\n\n@implementation OCVPlot\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Reflection/OCVReflectImage.h",
    "content": "//\n//  OCVReflectImage.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVReflectImage : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Reflection/OCVReflectImage.m",
    "content": "//\n//  OCVReflectImage.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVReflectImage.h\"\n\n@implementation OCVReflectImage\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Shape/OCVAffineTransformer.h",
    "content": "//\n//  OCVAffineTransformer.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVAffineTransformer : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Shape/OCVAffineTransformer.m",
    "content": "//\n//  OCVAffineTransformer.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVAffineTransformer.h\"\n\n@implementation OCVAffineTransformer\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Shape/OCVChiHistogramCostExtractor.h",
    "content": "//\n//  OCVChiHistogramCostExtractor.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVChiHistogramCostExtractor : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Shape/OCVChiHistogramCostExtractor.m",
    "content": "//\n//  OCVChiHistogramCostExtractor.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVChiHistogramCostExtractor.h\"\n\n@implementation OCVChiHistogramCostExtractor\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Shape/OCVEMDHistogramCostExtractor.h",
    "content": "//\n//  OCVEMDHistogramCostExtractor.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVEMDHistogramCostExtractor : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Shape/OCVEMDHistogramCostExtractor.m",
    "content": "//\n//  OCVEMDHistogramCostExtractor.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVEMDHistogramCostExtractor.h\"\n\n@implementation OCVEMDHistogramCostExtractor\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Shape/OCVEMDL1HistogramCostExtractor.h",
    "content": "//\n//  OCVEMDL1HistogramCostExtractor.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVEMDL1HistogramCostExtractor : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Shape/OCVEMDL1HistogramCostExtractor.m",
    "content": "//\n//  OCVEMDL1HistogramCostExtractor.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVEMDL1HistogramCostExtractor.h\"\n\n@implementation OCVEMDL1HistogramCostExtractor\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Shape/OCVHausdorffDistanceExtractor.h",
    "content": "//\n//  OCVHausdorffDistanceExtractor.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVHausdorffDistanceExtractor : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Shape/OCVHausdorffDistanceExtractor.m",
    "content": "//\n//  OCVHausdorffDistanceExtractor.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVHausdorffDistanceExtractor.h\"\n\n@implementation OCVHausdorffDistanceExtractor\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Shape/OCVHistogramCostExtractor.h",
    "content": "//\n//  OCVHistogramCostExtractor.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVHistogramCostExtractor : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Shape/OCVHistogramCostExtractor.m",
    "content": "//\n//  OCVHistogramCostExtractor.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVHistogramCostExtractor.h\"\n\n@implementation OCVHistogramCostExtractor\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Shape/OCVNormHistogramCostExtractor.h",
    "content": "//\n//  OCVNormHistogramCostExtractor.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVNormHistogramCostExtractor : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Shape/OCVNormHistogramCostExtractor.m",
    "content": "//\n//  OCVNormHistogramCostExtractor.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVNormHistogramCostExtractor.h\"\n\n@implementation OCVNormHistogramCostExtractor\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Shape/OCVShapeContextDistanceExtractor.h",
    "content": "//\n//  OCVShapeContextDistanceExtractor.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVShapeContextDistanceExtractor : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Shape/OCVShapeContextDistanceExtractor.m",
    "content": "//\n//  OCVShapeContextDistanceExtractor.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVShapeContextDistanceExtractor.h\"\n\n@implementation OCVShapeContextDistanceExtractor\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Shape/OCVShapeDistanceExtractor.h",
    "content": "//\n//  OCVShapeDistanceExtractor.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVShapeDistanceExtractor : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Shape/OCVShapeDistanceExtractor.m",
    "content": "//\n//  OCVShapeDistanceExtractor.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVShapeDistanceExtractor.h\"\n\n@implementation OCVShapeDistanceExtractor\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Shape/OCVThinPlateSplineShapeTransformer.h",
    "content": "//\n//  OCVThinPlateSplineShapeTransformer.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVThinPlateSplineShapeTransformer : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Shape/OCVThinPlateSplineShapeTransformer.m",
    "content": "//\n//  OCVThinPlateSplineShapeTransformer.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVThinPlateSplineShapeTransformer.h\"\n\n@implementation OCVThinPlateSplineShapeTransformer\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Stitching/OCVCompressedRectilinearWarper.h",
    "content": "//\n//  OCVCompressedRectilinearWarper.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVCompressedRectilinearWarper : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Stitching/OCVCompressedRectilinearWarper.m",
    "content": "//\n//  OCVCompressedRectilinearWarper.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVCompressedRectilinearWarper.h\"\n\n@implementation OCVCompressedRectilinearWarper\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Stitching/OCVFeaturesFinder.h",
    "content": "//\n//  OCVFeaturesFinder.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVFeaturesFinder : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Stitching/OCVFeaturesFinder.m",
    "content": "//\n//  OCVFeaturesFinder.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVFeaturesFinder.h\"\n\n@implementation OCVFeaturesFinder\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Stitching/OCVFisheyeWarper.h",
    "content": "//\n//  OCVFisheyeWarper.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVFisheyeWarper : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Stitching/OCVFisheyeWarper.m",
    "content": "//\n//  OCVFisheyeWarper.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVFisheyeWarper.h\"\n\n@implementation OCVFisheyeWarper\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Stitching/OCVMercatorWarper.h",
    "content": "//\n//  OCVMercatorWarper.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVMercatorWarper : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Stitching/OCVMercatorWarper.m",
    "content": "//\n//  OCVMercatorWarper.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVMercatorWarper.h\"\n\n@implementation OCVMercatorWarper\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Stitching/OCVOrbFeaturesFinder.h",
    "content": "//\n//  OCVOrbFeaturesFinder.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVOrbFeaturesFinder : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Stitching/OCVOrbFeaturesFinder.m",
    "content": "//\n//  OCVOrbFeaturesFinder.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVOrbFeaturesFinder.h\"\n\n@implementation OCVOrbFeaturesFinder\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Stitching/OCVPaniniPortraitWarper.h",
    "content": "//\n//  OCVPaniniPortraitWarper.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVPaniniPortraitWarper : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Stitching/OCVPaniniPortraitWarper.m",
    "content": "//\n//  OCVPaniniPortraitWarper.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVPaniniPortraitWarper.h\"\n\n@implementation OCVPaniniPortraitWarper\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Stitching/OCVPaniniWarper.h",
    "content": "//\n//  OCVPaniniWarper.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVPaniniWarper : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Stitching/OCVPaniniWarper.m",
    "content": "//\n//  OCVPaniniWarper.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVPaniniWarper.h\"\n\n@implementation OCVPaniniWarper\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Stitching/OCVPlaneWarper.h",
    "content": "//\n//  OCVPlaneWarper.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVPlaneWarper : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Stitching/OCVPlaneWarper.m",
    "content": "//\n//  OCVPlaneWarper.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVPlaneWarper.h\"\n\n@implementation OCVPlaneWarper\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Stitching/OCVSphericalWarper.h",
    "content": "//\n//  OCVSphericalWarper.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVSphericalWarper : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Stitching/OCVSphericalWarper.m",
    "content": "//\n//  OCVSphericalWarper.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVSphericalWarper.h\"\n\n@implementation OCVSphericalWarper\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Stitching/OCVStereographicWarper.h",
    "content": "//\n//  OCVStereographicWarper.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVStereographicWarper : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Stitching/OCVStereographicWarper.m",
    "content": "//\n//  OCVStereographicWarper.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVStereographicWarper.h\"\n\n@implementation OCVStereographicWarper\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Stitching/OCVSticher.h",
    "content": "//\n//  OCVSticher.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVSticher : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Stitching/OCVSticher.m",
    "content": "//\n//  OCVSticher.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVSticher.h\"\n\n@implementation OCVSticher\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Stitching/OCVTransverseMercatorWarper.h",
    "content": "//\n//  OCVTransverseMercatorWarper.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVTransverseMercatorWarper : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Stitching/OCVTransverseMercatorWarper.m",
    "content": "//\n//  OCVTransverseMercatorWarper.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVTransverseMercatorWarper.h\"\n\n@implementation OCVTransverseMercatorWarper\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Stitching/OCVWarperCreator.h",
    "content": "//\n//  OCVWarperCreator.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVWarperCreator : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Stitching/OCVWarperCreator.m",
    "content": "//\n//  OCVWarperCreator.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVWarperCreator.h\"\n\n@implementation OCVWarperCreator\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Structure/OCVRgb.h",
    "content": "//\n//  OCVRgb.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVRgb : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Structure/OCVRgb.m",
    "content": "//\n//  OCVRgb.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVRgb.h\"\n\n@implementation OCVRgb\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Structure/OCVRgba.h",
    "content": "//\n//  OCVRgba.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVRgba : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Structure/OCVRgba.m",
    "content": "//\n//  OCVRgba.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVRgba.h\"\n\n@implementation OCVRgba\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Superres/OCVFrameSource.h",
    "content": "//\n//  OCVFrameSource.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVFrameSource : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Superres/OCVFrameSource.m",
    "content": "//\n//  OCVFrameSource.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVFrameSource.h\"\n\n@implementation OCVFrameSource\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Superres/OCVSuperResolution.h",
    "content": "//\n//  OCVSuperResolution.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVSuperResolution : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Superres/OCVSuperResolution.m",
    "content": "//\n//  OCVSuperResolution.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVSuperResolution.h\"\n\n@implementation OCVSuperResolution\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Text/OCVERFilter.h",
    "content": "//\n//  OCVERFilter.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVERFilter : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Text/OCVERFilter.m",
    "content": "//\n//  OCVERFilter.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVERFilter.h\"\n\n@implementation OCVERFilter\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Text/OCVERFilterNM1.h",
    "content": "//\n//  OCVERFilterNM1.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVERFilterNM1 : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Text/OCVERFilterNM1.m",
    "content": "//\n//  OCVERFilterNM1.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVERFilterNM1.h\"\n\n@implementation OCVERFilterNM1\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Text/OCVERFilterNM2.h",
    "content": "//\n//  OCVERFilterNM2.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVERFilterNM2 : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Text/OCVERFilterNM2.m",
    "content": "//\n//  OCVERFilterNM2.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVERFilterNM2.h\"\n\n@implementation OCVERFilterNM2\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Text/OCVERStat.h",
    "content": "//\n//  OCVERStat.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVERStat : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Text/OCVERStat.m",
    "content": "//\n//  OCVERStat.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVERStat.h\"\n\n@implementation OCVERStat\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Tiff/OCVTiffWriter.h",
    "content": "//\n//  OCVTiffWriter.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVTiffWriter : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Tiff/OCVTiffWriter.m",
    "content": "//\n//  OCVTiffWriter.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVTiffWriter.h\"\n\n@implementation OCVTiffWriter\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Tiff/OCVTileTiffWriter.h",
    "content": "//\n//  OCVTileTiffWriter.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVTileTiffWriter : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Tiff/OCVTileTiffWriter.m",
    "content": "//\n//  OCVTileTiffWriter.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVTileTiffWriter.h\"\n\n@implementation OCVTileTiffWriter\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Tracking/OCVMultiTracker.h",
    "content": "//\n//  OCVMultiTracker.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVMultiTracker : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Tracking/OCVMultiTracker.m",
    "content": "//\n//  OCVMultiTracker.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVMultiTracker.h\"\n\n@implementation OCVMultiTracker\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Tracking/OCVTracker.h",
    "content": "//\n//  OCVTracker.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVTracker : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Tracking/OCVTracker.m",
    "content": "//\n//  OCVTracker.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVTracker.h\"\n\n@implementation OCVTracker\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/UI/OCVHistogramBox.h",
    "content": "//\n//  OCVHistogramBox.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVHistogramBox : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/UI/OCVHistogramBox.m",
    "content": "//\n//  OCVHistogramBox.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVHistogramBox.h\"\n\n@implementation OCVHistogramBox\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/UI/OCVHistogramViewer.h",
    "content": "//\n//  OCVHistogramViewer.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVHistogramViewer : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/UI/OCVHistogramViewer.m",
    "content": "//\n//  OCVHistogramViewer.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVHistogramViewer.h\"\n\n@implementation OCVHistogramViewer\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Utilities/OCVObject.h",
    "content": "//\n//  OCVObject.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import <Foundation/Foundation.h>\n\n@interface OCVObject : NSObject\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Utilities/OCVObject.m",
    "content": "//\n//  OCVObject.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@implementation OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Utilities/OCVPointerObject.h",
    "content": "//\n//  OCVPointerObject.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 22/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVPointerObject : OCVObject {\n   \n@public\n    void *pointer;\n}\n\n- (instancetype)initWithPointer:(void *)unsafePointer;\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Utilities/OCVPointerObject.m",
    "content": "//\n//  OCVPointerObject.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 22/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVPointerObject.h\"\n\n@implementation OCVPointerObject\n\n- (instancetype)initWithPointer:(void *)unsafePointer {\n    self = [super init];\n    \n    if (self) {\n        pointer = unsafePointer;\n    }\n    \n    return self;\n}\n\n- (void)dealloc {\n    if (pointer != NULL) {\n        free(pointer);\n    }\n}\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Utilities/OCVReferenceObject.h",
    "content": "//\n//  OCVReferenceObject.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 23/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVReferenceObject : OCVObject\n\n@property (nonatomic, strong) id object;\n\n- (instancetype)initWithObject:(id)object;\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Utilities/OCVReferenceObject.m",
    "content": "//\n//  OCVReferenceObject.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 23/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVReferenceObject.h\"\n\n@implementation OCVReferenceObject\n\n- (NSString *)description {\n    return [NSString stringWithFormat:@\"[OCVReferencedObject]: %@\", [self.object description]];\n}\n\n- (instancetype)initWithObject:(id)object {\n    self = [super init];\n    \n    if (self) {\n        self.object = object;\n    }\n    \n    return self;\n}\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Video/OCVCamera+Private.h",
    "content": "//\n//  OCVCamera+Private.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 23/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVCamera.h\"\n\n#import <opencv2/videoio/cap_ios.h>\n\n@interface OCVCamera (OpenCV)\n\n@property (nonatomic, strong) CvAbstractCamera *source;\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Video/OCVCamera.h",
    "content": "//\n//  OCVCamera.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 23/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import <AVFoundation/AVFoundation.h>\n#import <UIKit/UIKit.h>\n\n#import \"OCVReferenceObject.h\"\n\n/*!\n *  Abstract camera, do not use directly\n */\n@interface OCVCamera : OCVReferenceObject\n\n@property (nonatomic, strong) AVCaptureSession* captureSession;\n@property (nonatomic, strong) AVCaptureConnection* videoCaptureConnection;\n\n@property (nonatomic, readonly) BOOL running;\n@property (nonatomic, readonly) BOOL captureSessionLoaded;\n\n@property (nonatomic, assign) NSInteger defaultFPS;\n@property (nonatomic, readonly) AVCaptureVideoPreviewLayer *captureVideoPreviewLayer;\n@property (nonatomic, assign) AVCaptureDevicePosition defaultAVCaptureDevicePosition;\n@property (nonatomic, assign) AVCaptureVideoOrientation defaultAVCaptureVideoOrientation;\n@property (nonatomic, assign) BOOL useAVCaptureVideoPreviewLayer;\n@property (nonatomic, strong) AVCaptureSessionPreset defaultAVCaptureSessionPreset;\n\n@property (nonatomic, assign) NSInteger imageWidth;\n@property (nonatomic, assign) NSInteger imageHeight;\n\n@property (nonatomic, strong) UIView* parentView;\n\n/*!\n *  Used by subclasses\n */\n- (instancetype)initWithParentView:(UIView*)parent;\n\n- (void)start;\n- (void)stop;\n- (void)switchCameras;\n\n\n- (void)createCaptureOutput;\n- (void)createVideoPreviewLayer;\n- (void)updateOrientation;\n\n- (void)lockFocus;\n- (void)unlockFocus;\n- (void)lockExposure;\n- (void)unlockExposure;\n- (void)lockBalance;\n- (void)unlockBalance;\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Video/OCVCamera.mm",
    "content": "//\n//  OCVCamera.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 23/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVCamera.h\"\n#import \"OCVCamera+Private.h\"\n\n@implementation OCVCamera\n\n#pragma mark - Private Properties\n\n- (CvAbstractCamera *)source {\n    return (CvAbstractCamera *)self.object;\n}\n\n#pragma mark - Public Properties\n\n- (AVCaptureSession *)captureSession {\n    return self.source.captureSession;\n}\n\n- (void)setCaptureSession:(AVCaptureSession *)captureSession {\n    self.source.captureSession = captureSession;\n}\n\n- (AVCaptureConnection *)videoCaptureConnection {\n    return self.source.videoCaptureConnection;\n}\n\n- (void)setVideoCaptureConnection:(AVCaptureConnection *)videoCaptureConnection {\n    self.source.videoCaptureConnection = videoCaptureConnection;\n}\n\n- (BOOL)running {\n    return self.source.running;\n}\n\n- (BOOL)captureSessionLoaded {\n    return self.source.captureSessionLoaded;\n}\n\n- (NSInteger)defaultFPS {\n    return self.source.defaultFPS;\n}\n\n- (void)setDefaultFPS:(NSInteger)defaultFPS {\n    self.source.defaultFPS = (int)defaultFPS;\n}\n\n- (AVCaptureVideoPreviewLayer *)captureVideoPreviewLayer {\n    return self.source.captureVideoPreviewLayer;\n}\n\n- (AVCaptureDevicePosition)defaultAVCaptureDevicePosition {\n    return self.source.defaultAVCaptureDevicePosition;\n}\n\n- (void)setDefaultAVCaptureDevicePosition:(AVCaptureDevicePosition)defaultAVCaptureDevicePosition {\n    self.source.defaultAVCaptureDevicePosition = defaultAVCaptureDevicePosition;\n}\n\n- (AVCaptureVideoOrientation)defaultAVCaptureVideoOrientation {\n    return self.source.defaultAVCaptureVideoOrientation;\n}\n\n- (void)setDefaultAVCaptureVideoOrientation:(AVCaptureVideoOrientation)defaultAVCaptureVideoOrientation {\n    self.source.defaultAVCaptureVideoOrientation = defaultAVCaptureVideoOrientation;\n}\n\n- (BOOL)useAVCaptureVideoPreviewLayer {\n    return self.source.useAVCaptureVideoPreviewLayer;\n}\n\n- (void)setUseAVCaptureVideoPreviewLayer:(BOOL)useAVCaptureVideoPreviewLayer {\n    self.source.useAVCaptureVideoPreviewLayer = useAVCaptureVideoPreviewLayer;\n}\n\n- (AVCaptureSessionPreset)defaultAVCaptureSessionPreset {\n    return (AVCaptureSessionPreset)self.source.defaultAVCaptureSessionPreset;\n}\n\n- (void)setDefaultAVCaptureSessionPreset:(AVCaptureSessionPreset)defaultAVCaptureSessionPreset {\n    self.source.defaultAVCaptureSessionPreset = defaultAVCaptureSessionPreset;\n}\n\n- (NSInteger)imageWidth {\n    return self.source.imageWidth;\n}\n\n- (void)setImageWidth:(NSInteger)imageWidth {\n    self.source.imageWidth = (int)imageWidth;\n}\n\n- (NSInteger)imageHeight {\n    return self.source.imageHeight;\n}\n\n- (void)setImageHeight:(NSInteger)imageHeight {\n    self.source.imageHeight = (int)imageHeight;\n}\n\n- (UIView *)parentView {\n    return self.source.parentView;\n}\n\n- (void)setParentView:(UIView *)parentView {\n    self.source.parentView = parentView;\n}\n\n#pragma mark - Initialization\n\n- (instancetype)initWithParentView:(UIView *)parent {\n    [NSException raise:@\"InitNotImplemented\" format:@\"This method is abstract and is not implemented.\"];\n    \n    return nil;\n}\n\n#pragma mark - Public Methods\n\n- (void)start {\n    [self.source start];\n}\n\n- (void)stop {\n    [self.source stop];\n}\n\n- (void)switchCameras {\n    [self.source switchCameras];\n}\n\n- (void)createCaptureOutput {\n    [self.source createCaptureOutput];\n}\n\n- (void)createVideoPreviewLayer {\n    [self.source createVideoPreviewLayer];\n}\n\n- (void)updateOrientation {\n    [self.source updateOrientation];\n}\n\n- (void)lockFocus {\n    [self.source lockFocus];\n}\n- (void)unlockFocus {\n    [self.source unlockFocus];\n}\n- (void)lockExposure {\n    [self.source lockExposure];\n}\n- (void)unlockExposure {\n    [self.source unlockExposure];\n}\n- (void)lockBalance {\n    [self.source lockBalance];\n}\n- (void)unlockBalance {\n    [self.source unlockBalance];\n}\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Video/OCVPhotoCamera.h",
    "content": "//\n//  OCVPhotoCamera.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 23/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVCamera.h\"\n\n@class OCVPhotoCamera;\n\n@protocol OCVPhotoCameraDelegate <NSObject>\n\n- (void)photoCamera:(OCVPhotoCamera *)photoCamera capturedImage:(UIImage *)image;\n- (void)photoCameraCancel:(OCVPhotoCamera *)photoCamera;\n\n@end\n\n@interface OCVPhotoCamera : OCVCamera\n\n@property (nonatomic, weak) id<OCVPhotoCameraDelegate> delegate;\n\n- (void)takePicture;\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Video/OCVPhotoCamera.mm",
    "content": "//\n//  OCVPhotoCamera.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 23/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVCamera+Private.h\"\n\n#import \"OCVPhotoCamera.h\"\n\n@interface OCVPhotoCamera () <CvPhotoCameraDelegate>\n\n@property (nonatomic, readonly) CvPhotoCamera *cameraSource;\n\n@end\n\n@implementation OCVPhotoCamera\n\n- (CvPhotoCamera *)cameraSource {\n    return (CvPhotoCamera *)self.source;\n}\n\n- (void)setDelegate:(id<OCVPhotoCameraDelegate>)delegate {\n    _delegate = delegate;\n    \n    self.cameraSource.delegate = self;\n}\n\n- (instancetype)initWithParentView:(UIView *)parent {\n    self = [super initWithObject:[[CvPhotoCamera alloc] initWithParentView:parent]];\n        \n    return self;\n}\n\n- (void)takePicture {\n    [self.cameraSource takePicture];\n}\n\n#pragma mark - CvPhotoCameraDelegate\n\n- (void)photoCamera:(CvPhotoCamera*)photoCamera capturedImage:(UIImage *)image {\n    [self.delegate photoCamera:self capturedImage:image];\n}\n- (void)photoCameraCancel:(CvPhotoCamera*)photoCamera {\n    [self.delegate photoCameraCancel:self];\n}\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Video/OCVVideo.h",
    "content": "//\n//  OCVVideo.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 23/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#ifndef OCVVideo_h\n#define OCVVideo_h\n\n#import \"OCVCamera.h\"\n#import \"OCVPhotoCamera.h\"\n#import \"OCVVideoCamera.h\"\n\n#endif /* OCVVideo_h */\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Video/OCVVideoCamera.h",
    "content": "//\n//  OCVVideoCamera.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 23/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import <CoreGraphics/CoreGraphics.h>\n\n#import \"OCVCamera.h\"\n\n@class OCVMat;\n\nNS_ASSUME_NONNULL_BEGIN\n\n@protocol OCVVideoCameraDelegate <NSObject>\n\n- (void)processImage:(OCVMat *)image;\n\n@end\n\n@interface OCVVideoCamera : OCVCamera\n\n@property (nullable, nonatomic, weak) id<OCVVideoCameraDelegate> delegate;\n@property (nonatomic, assign) BOOL grayscaleMode;\n\n@property (nonatomic, assign) BOOL recordVideo;\n@property (nonatomic, assign) BOOL rotateVideo;\n@property (nullable, nonatomic, strong) AVAssetWriterInput* recordAssetWriterInput;\n@property (nullable, nonatomic, strong) AVAssetWriterInputPixelBufferAdaptor* recordPixelBufferAdaptor;\n@property (nullable, nonatomic, strong) AVAssetWriter* recordAssetWriter;\n\n- (void)adjustLayoutToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation;\n- (void)layoutPreviewLayer;\n- (void)saveVideo;\n- (NSURL * _Nullable)videoFileURL;\n- (NSString * _Nullable)videoFileString;\n\n@end\n\nNS_ASSUME_NONNULL_END\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/Video/OCVVideoCamera.mm",
    "content": "//\n//  OCVVideoCamera.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 23/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVCamera+Private.h\"\n#import \"OCVMatDataAllocator+Private.h\"\n#import \"OCVMat.h\"\n\n#import \"OCVVideoCamera.h\"\n\n@interface OCVVideoCamera () <CvVideoCameraDelegate>\n\n@property (nonatomic, readonly) CvVideoCamera *cameraSource;\n\n@end\n\n@implementation OCVVideoCamera\n\n- (CvVideoCamera *)cameraSource {\n    return (CvVideoCamera *)self.source;\n}\n\n#pragma mark - Public Properties\n\n- (void)setDelegate:(id<OCVVideoCameraDelegate>)delegate {\n    _delegate = delegate;\n    \n    self.cameraSource.delegate = self;\n}\n\n- (BOOL)grayscaleMode {\n    return self.cameraSource.grayscaleMode;\n}\n\n- (void)setGrayscaleMode:(BOOL)grayscaleMode {\n    self.cameraSource.grayscaleMode = grayscaleMode;\n}\n\n- (BOOL)recordVideo {\n    return self.cameraSource.recordVideo;\n}\n\n- (void)setRecordVideo:(BOOL)recordVideo {\n    self.cameraSource.recordVideo = recordVideo;\n}\n\n- (BOOL)rotateVideo {\n    return self.cameraSource.rotateVideo;\n}\n\n- (void)setRotateVideo:(BOOL)rotateVideo {\n    self.cameraSource.rotateVideo = rotateVideo;\n}\n\n- (AVAssetWriterInput *)recordAssetWriterInput {\n    return self.cameraSource.recordAssetWriterInput;\n}\n\n- (void)setRecordAssetWriterInput:(AVAssetWriterInput *)recordAssetWriterInput {\n    self.cameraSource.recordAssetWriterInput = recordAssetWriterInput;\n}\n\n- (AVAssetWriterInputPixelBufferAdaptor *)recordPixelBufferAdaptor {\n    return self.cameraSource.recordPixelBufferAdaptor;\n}\n\n- (void)setRecordPixelBufferAdaptor:(AVAssetWriterInputPixelBufferAdaptor *)recordPixelBufferAdaptor {\n    self.cameraSource.recordPixelBufferAdaptor = recordPixelBufferAdaptor;\n}\n\n- (AVAssetWriter *)recordAssetWriter {\n    return self.cameraSource.recordAssetWriter;\n}\n\n- (void)setRecordAssetWriter:(AVAssetWriter *)recordAssetWriter {\n    self.cameraSource.recordAssetWriter = recordAssetWriter;\n}\n\n#pragma mark - Initialization\n\n- (instancetype)initWithParentView:(UIView *)parent {\n    self = [super initWithObject:[[CvVideoCamera alloc] initWithParentView:parent]];\n    \n    return self;\n}\n\n#pragma mark - Public Methods\n\n- (void)adjustLayoutToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {\n    [self.cameraSource adjustLayoutToInterfaceOrientation:interfaceOrientation];\n}\n\n- (void)layoutPreviewLayer {\n    [self.cameraSource layoutPreviewLayer];\n}\n\n- (void)saveVideo {\n    [self.cameraSource saveVideo];\n}\n\n- (NSURL *)videoFileURL {\n    return [self.cameraSource videoFileURL];\n}\n\n- (NSString *)videoFileString {\n    return [self.cameraSource videoFileString];\n}\n\n#pragma mark - CvVideoCameraDelegate\n\n- (void)processImage:(cv::Mat &)image {\n    [self.delegate processImage:[[OCVMat alloc] initWithMatInstance:&image]];\n}\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/VideoStab/OCVGaussianMotionFilter.h",
    "content": "//\n//  OCVGaussianMotionFilter.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVGaussianMotionFilter : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/VideoStab/OCVGaussianMotionFilter.m",
    "content": "//\n//  OCVGaussianMotionFilter.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVGaussianMotionFilter.h\"\n\n@implementation OCVGaussianMotionFilter\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/VideoStab/OCVOnePassStabilizer.h",
    "content": "//\n//  OCVOnePassStabilizer.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVOnePassStabilizer : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/VideoStab/OCVOnePassStabilizer.m",
    "content": "//\n//  OCVOnePassStabilizer.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVOnePassStabilizer.h\"\n\n@implementation OCVOnePassStabilizer\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/VideoStab/OCVTwoPassStabilizer.h",
    "content": "//\n//  OCVTwoPassStabilizer.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVTwoPassStabilizer : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/VideoStab/OCVTwoPassStabilizer.m",
    "content": "//\n//  OCVTwoPassStabilizer.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVTwoPassStabilizer.h\"\n\n@implementation OCVTwoPassStabilizer\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/VideoStab/OCVVideoCaptureFrameSource.h",
    "content": "//\n//  OCVVideoCaptureFrameSource.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVVideoCaptureFrameSource : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/VideoStab/OCVVideoCaptureFrameSource.m",
    "content": "//\n//  OCVVideoCaptureFrameSource.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVVideoCaptureFrameSource.h\"\n\n@implementation OCVVideoCaptureFrameSource\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/VideoStab/OCVVideoFrameSource.h",
    "content": "//\n//  OCVVideoFrameSource.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVVideoFrameSource : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/VideoStab/OCVVideoFrameSource.m",
    "content": "//\n//  OCVVideoFrameSource.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVVideoFrameSource.h\"\n\n@implementation OCVVideoFrameSource\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/VideoSurveillance/OCVBackgroundSubtractor.h",
    "content": "//\n//  OCVBackgroundSubtractor.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVBackgroundSubtractor : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/VideoSurveillance/OCVBackgroundSubtractor.m",
    "content": "//\n//  OCVBackgroundSubtractor.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVBackgroundSubtractor.h\"\n\n@implementation OCVBackgroundSubtractor\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/VideoSurveillance/OCVBackgroundSubtractorKNN.h",
    "content": "//\n//  OCVBackgroundSubtractorKNN.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVBackgroundSubtractorKNN : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/VideoSurveillance/OCVBackgroundSubtractorKNN.m",
    "content": "//\n//  OCVBackgroundSubtractorKNN.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVBackgroundSubtractorKNN.h\"\n\n@implementation OCVBackgroundSubtractorKNN\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/VideoSurveillance/OCVBackgroundSubtractorMOG2.h",
    "content": "//\n//  OCVBackgroundSubtractorMOG2.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVBackgroundSubtractorMOG2 : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/VideoSurveillance/OCVBackgroundSubtractorMOG2.m",
    "content": "//\n//  OCVBackgroundSubtractorMOG2.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVBackgroundSubtractorMOG2.h\"\n\n@implementation OCVBackgroundSubtractorMOG2\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/XFeatures2D/OCVBriefDescriptorExtractor.h",
    "content": "//\n//  OCVBriefDescriptorExtractor.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVBriefDescriptorExtractor : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/XFeatures2D/OCVBriefDescriptorExtractor.m",
    "content": "//\n//  OCVBriefDescriptorExtractor.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVBriefDescriptorExtractor.h\"\n\n@implementation OCVBriefDescriptorExtractor\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/XFeatures2D/OCVCudaSURF.h",
    "content": "//\n//  OCVCudaSURF.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVCudaSURF : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/XFeatures2D/OCVCudaSURF.m",
    "content": "//\n//  OCVCudaSURF.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVCudaSURF.h\"\n\n@implementation OCVCudaSURF\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/XFeatures2D/OCVDAISY.h",
    "content": "//\n//  OCVDAISY.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVDAISY : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/XFeatures2D/OCVDAISY.m",
    "content": "//\n//  OCVDAISY.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVDAISY.h\"\n\n@implementation OCVDAISY\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/XFeatures2D/OCVFreak.h",
    "content": "//\n//  OCVFreak.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVFreak : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/XFeatures2D/OCVFreak.m",
    "content": "//\n//  OCVFreak.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVFreak.h\"\n\n@implementation OCVFreak\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/XFeatures2D/OCVLATCH.h",
    "content": "//\n//  OCVLATCH.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVLATCH : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/XFeatures2D/OCVLATCH.m",
    "content": "//\n//  OCVLATCH.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVLATCH.h\"\n\n@implementation OCVLATCH\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/XFeatures2D/OCVLUCID.h",
    "content": "//\n//  OCVLUCID.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVLUCID : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/XFeatures2D/OCVLUCID.m",
    "content": "//\n//  OCVLUCID.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVLUCID.h\"\n\n@implementation OCVLUCID\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/XFeatures2D/OCVSIFT.h",
    "content": "//\n//  OCVSIFT.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVSIFT : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/XFeatures2D/OCVSIFT.m",
    "content": "//\n//  OCVSIFT.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVSIFT.h\"\n\n@implementation OCVSIFT\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/XFeatures2D/OCVSURF.h",
    "content": "//\n//  OCVSURF.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVSURF : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/XFeatures2D/OCVSURF.m",
    "content": "//\n//  OCVSURF.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVSURF.h\"\n\n@implementation OCVSURF\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/XFeatures2D/OCVStarDetector.h",
    "content": "//\n//  OCVStarDetector.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVStarDetector : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/XFeatures2D/OCVStarDetector.m",
    "content": "//\n//  OCVStarDetector.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVStarDetector.h\"\n\n@implementation OCVStarDetector\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/XImgproc/OCVDTFilter.h",
    "content": "//\n//  OCVDTFilter.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVDTFilter : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/XImgproc/OCVDTFilter.m",
    "content": "//\n//  OCVDTFilter.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVDTFilter.h\"\n\n@implementation OCVDTFilter\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/XPhoto/OCVXPhoto.h",
    "content": "//\n//  OCVXPhoto.h\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVObject.h\"\n\n@interface OCVXPhoto : OCVObject\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV/Wrapper/XPhoto/OCVXPhoto.m",
    "content": "//\n//  OCVXPhoto.m\n//  LegoCV\n//\n//  Created by Dal Rupnik on 18/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\n#import \"OCVXPhoto.h\"\n\n@implementation OCVXPhoto\n\n@end\n"
  },
  {
    "path": "LegoCV/LegoCV.xcodeproj/project.pbxproj",
    "content": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 46;\n\tobjects = {\n\n/* Begin PBXBuildFile section */\n\t\t381F15091E2AA1D50072F870 /* opencv2.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 381F15081E2AA1D50072F870 /* opencv2.framework */; };\n\t\t381F150B1E2AA22A0072F870 /* LegoCV.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 38B4D4B01E2AA01F008AAAB0 /* LegoCV.framework */; };\n\t\t381F150C1E2AA22A0072F870 /* LegoCV.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 38B4D4B01E2AA01F008AAAB0 /* LegoCV.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };\n\t\t383BC4101E2FF974002EA7A1 /* OCVObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC40E1E2FF974002EA7A1 /* OCVObject.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t383BC4111E2FF974002EA7A1 /* OCVObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC40F1E2FF974002EA7A1 /* OCVObject.m */; };\n\t\t383BC4181E2FFAC2002EA7A1 /* OCVBlob.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC4161E2FFAC2002EA7A1 /* OCVBlob.h */; };\n\t\t383BC4191E2FFAC2002EA7A1 /* OCVBlob.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC4171E2FFAC2002EA7A1 /* OCVBlob.m */; };\n\t\t383BC41C1E2FFAD4002EA7A1 /* OCVGPUMat.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC41A1E2FFAD4002EA7A1 /* OCVGPUMat.h */; };\n\t\t383BC41D1E2FFAD4002EA7A1 /* OCVGPUMat.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC41B1E2FFAD4002EA7A1 /* OCVGPUMat.m */; };\n\t\t383BC4201E2FFB1D002EA7A1 /* OCVStorageOperationType.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC41E1E2FFB1D002EA7A1 /* OCVStorageOperationType.h */; };\n\t\t383BC4211E2FFB1D002EA7A1 /* OCVStorageOperationType.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC41F1E2FFB1D002EA7A1 /* OCVStorageOperationType.m */; };\n\t\t383BC4241E2FFB32002EA7A1 /* OCVCharucoBoard.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC4221E2FFB32002EA7A1 /* OCVCharucoBoard.h */; };\n\t\t383BC4251E2FFB32002EA7A1 /* OCVCharucoBoard.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC4231E2FFB32002EA7A1 /* OCVCharucoBoard.m */; };\n\t\t383BC4281E2FFB47002EA7A1 /* OCVBackgroundSubtractorGMG.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC4261E2FFB47002EA7A1 /* OCVBackgroundSubtractorGMG.h */; };\n\t\t383BC4291E2FFB47002EA7A1 /* OCVBackgroundSubtractorGMG.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC4271E2FFB47002EA7A1 /* OCVBackgroundSubtractorGMG.m */; };\n\t\t383BC42C1E2FFB56002EA7A1 /* OCVBackgroundSubtractorMOG.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC42A1E2FFB56002EA7A1 /* OCVBackgroundSubtractorMOG.h */; };\n\t\t383BC42D1E2FFB56002EA7A1 /* OCVBackgroundSubtractorMOG.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC42B1E2FFB56002EA7A1 /* OCVBackgroundSubtractorMOG.m */; };\n\t\t383BC4301E2FFB78002EA7A1 /* OCVNet.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC42E1E2FFB78002EA7A1 /* OCVNet.h */; };\n\t\t383BC4311E2FFB78002EA7A1 /* OCVNet.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC42F1E2FFB78002EA7A1 /* OCVNet.m */; };\n\t\t383BC4341E2FFB89002EA7A1 /* OCVImporter.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC4321E2FFB89002EA7A1 /* OCVImporter.h */; };\n\t\t383BC4351E2FFB89002EA7A1 /* OCVImporter.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC4331E2FFB89002EA7A1 /* OCVImporter.m */; };\n\t\t383BC4381E2FFB9A002EA7A1 /* OCVEigenFaceRecognizer.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC4361E2FFB9A002EA7A1 /* OCVEigenFaceRecognizer.h */; };\n\t\t383BC4391E2FFB9A002EA7A1 /* OCVEigenFaceRecognizer.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC4371E2FFB9A002EA7A1 /* OCVEigenFaceRecognizer.m */; };\n\t\t383BC43C1E2FFBA6002EA7A1 /* OCVFaceRecognizer.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC43A1E2FFBA6002EA7A1 /* OCVFaceRecognizer.h */; };\n\t\t383BC43D1E2FFBA6002EA7A1 /* OCVFaceRecognizer.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC43B1E2FFBA6002EA7A1 /* OCVFaceRecognizer.m */; };\n\t\t383BC4401E2FFBB3002EA7A1 /* OCVFisherFaceRecognizer.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC43E1E2FFBB3002EA7A1 /* OCVFisherFaceRecognizer.h */; };\n\t\t383BC4411E2FFBB3002EA7A1 /* OCVFisherFaceRecognizer.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC43F1E2FFBB3002EA7A1 /* OCVFisherFaceRecognizer.m */; };\n\t\t383BC4441E2FFBBF002EA7A1 /* OCVLBPHFaceRecognizer.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC4421E2FFBBF002EA7A1 /* OCVLBPHFaceRecognizer.h */; };\n\t\t383BC4451E2FFBBF002EA7A1 /* OCVLBPHFaceRecognizer.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC4431E2FFBBF002EA7A1 /* OCVLBPHFaceRecognizer.m */; };\n\t\t383BC4481E2FFBD5002EA7A1 /* OCVFeature2D.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC4461E2FFBD5002EA7A1 /* OCVFeature2D.h */; };\n\t\t383BC4491E2FFBD5002EA7A1 /* OCVFeature2D.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC4471E2FFBD5002EA7A1 /* OCVFeature2D.m */; };\n\t\t383BC44C1E2FFBE4002EA7A1 /* OCVIndex.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC44A1E2FFBE4002EA7A1 /* OCVIndex.h */; };\n\t\t383BC44D1E2FFBE4002EA7A1 /* OCVIndex.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC44B1E2FFBE4002EA7A1 /* OCVIndex.m */; };\n\t\t383BC4541E2FFC18002EA7A1 /* OCVGeodeticCoordinate.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC4521E2FFC18002EA7A1 /* OCVGeodeticCoordinate.h */; };\n\t\t383BC4551E2FFC18002EA7A1 /* OCVGeodeticCoordinate.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC4531E2FFC18002EA7A1 /* OCVGeodeticCoordinate.m */; };\n\t\t383BC4581E2FFC2E002EA7A1 /* OCVFuzzyInvoke.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC4561E2FFC2E002EA7A1 /* OCVFuzzyInvoke.h */; };\n\t\t383BC4591E2FFC2E002EA7A1 /* OCVFuzzyInvoke.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC4571E2FFC2E002EA7A1 /* OCVFuzzyInvoke.m */; };\n\t\t383BC45C1E2FFC5C002EA7A1 /* OCVLSDDetector.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC45A1E2FFC5C002EA7A1 /* OCVLSDDetector.h */; };\n\t\t383BC45D1E2FFC5C002EA7A1 /* OCVLSDDetector.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC45B1E2FFC5C002EA7A1 /* OCVLSDDetector.m */; };\n\t\t383BC4601E2FFC6F002EA7A1 /* OCVBoost.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC45E1E2FFC6F002EA7A1 /* OCVBoost.h */; };\n\t\t383BC4611E2FFC6F002EA7A1 /* OCVBoost.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC45F1E2FFC6F002EA7A1 /* OCVBoost.m */; };\n\t\t383BC4641E2FFC7B002EA7A1 /* OCVANNMLP.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC4621E2FFC7B002EA7A1 /* OCVANNMLP.h */; };\n\t\t383BC4651E2FFC7B002EA7A1 /* OCVANNMLP.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC4631E2FFC7B002EA7A1 /* OCVANNMLP.m */; };\n\t\t383BC4681E2FFC8F002EA7A1 /* OCVDTree.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC4661E2FFC8F002EA7A1 /* OCVDTree.h */; };\n\t\t383BC4691E2FFC8F002EA7A1 /* OCVDTree.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC4671E2FFC8F002EA7A1 /* OCVDTree.m */; };\n\t\t383BC46C1E2FFCA2002EA7A1 /* OCVEM.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC46A1E2FFCA2002EA7A1 /* OCVEM.h */; };\n\t\t383BC46D1E2FFCA2002EA7A1 /* OCVEM.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC46B1E2FFCA2002EA7A1 /* OCVEM.m */; };\n\t\t383BC4701E2FFCAC002EA7A1 /* OCVKNearest.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC46E1E2FFCAC002EA7A1 /* OCVKNearest.h */; };\n\t\t383BC4711E2FFCAC002EA7A1 /* OCVKNearest.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC46F1E2FFCAC002EA7A1 /* OCVKNearest.m */; };\n\t\t383BC4741E2FFCB5002EA7A1 /* OCVLogisticRegression.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC4721E2FFCB5002EA7A1 /* OCVLogisticRegression.h */; };\n\t\t383BC4751E2FFCB5002EA7A1 /* OCVLogisticRegression.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC4731E2FFCB5002EA7A1 /* OCVLogisticRegression.m */; };\n\t\t383BC4781E2FFCC9002EA7A1 /* OCVNormalBayesClassifier.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC4761E2FFCC9002EA7A1 /* OCVNormalBayesClassifier.h */; };\n\t\t383BC4791E2FFCC9002EA7A1 /* OCVNormalBayesClassifier.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC4771E2FFCC9002EA7A1 /* OCVNormalBayesClassifier.m */; };\n\t\t383BC47C1E2FFCD3002EA7A1 /* OCVRTree.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC47A1E2FFCD3002EA7A1 /* OCVRTree.h */; };\n\t\t383BC47D1E2FFCD3002EA7A1 /* OCVRTree.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC47B1E2FFCD3002EA7A1 /* OCVRTree.m */; };\n\t\t383BC4801E2FFCE1002EA7A1 /* OCVStatModelExtensions.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC47E1E2FFCE1002EA7A1 /* OCVStatModelExtensions.h */; };\n\t\t383BC4811E2FFCE1002EA7A1 /* OCVStatModelExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC47F1E2FFCE1002EA7A1 /* OCVStatModelExtensions.m */; };\n\t\t383BC4841E2FFCEA002EA7A1 /* OCVSVM.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC4821E2FFCEA002EA7A1 /* OCVSVM.h */; };\n\t\t383BC4851E2FFCEA002EA7A1 /* OCVSVM.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC4831E2FFCEA002EA7A1 /* OCVSVM.m */; };\n\t\t383BC4881E2FFCF2002EA7A1 /* OCVTrainData.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC4861E2FFCF2002EA7A1 /* OCVTrainData.h */; };\n\t\t383BC4891E2FFCF2002EA7A1 /* OCVTrainData.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC4871E2FFCF2002EA7A1 /* OCVTrainData.m */; };\n\t\t383BC48C1E2FFD0A002EA7A1 /* OCVBoostType.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC48A1E2FFD0A002EA7A1 /* OCVBoostType.h */; };\n\t\t383BC48D1E2FFD0A002EA7A1 /* OCVBoostType.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC48B1E2FFD0A002EA7A1 /* OCVBoostType.m */; };\n\t\t383BC4901E2FFD13002EA7A1 /* OCVVarType.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC48E1E2FFD13002EA7A1 /* OCVVarType.h */; };\n\t\t383BC4911E2FFD13002EA7A1 /* OCVVarType.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC48F1E2FFD13002EA7A1 /* OCVVarType.m */; };\n\t\t383BC4941E2FFD2C002EA7A1 /* OCVMCvDTreeNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC4921E2FFD2C002EA7A1 /* OCVMCvDTreeNode.h */; };\n\t\t383BC4951E2FFD2C002EA7A1 /* OCVMCvDTreeNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC4931E2FFD2C002EA7A1 /* OCVMCvDTreeNode.m */; };\n\t\t383BC4981E2FFD39002EA7A1 /* OCVMCvDTreeSplit.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC4961E2FFD39002EA7A1 /* OCVMCvDTreeSplit.h */; };\n\t\t383BC4991E2FFD39002EA7A1 /* OCVMCvDTreeSplit.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC4971E2FFD39002EA7A1 /* OCVMCvDTreeSplit.m */; };\n\t\t383BC49C1E2FFD4B002EA7A1 /* OCVMCvDTreeSplitMOrder.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC49A1E2FFD4B002EA7A1 /* OCVMCvDTreeSplitMOrder.h */; };\n\t\t383BC49D1E2FFD4B002EA7A1 /* OCVMCvDTreeSplitMOrder.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC49B1E2FFD4B002EA7A1 /* OCVMCvDTreeSplitMOrder.m */; };\n\t\t383BC4A01E2FFD56002EA7A1 /* OCVMCvParamGrid.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC49E1E2FFD56002EA7A1 /* OCVMCvParamGrid.h */; };\n\t\t383BC4A11E2FFD56002EA7A1 /* OCVMCvParamGrid.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC49F1E2FFD56002EA7A1 /* OCVMCvParamGrid.m */; };\n\t\t383BC4A41E2FFDDA002EA7A1 /* OCVDevice.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC4A21E2FFDDA002EA7A1 /* OCVDevice.h */; };\n\t\t383BC4A51E2FFDDA002EA7A1 /* OCVDevice.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC4A31E2FFDDA002EA7A1 /* OCVDevice.m */; };\n\t\t383BC4A81E2FFDE5002EA7A1 /* OCVQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC4A61E2FFDE5002EA7A1 /* OCVQueue.h */; };\n\t\t383BC4A91E2FFDE5002EA7A1 /* OCVQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC4A71E2FFDE5002EA7A1 /* OCVQueue.m */; };\n\t\t383BC4AC1E2FFDEC002EA7A1 /* OCVKernel.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC4AA1E2FFDEC002EA7A1 /* OCVKernel.h */; };\n\t\t383BC4AD1E2FFDEC002EA7A1 /* OCVKernel.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC4AB1E2FFDEC002EA7A1 /* OCVKernel.m */; };\n\t\t383BC4B01E2FFDF6002EA7A1 /* OCVImage2D.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC4AE1E2FFDF6002EA7A1 /* OCVImage2D.h */; };\n\t\t383BC4B11E2FFDF6002EA7A1 /* OCVImage2D.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC4AF1E2FFDF6002EA7A1 /* OCVImage2D.m */; };\n\t\t383BC4B41E2FFE06002EA7A1 /* OCVKernelConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC4B21E2FFE06002EA7A1 /* OCVKernelConfiguration.h */; };\n\t\t383BC4B51E2FFE06002EA7A1 /* OCVKernelConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC4B31E2FFE06002EA7A1 /* OCVKernelConfiguration.m */; };\n\t\t383BC4B81E2FFE13002EA7A1 /* OCVPlatformInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC4B61E2FFE13002EA7A1 /* OCVPlatformInfo.h */; };\n\t\t383BC4B91E2FFE13002EA7A1 /* OCVPlatformInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC4B71E2FFE13002EA7A1 /* OCVPlatformInfo.m */; };\n\t\t383BC4BC1E2FFE1C002EA7A1 /* OCVProgramSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC4BA1E2FFE1C002EA7A1 /* OCVProgramSource.h */; };\n\t\t383BC4BD1E2FFE1C002EA7A1 /* OCVProgramSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC4BB1E2FFE1C002EA7A1 /* OCVProgramSource.m */; };\n\t\t383BC4C01E2FFE4E002EA7A1 /* OCVPageIterator.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC4BE1E2FFE4E002EA7A1 /* OCVPageIterator.h */; };\n\t\t383BC4C11E2FFE4E002EA7A1 /* OCVPageIterator.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC4BF1E2FFE4E002EA7A1 /* OCVPageIterator.m */; };\n\t\t383BC4C41E2FFE63002EA7A1 /* OCVTesseract.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC4C21E2FFE63002EA7A1 /* OCVTesseract.h */; };\n\t\t383BC4C51E2FFE63002EA7A1 /* OCVTesseract.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC4C31E2FFE63002EA7A1 /* OCVTesseract.m */; };\n\t\t383BC4C81E2FFE6C002EA7A1 /* OCVTesseractResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC4C61E2FFE6C002EA7A1 /* OCVTesseractResult.h */; };\n\t\t383BC4C91E2FFE6C002EA7A1 /* OCVTesseractResult.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC4C71E2FFE6C002EA7A1 /* OCVTesseractResult.m */; };\n\t\t383BC4CC1E2FFE7C002EA7A1 /* OCVOrientation.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC4CA1E2FFE7C002EA7A1 /* OCVOrientation.h */; };\n\t\t383BC4CD1E2FFE7C002EA7A1 /* OCVOrientation.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC4CB1E2FFE7C002EA7A1 /* OCVOrientation.m */; };\n\t\t383BC4D01E2FFE90002EA7A1 /* OCVPlot.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC4CE1E2FFE90002EA7A1 /* OCVPlot.h */; };\n\t\t383BC4D11E2FFE90002EA7A1 /* OCVPlot.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC4CF1E2FFE90002EA7A1 /* OCVPlot.m */; };\n\t\t383BC4D41E2FFEAE002EA7A1 /* OCVReflectImage.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC4D21E2FFEAE002EA7A1 /* OCVReflectImage.h */; };\n\t\t383BC4D51E2FFEAE002EA7A1 /* OCVReflectImage.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC4D31E2FFEAE002EA7A1 /* OCVReflectImage.m */; };\n\t\t383BC4D81E2FFEC0002EA7A1 /* OCVAffineTransformer.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC4D61E2FFEC0002EA7A1 /* OCVAffineTransformer.h */; };\n\t\t383BC4D91E2FFEC0002EA7A1 /* OCVAffineTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC4D71E2FFEC0002EA7A1 /* OCVAffineTransformer.m */; };\n\t\t383BC4DC1E2FFED0002EA7A1 /* OCVChiHistogramCostExtractor.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC4DA1E2FFED0002EA7A1 /* OCVChiHistogramCostExtractor.h */; };\n\t\t383BC4DD1E2FFED0002EA7A1 /* OCVChiHistogramCostExtractor.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC4DB1E2FFED0002EA7A1 /* OCVChiHistogramCostExtractor.m */; };\n\t\t383BC4E01E2FFEDE002EA7A1 /* OCVEMDHistogramCostExtractor.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC4DE1E2FFEDE002EA7A1 /* OCVEMDHistogramCostExtractor.h */; };\n\t\t383BC4E11E2FFEDE002EA7A1 /* OCVEMDHistogramCostExtractor.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC4DF1E2FFEDE002EA7A1 /* OCVEMDHistogramCostExtractor.m */; };\n\t\t383BC4E41E2FFEEC002EA7A1 /* OCVEMDL1HistogramCostExtractor.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC4E21E2FFEEC002EA7A1 /* OCVEMDL1HistogramCostExtractor.h */; };\n\t\t383BC4E51E2FFEEC002EA7A1 /* OCVEMDL1HistogramCostExtractor.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC4E31E2FFEEC002EA7A1 /* OCVEMDL1HistogramCostExtractor.m */; };\n\t\t383BC4E81E2FFEF8002EA7A1 /* OCVHausdorffDistanceExtractor.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC4E61E2FFEF8002EA7A1 /* OCVHausdorffDistanceExtractor.h */; };\n\t\t383BC4E91E2FFEF8002EA7A1 /* OCVHausdorffDistanceExtractor.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC4E71E2FFEF8002EA7A1 /* OCVHausdorffDistanceExtractor.m */; };\n\t\t383BC4EC1E2FFF08002EA7A1 /* OCVHistogramCostExtractor.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC4EA1E2FFF08002EA7A1 /* OCVHistogramCostExtractor.h */; };\n\t\t383BC4ED1E2FFF08002EA7A1 /* OCVHistogramCostExtractor.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC4EB1E2FFF08002EA7A1 /* OCVHistogramCostExtractor.m */; };\n\t\t383BC4F01E2FFF14002EA7A1 /* OCVNormHistogramCostExtractor.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC4EE1E2FFF14002EA7A1 /* OCVNormHistogramCostExtractor.h */; };\n\t\t383BC4F11E2FFF14002EA7A1 /* OCVNormHistogramCostExtractor.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC4EF1E2FFF14002EA7A1 /* OCVNormHistogramCostExtractor.m */; };\n\t\t383BC4F41E2FFF23002EA7A1 /* OCVShapeContextDistanceExtractor.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC4F21E2FFF23002EA7A1 /* OCVShapeContextDistanceExtractor.h */; };\n\t\t383BC4F51E2FFF23002EA7A1 /* OCVShapeContextDistanceExtractor.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC4F31E2FFF23002EA7A1 /* OCVShapeContextDistanceExtractor.m */; };\n\t\t383BC4F81E2FFF39002EA7A1 /* OCVShapeDistanceExtractor.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC4F61E2FFF39002EA7A1 /* OCVShapeDistanceExtractor.h */; };\n\t\t383BC4F91E2FFF39002EA7A1 /* OCVShapeDistanceExtractor.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC4F71E2FFF39002EA7A1 /* OCVShapeDistanceExtractor.m */; };\n\t\t383BC4FC1E2FFF44002EA7A1 /* OCVThinPlateSplineShapeTransformer.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC4FA1E2FFF44002EA7A1 /* OCVThinPlateSplineShapeTransformer.h */; };\n\t\t383BC4FD1E2FFF44002EA7A1 /* OCVThinPlateSplineShapeTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC4FB1E2FFF44002EA7A1 /* OCVThinPlateSplineShapeTransformer.m */; };\n\t\t383BC5001E2FFF5A002EA7A1 /* OCVFeaturesFinder.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC4FE1E2FFF5A002EA7A1 /* OCVFeaturesFinder.h */; };\n\t\t383BC5011E2FFF5A002EA7A1 /* OCVFeaturesFinder.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC4FF1E2FFF5A002EA7A1 /* OCVFeaturesFinder.m */; };\n\t\t383BC5041E2FFF66002EA7A1 /* OCVCompressedRectilinearWarper.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC5021E2FFF66002EA7A1 /* OCVCompressedRectilinearWarper.h */; };\n\t\t383BC5051E2FFF66002EA7A1 /* OCVCompressedRectilinearWarper.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC5031E2FFF66002EA7A1 /* OCVCompressedRectilinearWarper.m */; };\n\t\t383BC5081E2FFF6F002EA7A1 /* OCVFisheyeWarper.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC5061E2FFF6F002EA7A1 /* OCVFisheyeWarper.h */; };\n\t\t383BC5091E2FFF6F002EA7A1 /* OCVFisheyeWarper.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC5071E2FFF6F002EA7A1 /* OCVFisheyeWarper.m */; };\n\t\t383BC50C1E2FFF77002EA7A1 /* OCVMercatorWarper.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC50A1E2FFF77002EA7A1 /* OCVMercatorWarper.h */; };\n\t\t383BC50D1E2FFF77002EA7A1 /* OCVMercatorWarper.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC50B1E2FFF77002EA7A1 /* OCVMercatorWarper.m */; };\n\t\t383BC5101E2FFF82002EA7A1 /* OCVOrbFeaturesFinder.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC50E1E2FFF82002EA7A1 /* OCVOrbFeaturesFinder.h */; };\n\t\t383BC5111E2FFF82002EA7A1 /* OCVOrbFeaturesFinder.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC50F1E2FFF82002EA7A1 /* OCVOrbFeaturesFinder.m */; };\n\t\t383BC5141E2FFF8F002EA7A1 /* OCVPaniniPortraitWarper.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC5121E2FFF8F002EA7A1 /* OCVPaniniPortraitWarper.h */; };\n\t\t383BC5151E2FFF8F002EA7A1 /* OCVPaniniPortraitWarper.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC5131E2FFF8F002EA7A1 /* OCVPaniniPortraitWarper.m */; };\n\t\t383BC5181E2FFF99002EA7A1 /* OCVPaniniWarper.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC5161E2FFF99002EA7A1 /* OCVPaniniWarper.h */; };\n\t\t383BC5191E2FFF99002EA7A1 /* OCVPaniniWarper.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC5171E2FFF99002EA7A1 /* OCVPaniniWarper.m */; };\n\t\t383BC51C1E2FFFA0002EA7A1 /* OCVPlaneWarper.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC51A1E2FFFA0002EA7A1 /* OCVPlaneWarper.h */; };\n\t\t383BC51D1E2FFFA0002EA7A1 /* OCVPlaneWarper.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC51B1E2FFFA0002EA7A1 /* OCVPlaneWarper.m */; };\n\t\t383BC5201E2FFFAA002EA7A1 /* OCVSphericalWarper.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC51E1E2FFFAA002EA7A1 /* OCVSphericalWarper.h */; };\n\t\t383BC5211E2FFFAA002EA7A1 /* OCVSphericalWarper.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC51F1E2FFFAA002EA7A1 /* OCVSphericalWarper.m */; };\n\t\t383BC5241E2FFFB5002EA7A1 /* OCVStereographicWarper.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC5221E2FFFB5002EA7A1 /* OCVStereographicWarper.h */; };\n\t\t383BC5251E2FFFB5002EA7A1 /* OCVStereographicWarper.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC5231E2FFFB5002EA7A1 /* OCVStereographicWarper.m */; };\n\t\t383BC5281E2FFFBD002EA7A1 /* OCVSticher.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC5261E2FFFBD002EA7A1 /* OCVSticher.h */; };\n\t\t383BC5291E2FFFBD002EA7A1 /* OCVSticher.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC5271E2FFFBD002EA7A1 /* OCVSticher.m */; };\n\t\t383BC52C1E2FFFCE002EA7A1 /* OCVTransverseMercatorWarper.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC52A1E2FFFCE002EA7A1 /* OCVTransverseMercatorWarper.h */; };\n\t\t383BC52D1E2FFFCE002EA7A1 /* OCVTransverseMercatorWarper.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC52B1E2FFFCE002EA7A1 /* OCVTransverseMercatorWarper.m */; };\n\t\t383BC5301E2FFFD9002EA7A1 /* OCVWarperCreator.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC52E1E2FFFD9002EA7A1 /* OCVWarperCreator.h */; };\n\t\t383BC5311E2FFFD9002EA7A1 /* OCVWarperCreator.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC52F1E2FFFD9002EA7A1 /* OCVWarperCreator.m */; };\n\t\t383BC5341E2FFFF6002EA7A1 /* OCVRgb.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC5321E2FFFF6002EA7A1 /* OCVRgb.h */; };\n\t\t383BC5351E2FFFF6002EA7A1 /* OCVRgb.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC5331E2FFFF6002EA7A1 /* OCVRgb.m */; };\n\t\t383BC5381E2FFFFC002EA7A1 /* OCVRgba.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC5361E2FFFFC002EA7A1 /* OCVRgba.h */; };\n\t\t383BC5391E2FFFFC002EA7A1 /* OCVRgba.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC5371E2FFFFC002EA7A1 /* OCVRgba.m */; };\n\t\t383BC53C1E300015002EA7A1 /* OCVFrameSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC53A1E300015002EA7A1 /* OCVFrameSource.h */; };\n\t\t383BC53D1E300015002EA7A1 /* OCVFrameSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC53B1E300015002EA7A1 /* OCVFrameSource.m */; };\n\t\t383BC5401E30001E002EA7A1 /* OCVSuperResolution.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC53E1E30001E002EA7A1 /* OCVSuperResolution.h */; };\n\t\t383BC5411E30001E002EA7A1 /* OCVSuperResolution.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC53F1E30001E002EA7A1 /* OCVSuperResolution.m */; };\n\t\t383BC5441E300033002EA7A1 /* OCVERFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC5421E300033002EA7A1 /* OCVERFilter.h */; };\n\t\t383BC5451E300033002EA7A1 /* OCVERFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC5431E300033002EA7A1 /* OCVERFilter.m */; };\n\t\t383BC5481E30003C002EA7A1 /* OCVERFilterNM1.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC5461E30003C002EA7A1 /* OCVERFilterNM1.h */; };\n\t\t383BC5491E30003C002EA7A1 /* OCVERFilterNM1.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC5471E30003C002EA7A1 /* OCVERFilterNM1.m */; };\n\t\t383BC54C1E300044002EA7A1 /* OCVERFilterNM2.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC54A1E300044002EA7A1 /* OCVERFilterNM2.h */; };\n\t\t383BC54D1E300044002EA7A1 /* OCVERFilterNM2.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC54B1E300044002EA7A1 /* OCVERFilterNM2.m */; };\n\t\t383BC5501E30004F002EA7A1 /* OCVERStat.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC54E1E30004F002EA7A1 /* OCVERStat.h */; };\n\t\t383BC5511E30004F002EA7A1 /* OCVERStat.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC54F1E30004F002EA7A1 /* OCVERStat.m */; };\n\t\t383BC5541E300062002EA7A1 /* OCVTiffWriter.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC5521E300062002EA7A1 /* OCVTiffWriter.h */; };\n\t\t383BC5551E300062002EA7A1 /* OCVTiffWriter.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC5531E300062002EA7A1 /* OCVTiffWriter.m */; };\n\t\t383BC5581E30006B002EA7A1 /* OCVTileTiffWriter.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC5561E30006B002EA7A1 /* OCVTileTiffWriter.h */; };\n\t\t383BC5591E30006B002EA7A1 /* OCVTileTiffWriter.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC5571E30006B002EA7A1 /* OCVTileTiffWriter.m */; };\n\t\t383BC55C1E300078002EA7A1 /* OCVMultiTracker.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC55A1E300078002EA7A1 /* OCVMultiTracker.h */; };\n\t\t383BC55D1E300078002EA7A1 /* OCVMultiTracker.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC55B1E300078002EA7A1 /* OCVMultiTracker.m */; };\n\t\t383BC5601E30007F002EA7A1 /* OCVTracker.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC55E1E30007F002EA7A1 /* OCVTracker.h */; };\n\t\t383BC5611E30007F002EA7A1 /* OCVTracker.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC55F1E30007F002EA7A1 /* OCVTracker.m */; };\n\t\t383BC5641E30009D002EA7A1 /* OCVVideoCaptureFrameSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC5621E30009D002EA7A1 /* OCVVideoCaptureFrameSource.h */; };\n\t\t383BC5651E30009D002EA7A1 /* OCVVideoCaptureFrameSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC5631E30009D002EA7A1 /* OCVVideoCaptureFrameSource.m */; };\n\t\t383BC5681E3000A4002EA7A1 /* OCVVideoFrameSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC5661E3000A4002EA7A1 /* OCVVideoFrameSource.h */; };\n\t\t383BC5691E3000A4002EA7A1 /* OCVVideoFrameSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC5671E3000A4002EA7A1 /* OCVVideoFrameSource.m */; };\n\t\t383BC56C1E3000AD002EA7A1 /* OCVGaussianMotionFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC56A1E3000AD002EA7A1 /* OCVGaussianMotionFilter.h */; };\n\t\t383BC56D1E3000AD002EA7A1 /* OCVGaussianMotionFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC56B1E3000AD002EA7A1 /* OCVGaussianMotionFilter.m */; };\n\t\t383BC5701E3000B6002EA7A1 /* OCVOnePassStabilizer.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC56E1E3000B6002EA7A1 /* OCVOnePassStabilizer.h */; };\n\t\t383BC5711E3000B6002EA7A1 /* OCVOnePassStabilizer.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC56F1E3000B6002EA7A1 /* OCVOnePassStabilizer.m */; };\n\t\t383BC5741E3000BE002EA7A1 /* OCVTwoPassStabilizer.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC5721E3000BE002EA7A1 /* OCVTwoPassStabilizer.h */; };\n\t\t383BC5751E3000BE002EA7A1 /* OCVTwoPassStabilizer.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC5731E3000BE002EA7A1 /* OCVTwoPassStabilizer.m */; };\n\t\t383BC5781E3000D0002EA7A1 /* OCVBackgroundSubtractor.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC5761E3000D0002EA7A1 /* OCVBackgroundSubtractor.h */; };\n\t\t383BC5791E3000D0002EA7A1 /* OCVBackgroundSubtractor.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC5771E3000D0002EA7A1 /* OCVBackgroundSubtractor.m */; };\n\t\t383BC57C1E3000DA002EA7A1 /* OCVBackgroundSubtractorKNN.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC57A1E3000DA002EA7A1 /* OCVBackgroundSubtractorKNN.h */; };\n\t\t383BC57D1E3000DA002EA7A1 /* OCVBackgroundSubtractorKNN.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC57B1E3000DA002EA7A1 /* OCVBackgroundSubtractorKNN.m */; };\n\t\t383BC5801E3000E3002EA7A1 /* OCVBackgroundSubtractorMOG2.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC57E1E3000E3002EA7A1 /* OCVBackgroundSubtractorMOG2.h */; };\n\t\t383BC5811E3000E3002EA7A1 /* OCVBackgroundSubtractorMOG2.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC57F1E3000E3002EA7A1 /* OCVBackgroundSubtractorMOG2.m */; };\n\t\t383BC5841E3000F7002EA7A1 /* OCVHistogramBox.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC5821E3000F7002EA7A1 /* OCVHistogramBox.h */; };\n\t\t383BC5851E3000F7002EA7A1 /* OCVHistogramBox.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC5831E3000F7002EA7A1 /* OCVHistogramBox.m */; };\n\t\t383BC5881E3000FF002EA7A1 /* OCVHistogramViewer.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC5861E3000FF002EA7A1 /* OCVHistogramViewer.h */; };\n\t\t383BC5891E3000FF002EA7A1 /* OCVHistogramViewer.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC5871E3000FF002EA7A1 /* OCVHistogramViewer.m */; };\n\t\t383BC5901E300134002EA7A1 /* OCVBriefDescriptorExtractor.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC58E1E300134002EA7A1 /* OCVBriefDescriptorExtractor.h */; };\n\t\t383BC5911E300134002EA7A1 /* OCVBriefDescriptorExtractor.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC58F1E300134002EA7A1 /* OCVBriefDescriptorExtractor.m */; };\n\t\t383BC5941E30013C002EA7A1 /* OCVCudaSURF.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC5921E30013C002EA7A1 /* OCVCudaSURF.h */; };\n\t\t383BC5951E30013C002EA7A1 /* OCVCudaSURF.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC5931E30013C002EA7A1 /* OCVCudaSURF.m */; };\n\t\t383BC5981E300142002EA7A1 /* OCVDAISY.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC5961E300142002EA7A1 /* OCVDAISY.h */; };\n\t\t383BC5991E300142002EA7A1 /* OCVDAISY.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC5971E300142002EA7A1 /* OCVDAISY.m */; };\n\t\t383BC59C1E300149002EA7A1 /* OCVFreak.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC59A1E300149002EA7A1 /* OCVFreak.h */; };\n\t\t383BC59D1E300149002EA7A1 /* OCVFreak.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC59B1E300149002EA7A1 /* OCVFreak.m */; };\n\t\t383BC5A01E300150002EA7A1 /* OCVLATCH.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC59E1E300150002EA7A1 /* OCVLATCH.h */; };\n\t\t383BC5A11E300150002EA7A1 /* OCVLATCH.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC59F1E300150002EA7A1 /* OCVLATCH.m */; };\n\t\t383BC5A41E300157002EA7A1 /* OCVLUCID.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC5A21E300157002EA7A1 /* OCVLUCID.h */; };\n\t\t383BC5A51E300157002EA7A1 /* OCVLUCID.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC5A31E300157002EA7A1 /* OCVLUCID.m */; };\n\t\t383BC5A81E30015E002EA7A1 /* OCVSIFT.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC5A61E30015E002EA7A1 /* OCVSIFT.h */; };\n\t\t383BC5A91E30015E002EA7A1 /* OCVSIFT.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC5A71E30015E002EA7A1 /* OCVSIFT.m */; };\n\t\t383BC5AC1E300165002EA7A1 /* OCVStarDetector.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC5AA1E300165002EA7A1 /* OCVStarDetector.h */; };\n\t\t383BC5AD1E300165002EA7A1 /* OCVStarDetector.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC5AB1E300165002EA7A1 /* OCVStarDetector.m */; };\n\t\t383BC5B01E30016B002EA7A1 /* OCVSURF.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC5AE1E30016B002EA7A1 /* OCVSURF.h */; };\n\t\t383BC5B11E30016B002EA7A1 /* OCVSURF.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC5AF1E30016B002EA7A1 /* OCVSURF.m */; };\n\t\t383BC5B41E30017C002EA7A1 /* OCVDTFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC5B21E30017C002EA7A1 /* OCVDTFilter.h */; };\n\t\t383BC5B51E30017C002EA7A1 /* OCVDTFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC5B31E30017C002EA7A1 /* OCVDTFilter.m */; };\n\t\t383BC5B81E30018A002EA7A1 /* OCVXPhoto.h in Headers */ = {isa = PBXBuildFile; fileRef = 383BC5B61E30018A002EA7A1 /* OCVXPhoto.h */; };\n\t\t383BC5B91E30018A002EA7A1 /* OCVXPhoto.m in Sources */ = {isa = PBXBuildFile; fileRef = 383BC5B71E30018A002EA7A1 /* OCVXPhoto.m */; };\n\t\t3848D3371E3F973A00379F4F /* opencv2.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 381F15081E2AA1D50072F870 /* opencv2.framework */; };\n\t\t3848D3381E3F973A00379F4F /* opencv2.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 381F15081E2AA1D50072F870 /* opencv2.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };\n\t\t386F2B821E3524D300320AEB /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 386F2B7F1E3524D300320AEB /* CoreGraphics.framework */; };\n\t\t386F2B831E3524D300320AEB /* CoreVideo.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 386F2B801E3524D300320AEB /* CoreVideo.framework */; };\n\t\t386F2B841E3524D300320AEB /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 386F2B811E3524D300320AEB /* UIKit.framework */; };\n\t\t386F2B871E352A4800320AEB /* OCVPointerObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 386F2B851E352A4800320AEB /* OCVPointerObject.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t386F2B881E352A4800320AEB /* OCVPointerObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 386F2B861E352A4800320AEB /* OCVPointerObject.m */; };\n\t\t388B229421863CF000F24D45 /* LegoSwiftCV.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 388B228B21863CF000F24D45 /* LegoSwiftCV.framework */; };\n\t\t388B229B21863CF000F24D45 /* LegoSwiftCVTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 388B229A21863CF000F24D45 /* LegoSwiftCVTests.swift */; };\n\t\t388B229D21863CF000F24D45 /* LegoSwiftCV.h in Headers */ = {isa = PBXBuildFile; fileRef = 388B228D21863CF000F24D45 /* LegoSwiftCV.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t388B22A021863CF000F24D45 /* LegoSwiftCV.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 388B228B21863CF000F24D45 /* LegoSwiftCV.framework */; };\n\t\t388B22A121863CF000F24D45 /* LegoSwiftCV.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 388B228B21863CF000F24D45 /* LegoSwiftCV.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };\n\t\t388B22A821863E0200F24D45 /* Matrix.swift in Sources */ = {isa = PBXBuildFile; fileRef = 388B228421863CB500F24D45 /* Matrix.swift */; };\n\t\t389718691E36175E00CB02B4 /* LiveCameraVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 389718681E36175E00CB02B4 /* LiveCameraVC.swift */; };\n\t\t3897186B1E36176B00CB02B4 /* FaceRecognitionVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3897186A1E36176B00CB02B4 /* FaceRecognitionVC.swift */; };\n\t\t3897186D1E3618B200CB02B4 /* FaceRecognizer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3897186C1E3618B200CB02B4 /* FaceRecognizer.swift */; };\n\t\t3897186F1E3618BC00CB02B4 /* FaceDetector.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3897186E1E3618BC00CB02B4 /* FaceDetector.swift */; };\n\t\t389718771E361ECC00CB02B4 /* OCVVideoCamera.h in Headers */ = {isa = PBXBuildFile; fileRef = 389718751E361ECC00CB02B4 /* OCVVideoCamera.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t389718781E361ECC00CB02B4 /* OCVVideoCamera.mm in Sources */ = {isa = PBXBuildFile; fileRef = 389718761E361ECC00CB02B4 /* OCVVideoCamera.mm */; };\n\t\t3897187B1E361F0600CB02B4 /* OCVPhotoCamera.h in Headers */ = {isa = PBXBuildFile; fileRef = 389718791E361F0600CB02B4 /* OCVPhotoCamera.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t3897187C1E361F0600CB02B4 /* OCVPhotoCamera.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3897187A1E361F0600CB02B4 /* OCVPhotoCamera.mm */; };\n\t\t3897187F1E3621D000CB02B4 /* OCVCamera.h in Headers */ = {isa = PBXBuildFile; fileRef = 3897187D1E3621D000CB02B4 /* OCVCamera.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t389718801E3621D000CB02B4 /* OCVCamera.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3897187E1E3621D000CB02B4 /* OCVCamera.mm */; };\n\t\t389718851E36263A00CB02B4 /* OCVReferenceObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 389718831E36263A00CB02B4 /* OCVReferenceObject.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t389718861E36263A00CB02B4 /* OCVReferenceObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 389718841E36263A00CB02B4 /* OCVReferenceObject.m */; };\n\t\t389718871E3627D100CB02B4 /* OCVCamera+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 389718811E36250800CB02B4 /* OCVCamera+Private.h */; settings = {ATTRIBUTES = (Private, ); }; };\n\t\t389718891E362B8F00CB02B4 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 389718881E362B8F00CB02B4 /* AVFoundation.framework */; };\n\t\t3897188B1E362B9700CB02B4 /* CoreMedia.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3897188A1E362B9700CB02B4 /* CoreMedia.framework */; };\n\t\t3897188D1E36439B00CB02B4 /* AssetsLibrary.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3897188C1E36439B00CB02B4 /* AssetsLibrary.framework */; };\n\t\t3897188F1E3643A100CB02B4 /* Accelerate.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3897188E1E3643A100CB02B4 /* Accelerate.framework */; };\n\t\t389718911E3643A900CB02B4 /* CoreImage.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 389718901E3643A900CB02B4 /* CoreImage.framework */; };\n\t\t389718931E3643B600CB02B4 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 389718921E3643B600CB02B4 /* QuartzCore.framework */; };\n\t\t389871121E6F311400020CFB /* OCVFileStorage.h in Headers */ = {isa = PBXBuildFile; fileRef = 389871101E6F311400020CFB /* OCVFileStorage.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t389871131E6F311400020CFB /* OCVFileStorage.mm in Sources */ = {isa = PBXBuildFile; fileRef = 389871111E6F311400020CFB /* OCVFileStorage.mm */; };\n\t\t389871161E6F315A00020CFB /* OCVFileNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 389871141E6F315A00020CFB /* OCVFileNode.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t389871171E6F315A00020CFB /* OCVFileNode.mm in Sources */ = {isa = PBXBuildFile; fileRef = 389871151E6F315A00020CFB /* OCVFileNode.mm */; };\n\t\t389871191E6F32BE00020CFB /* OCVPersistence.h in Headers */ = {isa = PBXBuildFile; fileRef = 389871181E6F32BE00020CFB /* OCVPersistence.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t3898711D1E6F3CB900020CFB /* OCVFileStorageFormatDescriptor.h in Headers */ = {isa = PBXBuildFile; fileRef = 3898711B1E6F3CB900020CFB /* OCVFileStorageFormatDescriptor.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t3898711E1E6F3CB900020CFB /* OCVFileStorageFormatDescriptor.m in Sources */ = {isa = PBXBuildFile; fileRef = 3898711C1E6F3CB900020CFB /* OCVFileStorageFormatDescriptor.m */; };\n\t\t38B4D4BA1E2AA01F008AAAB0 /* LegoCV.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 38B4D4B01E2AA01F008AAAB0 /* LegoCV.framework */; };\n\t\t38B4D4BF1E2AA01F008AAAB0 /* LegoCVTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38B4D4BE1E2AA01F008AAAB0 /* LegoCVTests.swift */; };\n\t\t38B4D4C11E2AA01F008AAAB0 /* LegoCV.h in Headers */ = {isa = PBXBuildFile; fileRef = 38B4D4B31E2AA01F008AAAB0 /* LegoCV.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t38B4D4D31E2AA110008AAAB0 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38B4D4D21E2AA110008AAAB0 /* AppDelegate.swift */; };\n\t\t38B4D4D81E2AA110008AAAB0 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 38B4D4D61E2AA110008AAAB0 /* Main.storyboard */; };\n\t\t38B4D4DA1E2AA111008AAAB0 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 38B4D4D91E2AA111008AAAB0 /* Assets.xcassets */; };\n\t\t38B4D4DD1E2AA111008AAAB0 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 38B4D4DB1E2AA111008AAAB0 /* LaunchScreen.storyboard */; };\n\t\t38C0D90E1E7D6D2000246963 /* OCVImageTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 38C0D90D1E7D6D2000246963 /* OCVImageTypes.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t38C0D9111E7D735F00246963 /* OCVGeneralizedHoughBallard.h in Headers */ = {isa = PBXBuildFile; fileRef = 38C0D90F1E7D735F00246963 /* OCVGeneralizedHoughBallard.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t38C0D9121E7D735F00246963 /* OCVGeneralizedHoughBallard.m in Sources */ = {isa = PBXBuildFile; fileRef = 38C0D9101E7D735F00246963 /* OCVGeneralizedHoughBallard.m */; };\n\t\t38C0D9151E7D73D100246963 /* OCVGeneralizedHough.h in Headers */ = {isa = PBXBuildFile; fileRef = 38C0D9131E7D73D100246963 /* OCVGeneralizedHough.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t38C0D9161E7D73D100246963 /* OCVGeneralizedHough.m in Sources */ = {isa = PBXBuildFile; fileRef = 38C0D9141E7D73D100246963 /* OCVGeneralizedHough.m */; };\n\t\t38C0D9181E7D747700246963 /* OCVArrayables.h in Headers */ = {isa = PBXBuildFile; fileRef = 38C0D9171E7D747700246963 /* OCVArrayables.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t38C0D91B1E7D764200246963 /* OCVGeneralizedHoughGuil.h in Headers */ = {isa = PBXBuildFile; fileRef = 38C0D9191E7D764200246963 /* OCVGeneralizedHoughGuil.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t38C0D91C1E7D764200246963 /* OCVGeneralizedHoughGuil.m in Sources */ = {isa = PBXBuildFile; fileRef = 38C0D91A1E7D764200246963 /* OCVGeneralizedHoughGuil.m */; };\n\t\t38C0D91F1E7D771300246963 /* OCVContrastLimitedAdaptiveHistogramEqualization.h in Headers */ = {isa = PBXBuildFile; fileRef = 38C0D91D1E7D771300246963 /* OCVContrastLimitedAdaptiveHistogramEqualization.h */; };\n\t\t38C0D9201E7D771300246963 /* OCVContrastLimitedAdaptiveHistogramEqualization.m in Sources */ = {isa = PBXBuildFile; fileRef = 38C0D91E1E7D771300246963 /* OCVContrastLimitedAdaptiveHistogramEqualization.m */; };\n\t\t38C0D9231E7D77B500246963 /* OCVSubdiv2D.h in Headers */ = {isa = PBXBuildFile; fileRef = 38C0D9211E7D77B500246963 /* OCVSubdiv2D.h */; };\n\t\t38C0D9241E7D77B500246963 /* OCVSubdiv2D.m in Sources */ = {isa = PBXBuildFile; fileRef = 38C0D9221E7D77B500246963 /* OCVSubdiv2D.m */; };\n\t\t38C0D92B1E7D7EAC00246963 /* OCVLineSegmentDetector.h in Headers */ = {isa = PBXBuildFile; fileRef = 38C0D9291E7D7EAC00246963 /* OCVLineSegmentDetector.h */; };\n\t\t38C0D92C1E7D7EAC00246963 /* OCVLineSegmentDetector.m in Sources */ = {isa = PBXBuildFile; fileRef = 38C0D92A1E7D7EAC00246963 /* OCVLineSegmentDetector.m */; };\n\t\t38C0D9301E7D8D8200246963 /* OCVBaseCascadeClassifier.h in Headers */ = {isa = PBXBuildFile; fileRef = 38C0D92E1E7D8D8200246963 /* OCVBaseCascadeClassifier.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t38C0D9311E7D8D8200246963 /* OCVBaseCascadeClassifier.m in Sources */ = {isa = PBXBuildFile; fileRef = 38C0D92F1E7D8D8200246963 /* OCVBaseCascadeClassifier.m */; };\n\t\t38C0D9341E7D8EEC00246963 /* OCVCascadeClassifierResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 38C0D9321E7D8EEC00246963 /* OCVCascadeClassifierResult.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t38C0D9351E7D8EEC00246963 /* OCVCascadeClassifierResult.m in Sources */ = {isa = PBXBuildFile; fileRef = 38C0D9331E7D8EEC00246963 /* OCVCascadeClassifierResult.m */; };\n\t\t38C0D9381E7D8FFC00246963 /* OCVCascadeClassifierOptions.h in Headers */ = {isa = PBXBuildFile; fileRef = 38C0D9361E7D8FFC00246963 /* OCVCascadeClassifierOptions.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t38C0D9391E7D8FFC00246963 /* OCVCascadeClassifierOptions.m in Sources */ = {isa = PBXBuildFile; fileRef = 38C0D9371E7D8FFC00246963 /* OCVCascadeClassifierOptions.m */; };\n\t\t38C0D93A1E7D93D000246963 /* OCVSerializable.h in Headers */ = {isa = PBXBuildFile; fileRef = 3898711A1E6F393F00020CFB /* OCVSerializable.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t38C5B0C222948817009D2D68 /* LegoCV.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 38B4D4B01E2AA01F008AAAB0 /* LegoCV.framework */; };\n\t\t38DB13EC1E366E0100822472 /* OCVVideo.h in Headers */ = {isa = PBXBuildFile; fileRef = 38DB13EB1E366E0100822472 /* OCVVideo.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t38DB13EE1E366FE700822472 /* OCVCore.h in Headers */ = {isa = PBXBuildFile; fileRef = 38DB13ED1E366FD500822472 /* OCVCore.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t38E3EA211E6E305C00BCC097 /* OCVImageProcessing.h in Headers */ = {isa = PBXBuildFile; fileRef = 38E3EA201E6E305C00BCC097 /* OCVImageProcessing.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t67E640A971036C2B4E41E3D9 /* OCVPCA.h in Headers */ = {isa = PBXBuildFile; fileRef = 67E64CCA2E906D9DCCA4F777 /* OCVPCA.h */; };\n\t\t67E6417055654E2DD6FD5D3A /* OCVInputArray+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 67E648DFC66EAC59D4B600A3 /* OCVInputArray+Private.h */; settings = {ATTRIBUTES = (Private, ); }; };\n\t\t67E641A0E84C3661DCAE643F /* OCVSVD.mm in Sources */ = {isa = PBXBuildFile; fileRef = 67E6448BB8EFC6BEBF51BA3C /* OCVSVD.mm */; };\n\t\t67E641AE46ACCCCFFFCE3621 /* OCVPoint.h in Headers */ = {isa = PBXBuildFile; fileRef = 67E643ED8E6AE25117DB09C6 /* OCVPoint.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t67E641CE9F2AC16067D63172 /* OCVComplex.m in Sources */ = {isa = PBXBuildFile; fileRef = 67E64A15D96D2EC6DAB44E24 /* OCVComplex.m */; };\n\t\t67E6424CB9C3609DCBB63C45 /* OCVTermCriteria.h in Headers */ = {isa = PBXBuildFile; fileRef = 67E64D0DAEBA852A31A6211E /* OCVTermCriteria.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t67E642627C4A182CCBCA3A46 /* OCVOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 67E6438675C6C73B77B08385 /* OCVOperation.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t67E6426C3111E627F15578A5 /* OCVMat.h in Headers */ = {isa = PBXBuildFile; fileRef = 67E649395264F917D36DA5F8 /* OCVMat.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t67E642A4F9BE94B327C25F84 /* OCVUMat.h in Headers */ = {isa = PBXBuildFile; fileRef = 67E64F947B816F412C783679 /* OCVUMat.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t67E642E40A844657959DAB84 /* OCVOperation+Bitwise.mm in Sources */ = {isa = PBXBuildFile; fileRef = 67E6425526F810208AA6B50E /* OCVOperation+Bitwise.mm */; };\n\t\t67E6430460F88D3DB9A262A1 /* OCVRect+Private.mm in Sources */ = {isa = PBXBuildFile; fileRef = 67E641E5AE5841744443558D /* OCVRect+Private.mm */; };\n\t\t67E6434338BC40333D7F777C /* OCVInputArray.mm in Sources */ = {isa = PBXBuildFile; fileRef = 67E64CDCF01D111E40407448 /* OCVInputArray.mm */; };\n\t\t67E6436EE5D768B6C32F3C87 /* OCVTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 67E64459E0C63EA4D9627050 /* OCVTypes.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t67E6437FD719EFAD3A84D511 /* OCVMatDataAllocator.h in Headers */ = {isa = PBXBuildFile; fileRef = 67E642E169EC045927288E82 /* OCVMatDataAllocator.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t67E6438494C8E62823A6221F /* OCVMatExpr.mm in Sources */ = {isa = PBXBuildFile; fileRef = 67E64A96432DA475855E0594 /* OCVMatExpr.mm */; };\n\t\t67E643A4327EFC207C923080 /* OCVInputArray.h in Headers */ = {isa = PBXBuildFile; fileRef = 67E6414DA192C455EE9F6374 /* OCVInputArray.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t67E643CAD65DD5E9C86957D0 /* OCVOutputArray.mm in Sources */ = {isa = PBXBuildFile; fileRef = 67E6434323FF82193E9898C0 /* OCVOutputArray.mm */; };\n\t\t67E643F98D5706485C3DAA9F /* OCVOutputArrayable.h in Headers */ = {isa = PBXBuildFile; fileRef = 67E6475B436646A9C998F132 /* OCVOutputArrayable.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t67E643FC3D2EF70F92993806 /* OCVFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = 67E64B59E8EBB4139E44EF18 /* OCVFormatter.m */; };\n\t\t67E6445E927F1CC3D66BE6CA /* OCVMat.mm in Sources */ = {isa = PBXBuildFile; fileRef = 67E641FBE65950718BDBAC73 /* OCVMat.mm */; };\n\t\t67E6448CC376B69531E717EC /* OCVPoint+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 67E6479DFFDCE9D7CDD430C6 /* OCVPoint+Private.h */; };\n\t\t67E644E39302CDD38472F074 /* OCVOperation+Transform.h in Headers */ = {isa = PBXBuildFile; fileRef = 67E64BC77E241D37FD032064 /* OCVOperation+Transform.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t67E6451D7988CBE476CE428C /* OCVImageOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 67E6439A810BAF9EB4F3D2EB /* OCVImageOperation.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t67E6453125423AC48F3D4C54 /* OCVCascadeClassifier.mm in Sources */ = {isa = PBXBuildFile; fileRef = 67E6468D1AAEA71F119F0D71 /* OCVCascadeClassifier.mm */; };\n\t\t67E6456620CCF41EBB3210AD /* OCVLDA.h in Headers */ = {isa = PBXBuildFile; fileRef = 67E64FA8CD286E50EC4C0D24 /* OCVLDA.h */; };\n\t\t67E645A832B070AB94DE46CF /* OCVPCA.mm in Sources */ = {isa = PBXBuildFile; fileRef = 67E64998F2833EED2BBE6864 /* OCVPCA.mm */; };\n\t\t67E6462097C843412681563A /* OCVScalar.h in Headers */ = {isa = PBXBuildFile; fileRef = 67E644F65A43C7F826E18FD8 /* OCVScalar.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t67E646925E8CB062C6A6B51D /* OCVRect+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 67E6422A492670AF3DC695D8 /* OCVRect+Private.h */; settings = {ATTRIBUTES = (Private, ); }; };\n\t\t67E646DDD3DE39D2D7C8D936 /* OCVOperation+Transform.mm in Sources */ = {isa = PBXBuildFile; fileRef = 67E644AF37D67E1163B102A4 /* OCVOperation+Transform.mm */; };\n\t\t67E6470893E985806C173E68 /* OCVRandomGenerator.mm in Sources */ = {isa = PBXBuildFile; fileRef = 67E6496A76480256E3FB4A07 /* OCVRandomGenerator.mm */; };\n\t\t67E6471FA02CAAF362060F84 /* OCVImage.m in Sources */ = {isa = PBXBuildFile; fileRef = 67E649531633D7EAAED7D919 /* OCVImage.m */; };\n\t\t67E6473F3C34532A46C0D9EC /* OCVOutputArray+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 67E6477274FCBEE3CD09E268 /* OCVOutputArray+Private.h */; };\n\t\t67E6476EC8885C15EA428F69 /* OCVComplex.h in Headers */ = {isa = PBXBuildFile; fileRef = 67E648666F32797BEEC3B6EA /* OCVComplex.h */; };\n\t\t67E64776786FCF3C6717E47E /* OCVScalar.m in Sources */ = {isa = PBXBuildFile; fileRef = 67E640401947EB92C031F274 /* OCVScalar.m */; };\n\t\t67E6478BAEA8F246134B41AB /* OCVMinimumMaximum.h in Headers */ = {isa = PBXBuildFile; fileRef = 67E644438826EEE78DA5FA73 /* OCVMinimumMaximum.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t67E647A36EE5D1F16353A215 /* OCVRect.m in Sources */ = {isa = PBXBuildFile; fileRef = 67E64998581748A53D9A7499 /* OCVRect.m */; };\n\t\t67E647D10B4E166E041A9B8D /* OCVAlgorithm.m in Sources */ = {isa = PBXBuildFile; fileRef = 67E6440F9430BD2FE92FB3E3 /* OCVAlgorithm.m */; };\n\t\t67E647D322F01061FBD19528 /* OCVOperation.mm in Sources */ = {isa = PBXBuildFile; fileRef = 67E64B051241494FBEEEE346 /* OCVOperation.mm */; };\n\t\t67E6483A6D84B9ED9B5D2A4A /* OCVCascadeClassifier.h in Headers */ = {isa = PBXBuildFile; fileRef = 67E64D6AF68715735A06CFEA /* OCVCascadeClassifier.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t67E648675A5F8621E5FD80C2 /* OCVAlgorithm.h in Headers */ = {isa = PBXBuildFile; fileRef = 67E6446098E944BFA71C69A9 /* OCVAlgorithm.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t67E648CE9C63C53ACF371407 /* OCVColorConversionType.h in Headers */ = {isa = PBXBuildFile; fileRef = 67E64D2A87A5D1389D935DF9 /* OCVColorConversionType.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t67E648D0AA7CBC940CD83B4C /* OCVLDA.mm in Sources */ = {isa = PBXBuildFile; fileRef = 67E64A5773A5543773312E0B /* OCVLDA.mm */; };\n\t\t67E649516B336D32CF0E6059 /* OCVSVD.h in Headers */ = {isa = PBXBuildFile; fileRef = 67E6498671B0BA4198A082B7 /* OCVSVD.h */; };\n\t\t67E649ED77AF2C63CB75F620 /* OCVInputOutputArrayable.h in Headers */ = {isa = PBXBuildFile; fileRef = 67E64E8EDB850ADB26F646D7 /* OCVInputOutputArrayable.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t67E64A019431C37CD2E82210 /* OCVImage.h in Headers */ = {isa = PBXBuildFile; fileRef = 67E64391B0744DE769F98B1C /* OCVImage.h */; };\n\t\t67E64A0C4B4C00A32A808C87 /* OCVInputArrayable.h in Headers */ = {isa = PBXBuildFile; fileRef = 67E641C573728BB0D14DBD41 /* OCVInputArrayable.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t67E64A11B0A406C9C9029672 /* OCVEdges.h in Headers */ = {isa = PBXBuildFile; fileRef = 67E642DCCBA8EF4A5E2348FB /* OCVEdges.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t67E64A1FCCE0E9859B9A3ED5 /* OCVMatExpr.h in Headers */ = {isa = PBXBuildFile; fileRef = 67E64F8DA13AAEAD6BB69D81 /* OCVMatExpr.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t67E64A5FFF74B76259911897 /* OCVFormatter.h in Headers */ = {isa = PBXBuildFile; fileRef = 67E64557F96063D5CEA27BD8 /* OCVFormatter.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t67E64AB04DF01AC5F2DC4632 /* OCVTermCriteria.m in Sources */ = {isa = PBXBuildFile; fileRef = 67E648D9189DEE59AAC80A60 /* OCVTermCriteria.m */; };\n\t\t67E64ACB7AC9146ABC81AF5C /* OCVInputOutputArray.mm in Sources */ = {isa = PBXBuildFile; fileRef = 67E64B302058F4898CAE4A1C /* OCVInputOutputArray.mm */; };\n\t\t67E64B239EDCF0B841EC9CC1 /* OCVMatDataAllocator+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 67E64C22D6FBDAD91BACC516 /* OCVMatDataAllocator+Private.h */; };\n\t\t67E64B41EB82AA57E982C27A /* OCVInputOutputArray.h in Headers */ = {isa = PBXBuildFile; fileRef = 67E6416E34EDDC521F465DDE /* OCVInputOutputArray.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t67E64B5D0527B760FE0161D7 /* OCVMinimumMaximum.m in Sources */ = {isa = PBXBuildFile; fileRef = 67E64B35099EBE43C5F9A1C2 /* OCVMinimumMaximum.m */; };\n\t\t67E64B60D2C9C331E963C1B0 /* OCVVector.h in Headers */ = {isa = PBXBuildFile; fileRef = 67E64B2FA4855E136039527B /* OCVVector.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t67E64B717650D498E650CC73 /* OCVRandomGenerator.h in Headers */ = {isa = PBXBuildFile; fileRef = 67E643FED267103AF823F80A /* OCVRandomGenerator.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t67E64B7E0FDC5B551EF68970 /* OCVMatDataAllocator.mm in Sources */ = {isa = PBXBuildFile; fileRef = 67E649DB3C2A73D13D8B1B5E /* OCVMatDataAllocator.mm */; };\n\t\t67E64C1DB7DBFA0C5DA2C9BE /* OCVRect.h in Headers */ = {isa = PBXBuildFile; fileRef = 67E64961AAA53DCD08D796FF /* OCVRect.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t67E64C3AD9D201BE55ACDD51 /* OCVPoint+Private.mm in Sources */ = {isa = PBXBuildFile; fileRef = 67E64844505F01302289F309 /* OCVPoint+Private.mm */; };\n\t\t67E64C56148755FEAD662D52 /* OCVSize+Private.mm in Sources */ = {isa = PBXBuildFile; fileRef = 67E64C801A725FA1FE883678 /* OCVSize+Private.mm */; };\n\t\t67E64C955BC995A800BE238A /* OCVOperation+Bitwise.h in Headers */ = {isa = PBXBuildFile; fileRef = 67E645D09E183D239A916DD8 /* OCVOperation+Bitwise.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t67E64C9B5A91DA7042DD5BEC /* OCVOutputArray.h in Headers */ = {isa = PBXBuildFile; fileRef = 67E642642A6333F29DD824AA /* OCVOutputArray.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t67E64D8A7F0465ED26226CDE /* OCVSize+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 67E64FDA4612629A3D339C5D /* OCVSize+Private.h */; };\n\t\t67E64DD6519A59AAABD4B224 /* OCVUMat.m in Sources */ = {isa = PBXBuildFile; fileRef = 67E6472C6307D5835B1D6C2B /* OCVUMat.m */; };\n\t\t67E64E06B0FC8DB79DF8354F /* OCVImageOperation.mm in Sources */ = {isa = PBXBuildFile; fileRef = 67E64A456D91C276BAF01CDD /* OCVImageOperation.mm */; };\n\t\t67E64E27B72E603F164AD432 /* OCVVector.m in Sources */ = {isa = PBXBuildFile; fileRef = 67E64A6EE9A0528CA003C494 /* OCVVector.m */; };\n\t\t67E64E7DA7437D4DEA3E1191 /* OCVSize.h in Headers */ = {isa = PBXBuildFile; fileRef = 67E64A3342D4BBE76713F88D /* OCVSize.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t67E64EDCC12B0E85158EED46 /* OCVInterpolationType.h in Headers */ = {isa = PBXBuildFile; fileRef = 67E645697CBF982455006B11 /* OCVInterpolationType.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t67E64F5B14D37BB167F88E90 /* OCVGeometry.h in Headers */ = {isa = PBXBuildFile; fileRef = 67E648280FA290221C92DE01 /* OCVGeometry.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t67E64F822344F94C3B4967C8 /* OCVInputOutputArray+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 67E6438D1CE78C8D148D0DE8 /* OCVInputOutputArray+Private.h */; };\n/* End PBXBuildFile section */\n\n/* Begin PBXContainerItemProxy section */\n\t\t381F150D1E2AA22A0072F870 /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = 38B4D4A71E2AA01F008AAAB0 /* Project object */;\n\t\t\tproxyType = 1;\n\t\t\tremoteGlobalIDString = 38B4D4AF1E2AA01F008AAAB0;\n\t\t\tremoteInfo = LegoCV;\n\t\t};\n\t\t388B229521863CF000F24D45 /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = 38B4D4A71E2AA01F008AAAB0 /* Project object */;\n\t\t\tproxyType = 1;\n\t\t\tremoteGlobalIDString = 388B228A21863CF000F24D45;\n\t\t\tremoteInfo = LegoSwiftCV;\n\t\t};\n\t\t388B229721863CF000F24D45 /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = 38B4D4A71E2AA01F008AAAB0 /* Project object */;\n\t\t\tproxyType = 1;\n\t\t\tremoteGlobalIDString = 38B4D4CF1E2AA110008AAAB0;\n\t\t\tremoteInfo = FaceDetection;\n\t\t};\n\t\t388B229E21863CF000F24D45 /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = 38B4D4A71E2AA01F008AAAB0 /* Project object */;\n\t\t\tproxyType = 1;\n\t\t\tremoteGlobalIDString = 388B228A21863CF000F24D45;\n\t\t\tremoteInfo = LegoSwiftCV;\n\t\t};\n\t\t38B4D4BB1E2AA01F008AAAB0 /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = 38B4D4A71E2AA01F008AAAB0 /* Project object */;\n\t\t\tproxyType = 1;\n\t\t\tremoteGlobalIDString = 38B4D4AF1E2AA01F008AAAB0;\n\t\t\tremoteInfo = LegoCV;\n\t\t};\n\t\t38C5B0C322948865009D2D68 /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = 38B4D4A71E2AA01F008AAAB0 /* Project object */;\n\t\t\tproxyType = 1;\n\t\t\tremoteGlobalIDString = 38B4D4CF1E2AA110008AAAB0;\n\t\t\tremoteInfo = FaceDetection;\n\t\t};\n/* End PBXContainerItemProxy section */\n\n/* Begin PBXCopyFilesBuildPhase section */\n\t\t381F150F1E2AA22A0072F870 /* Embed Frameworks */ = {\n\t\t\tisa = PBXCopyFilesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tdstPath = \"\";\n\t\t\tdstSubfolderSpec = 10;\n\t\t\tfiles = (\n\t\t\t\t388B22A121863CF000F24D45 /* LegoSwiftCV.framework in Embed Frameworks */,\n\t\t\t\t3848D3381E3F973A00379F4F /* opencv2.framework in Embed Frameworks */,\n\t\t\t\t381F150C1E2AA22A0072F870 /* LegoCV.framework in Embed Frameworks */,\n\t\t\t);\n\t\t\tname = \"Embed Frameworks\";\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXCopyFilesBuildPhase section */\n\n/* Begin PBXFileReference section */\n\t\t381F15081E2AA1D50072F870 /* opencv2.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = opencv2.framework; path = ../ios/opencv2.framework; sourceTree = \"<group>\"; };\n\t\t383BC40E1E2FF974002EA7A1 /* OCVObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVObject.h; sourceTree = \"<group>\"; };\n\t\t383BC40F1E2FF974002EA7A1 /* OCVObject.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVObject.m; sourceTree = \"<group>\"; };\n\t\t383BC4161E2FFAC2002EA7A1 /* OCVBlob.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVBlob.h; sourceTree = \"<group>\"; };\n\t\t383BC4171E2FFAC2002EA7A1 /* OCVBlob.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVBlob.m; sourceTree = \"<group>\"; };\n\t\t383BC41A1E2FFAD4002EA7A1 /* OCVGPUMat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVGPUMat.h; sourceTree = \"<group>\"; };\n\t\t383BC41B1E2FFAD4002EA7A1 /* OCVGPUMat.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVGPUMat.m; sourceTree = \"<group>\"; };\n\t\t383BC41E1E2FFB1D002EA7A1 /* OCVStorageOperationType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVStorageOperationType.h; sourceTree = \"<group>\"; };\n\t\t383BC41F1E2FFB1D002EA7A1 /* OCVStorageOperationType.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVStorageOperationType.m; sourceTree = \"<group>\"; };\n\t\t383BC4221E2FFB32002EA7A1 /* OCVCharucoBoard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVCharucoBoard.h; sourceTree = \"<group>\"; };\n\t\t383BC4231E2FFB32002EA7A1 /* OCVCharucoBoard.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVCharucoBoard.m; sourceTree = \"<group>\"; };\n\t\t383BC4261E2FFB47002EA7A1 /* OCVBackgroundSubtractorGMG.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVBackgroundSubtractorGMG.h; sourceTree = \"<group>\"; };\n\t\t383BC4271E2FFB47002EA7A1 /* OCVBackgroundSubtractorGMG.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVBackgroundSubtractorGMG.m; sourceTree = \"<group>\"; };\n\t\t383BC42A1E2FFB56002EA7A1 /* OCVBackgroundSubtractorMOG.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVBackgroundSubtractorMOG.h; sourceTree = \"<group>\"; };\n\t\t383BC42B1E2FFB56002EA7A1 /* OCVBackgroundSubtractorMOG.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVBackgroundSubtractorMOG.m; sourceTree = \"<group>\"; };\n\t\t383BC42E1E2FFB78002EA7A1 /* OCVNet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVNet.h; sourceTree = \"<group>\"; };\n\t\t383BC42F1E2FFB78002EA7A1 /* OCVNet.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVNet.m; sourceTree = \"<group>\"; };\n\t\t383BC4321E2FFB89002EA7A1 /* OCVImporter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVImporter.h; sourceTree = \"<group>\"; };\n\t\t383BC4331E2FFB89002EA7A1 /* OCVImporter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVImporter.m; sourceTree = \"<group>\"; };\n\t\t383BC4361E2FFB9A002EA7A1 /* OCVEigenFaceRecognizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVEigenFaceRecognizer.h; sourceTree = \"<group>\"; };\n\t\t383BC4371E2FFB9A002EA7A1 /* OCVEigenFaceRecognizer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVEigenFaceRecognizer.m; sourceTree = \"<group>\"; };\n\t\t383BC43A1E2FFBA6002EA7A1 /* OCVFaceRecognizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVFaceRecognizer.h; sourceTree = \"<group>\"; };\n\t\t383BC43B1E2FFBA6002EA7A1 /* OCVFaceRecognizer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVFaceRecognizer.m; sourceTree = \"<group>\"; };\n\t\t383BC43E1E2FFBB3002EA7A1 /* OCVFisherFaceRecognizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVFisherFaceRecognizer.h; sourceTree = \"<group>\"; };\n\t\t383BC43F1E2FFBB3002EA7A1 /* OCVFisherFaceRecognizer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVFisherFaceRecognizer.m; sourceTree = \"<group>\"; };\n\t\t383BC4421E2FFBBF002EA7A1 /* OCVLBPHFaceRecognizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVLBPHFaceRecognizer.h; sourceTree = \"<group>\"; };\n\t\t383BC4431E2FFBBF002EA7A1 /* OCVLBPHFaceRecognizer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVLBPHFaceRecognizer.m; sourceTree = \"<group>\"; };\n\t\t383BC4461E2FFBD5002EA7A1 /* OCVFeature2D.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVFeature2D.h; sourceTree = \"<group>\"; };\n\t\t383BC4471E2FFBD5002EA7A1 /* OCVFeature2D.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVFeature2D.m; sourceTree = \"<group>\"; };\n\t\t383BC44A1E2FFBE4002EA7A1 /* OCVIndex.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVIndex.h; sourceTree = \"<group>\"; };\n\t\t383BC44B1E2FFBE4002EA7A1 /* OCVIndex.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVIndex.m; sourceTree = \"<group>\"; };\n\t\t383BC4521E2FFC18002EA7A1 /* OCVGeodeticCoordinate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVGeodeticCoordinate.h; sourceTree = \"<group>\"; };\n\t\t383BC4531E2FFC18002EA7A1 /* OCVGeodeticCoordinate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVGeodeticCoordinate.m; sourceTree = \"<group>\"; };\n\t\t383BC4561E2FFC2E002EA7A1 /* OCVFuzzyInvoke.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVFuzzyInvoke.h; sourceTree = \"<group>\"; };\n\t\t383BC4571E2FFC2E002EA7A1 /* OCVFuzzyInvoke.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVFuzzyInvoke.m; sourceTree = \"<group>\"; };\n\t\t383BC45A1E2FFC5C002EA7A1 /* OCVLSDDetector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVLSDDetector.h; sourceTree = \"<group>\"; };\n\t\t383BC45B1E2FFC5C002EA7A1 /* OCVLSDDetector.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVLSDDetector.m; sourceTree = \"<group>\"; };\n\t\t383BC45E1E2FFC6F002EA7A1 /* OCVBoost.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVBoost.h; sourceTree = \"<group>\"; };\n\t\t383BC45F1E2FFC6F002EA7A1 /* OCVBoost.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVBoost.m; sourceTree = \"<group>\"; };\n\t\t383BC4621E2FFC7B002EA7A1 /* OCVANNMLP.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVANNMLP.h; sourceTree = \"<group>\"; };\n\t\t383BC4631E2FFC7B002EA7A1 /* OCVANNMLP.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVANNMLP.m; sourceTree = \"<group>\"; };\n\t\t383BC4661E2FFC8F002EA7A1 /* OCVDTree.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVDTree.h; sourceTree = \"<group>\"; };\n\t\t383BC4671E2FFC8F002EA7A1 /* OCVDTree.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVDTree.m; sourceTree = \"<group>\"; };\n\t\t383BC46A1E2FFCA2002EA7A1 /* OCVEM.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVEM.h; sourceTree = \"<group>\"; };\n\t\t383BC46B1E2FFCA2002EA7A1 /* OCVEM.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVEM.m; sourceTree = \"<group>\"; };\n\t\t383BC46E1E2FFCAC002EA7A1 /* OCVKNearest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVKNearest.h; sourceTree = \"<group>\"; };\n\t\t383BC46F1E2FFCAC002EA7A1 /* OCVKNearest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVKNearest.m; sourceTree = \"<group>\"; };\n\t\t383BC4721E2FFCB5002EA7A1 /* OCVLogisticRegression.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVLogisticRegression.h; sourceTree = \"<group>\"; };\n\t\t383BC4731E2FFCB5002EA7A1 /* OCVLogisticRegression.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVLogisticRegression.m; sourceTree = \"<group>\"; };\n\t\t383BC4761E2FFCC9002EA7A1 /* OCVNormalBayesClassifier.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVNormalBayesClassifier.h; sourceTree = \"<group>\"; };\n\t\t383BC4771E2FFCC9002EA7A1 /* OCVNormalBayesClassifier.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVNormalBayesClassifier.m; sourceTree = \"<group>\"; };\n\t\t383BC47A1E2FFCD3002EA7A1 /* OCVRTree.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVRTree.h; sourceTree = \"<group>\"; };\n\t\t383BC47B1E2FFCD3002EA7A1 /* OCVRTree.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVRTree.m; sourceTree = \"<group>\"; };\n\t\t383BC47E1E2FFCE1002EA7A1 /* OCVStatModelExtensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVStatModelExtensions.h; sourceTree = \"<group>\"; };\n\t\t383BC47F1E2FFCE1002EA7A1 /* OCVStatModelExtensions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVStatModelExtensions.m; sourceTree = \"<group>\"; };\n\t\t383BC4821E2FFCEA002EA7A1 /* OCVSVM.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVSVM.h; sourceTree = \"<group>\"; };\n\t\t383BC4831E2FFCEA002EA7A1 /* OCVSVM.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVSVM.m; sourceTree = \"<group>\"; };\n\t\t383BC4861E2FFCF2002EA7A1 /* OCVTrainData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVTrainData.h; sourceTree = \"<group>\"; };\n\t\t383BC4871E2FFCF2002EA7A1 /* OCVTrainData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVTrainData.m; sourceTree = \"<group>\"; };\n\t\t383BC48A1E2FFD0A002EA7A1 /* OCVBoostType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVBoostType.h; sourceTree = \"<group>\"; };\n\t\t383BC48B1E2FFD0A002EA7A1 /* OCVBoostType.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVBoostType.m; sourceTree = \"<group>\"; };\n\t\t383BC48E1E2FFD13002EA7A1 /* OCVVarType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVVarType.h; sourceTree = \"<group>\"; };\n\t\t383BC48F1E2FFD13002EA7A1 /* OCVVarType.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVVarType.m; sourceTree = \"<group>\"; };\n\t\t383BC4921E2FFD2C002EA7A1 /* OCVMCvDTreeNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVMCvDTreeNode.h; sourceTree = \"<group>\"; };\n\t\t383BC4931E2FFD2C002EA7A1 /* OCVMCvDTreeNode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVMCvDTreeNode.m; sourceTree = \"<group>\"; };\n\t\t383BC4961E2FFD39002EA7A1 /* OCVMCvDTreeSplit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVMCvDTreeSplit.h; sourceTree = \"<group>\"; };\n\t\t383BC4971E2FFD39002EA7A1 /* OCVMCvDTreeSplit.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVMCvDTreeSplit.m; sourceTree = \"<group>\"; };\n\t\t383BC49A1E2FFD4B002EA7A1 /* OCVMCvDTreeSplitMOrder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVMCvDTreeSplitMOrder.h; sourceTree = \"<group>\"; };\n\t\t383BC49B1E2FFD4B002EA7A1 /* OCVMCvDTreeSplitMOrder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVMCvDTreeSplitMOrder.m; sourceTree = \"<group>\"; };\n\t\t383BC49E1E2FFD56002EA7A1 /* OCVMCvParamGrid.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVMCvParamGrid.h; sourceTree = \"<group>\"; };\n\t\t383BC49F1E2FFD56002EA7A1 /* OCVMCvParamGrid.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVMCvParamGrid.m; sourceTree = \"<group>\"; };\n\t\t383BC4A21E2FFDDA002EA7A1 /* OCVDevice.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVDevice.h; sourceTree = \"<group>\"; };\n\t\t383BC4A31E2FFDDA002EA7A1 /* OCVDevice.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVDevice.m; sourceTree = \"<group>\"; };\n\t\t383BC4A61E2FFDE5002EA7A1 /* OCVQueue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVQueue.h; sourceTree = \"<group>\"; };\n\t\t383BC4A71E2FFDE5002EA7A1 /* OCVQueue.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVQueue.m; sourceTree = \"<group>\"; };\n\t\t383BC4AA1E2FFDEC002EA7A1 /* OCVKernel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVKernel.h; sourceTree = \"<group>\"; };\n\t\t383BC4AB1E2FFDEC002EA7A1 /* OCVKernel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVKernel.m; sourceTree = \"<group>\"; };\n\t\t383BC4AE1E2FFDF6002EA7A1 /* OCVImage2D.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVImage2D.h; sourceTree = \"<group>\"; };\n\t\t383BC4AF1E2FFDF6002EA7A1 /* OCVImage2D.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVImage2D.m; sourceTree = \"<group>\"; };\n\t\t383BC4B21E2FFE06002EA7A1 /* OCVKernelConfiguration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVKernelConfiguration.h; sourceTree = \"<group>\"; };\n\t\t383BC4B31E2FFE06002EA7A1 /* OCVKernelConfiguration.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVKernelConfiguration.m; sourceTree = \"<group>\"; };\n\t\t383BC4B61E2FFE13002EA7A1 /* OCVPlatformInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVPlatformInfo.h; sourceTree = \"<group>\"; };\n\t\t383BC4B71E2FFE13002EA7A1 /* OCVPlatformInfo.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVPlatformInfo.m; sourceTree = \"<group>\"; };\n\t\t383BC4BA1E2FFE1C002EA7A1 /* OCVProgramSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVProgramSource.h; sourceTree = \"<group>\"; };\n\t\t383BC4BB1E2FFE1C002EA7A1 /* OCVProgramSource.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVProgramSource.m; sourceTree = \"<group>\"; };\n\t\t383BC4BE1E2FFE4E002EA7A1 /* OCVPageIterator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVPageIterator.h; sourceTree = \"<group>\"; };\n\t\t383BC4BF1E2FFE4E002EA7A1 /* OCVPageIterator.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVPageIterator.m; sourceTree = \"<group>\"; };\n\t\t383BC4C21E2FFE63002EA7A1 /* OCVTesseract.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVTesseract.h; sourceTree = \"<group>\"; };\n\t\t383BC4C31E2FFE63002EA7A1 /* OCVTesseract.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVTesseract.m; sourceTree = \"<group>\"; };\n\t\t383BC4C61E2FFE6C002EA7A1 /* OCVTesseractResult.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVTesseractResult.h; sourceTree = \"<group>\"; };\n\t\t383BC4C71E2FFE6C002EA7A1 /* OCVTesseractResult.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVTesseractResult.m; sourceTree = \"<group>\"; };\n\t\t383BC4CA1E2FFE7C002EA7A1 /* OCVOrientation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVOrientation.h; sourceTree = \"<group>\"; };\n\t\t383BC4CB1E2FFE7C002EA7A1 /* OCVOrientation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVOrientation.m; sourceTree = \"<group>\"; };\n\t\t383BC4CE1E2FFE90002EA7A1 /* OCVPlot.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVPlot.h; sourceTree = \"<group>\"; };\n\t\t383BC4CF1E2FFE90002EA7A1 /* OCVPlot.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVPlot.m; sourceTree = \"<group>\"; };\n\t\t383BC4D21E2FFEAE002EA7A1 /* OCVReflectImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVReflectImage.h; sourceTree = \"<group>\"; };\n\t\t383BC4D31E2FFEAE002EA7A1 /* OCVReflectImage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVReflectImage.m; sourceTree = \"<group>\"; };\n\t\t383BC4D61E2FFEC0002EA7A1 /* OCVAffineTransformer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVAffineTransformer.h; sourceTree = \"<group>\"; };\n\t\t383BC4D71E2FFEC0002EA7A1 /* OCVAffineTransformer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVAffineTransformer.m; sourceTree = \"<group>\"; };\n\t\t383BC4DA1E2FFED0002EA7A1 /* OCVChiHistogramCostExtractor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVChiHistogramCostExtractor.h; sourceTree = \"<group>\"; };\n\t\t383BC4DB1E2FFED0002EA7A1 /* OCVChiHistogramCostExtractor.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVChiHistogramCostExtractor.m; sourceTree = \"<group>\"; };\n\t\t383BC4DE1E2FFEDE002EA7A1 /* OCVEMDHistogramCostExtractor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVEMDHistogramCostExtractor.h; sourceTree = \"<group>\"; };\n\t\t383BC4DF1E2FFEDE002EA7A1 /* OCVEMDHistogramCostExtractor.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVEMDHistogramCostExtractor.m; sourceTree = \"<group>\"; };\n\t\t383BC4E21E2FFEEC002EA7A1 /* OCVEMDL1HistogramCostExtractor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVEMDL1HistogramCostExtractor.h; sourceTree = \"<group>\"; };\n\t\t383BC4E31E2FFEEC002EA7A1 /* OCVEMDL1HistogramCostExtractor.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVEMDL1HistogramCostExtractor.m; sourceTree = \"<group>\"; };\n\t\t383BC4E61E2FFEF8002EA7A1 /* OCVHausdorffDistanceExtractor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVHausdorffDistanceExtractor.h; sourceTree = \"<group>\"; };\n\t\t383BC4E71E2FFEF8002EA7A1 /* OCVHausdorffDistanceExtractor.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVHausdorffDistanceExtractor.m; sourceTree = \"<group>\"; };\n\t\t383BC4EA1E2FFF08002EA7A1 /* OCVHistogramCostExtractor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVHistogramCostExtractor.h; sourceTree = \"<group>\"; };\n\t\t383BC4EB1E2FFF08002EA7A1 /* OCVHistogramCostExtractor.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVHistogramCostExtractor.m; sourceTree = \"<group>\"; };\n\t\t383BC4EE1E2FFF14002EA7A1 /* OCVNormHistogramCostExtractor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVNormHistogramCostExtractor.h; sourceTree = \"<group>\"; };\n\t\t383BC4EF1E2FFF14002EA7A1 /* OCVNormHistogramCostExtractor.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVNormHistogramCostExtractor.m; sourceTree = \"<group>\"; };\n\t\t383BC4F21E2FFF23002EA7A1 /* OCVShapeContextDistanceExtractor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVShapeContextDistanceExtractor.h; sourceTree = \"<group>\"; };\n\t\t383BC4F31E2FFF23002EA7A1 /* OCVShapeContextDistanceExtractor.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVShapeContextDistanceExtractor.m; sourceTree = \"<group>\"; };\n\t\t383BC4F61E2FFF39002EA7A1 /* OCVShapeDistanceExtractor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVShapeDistanceExtractor.h; sourceTree = \"<group>\"; };\n\t\t383BC4F71E2FFF39002EA7A1 /* OCVShapeDistanceExtractor.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVShapeDistanceExtractor.m; sourceTree = \"<group>\"; };\n\t\t383BC4FA1E2FFF44002EA7A1 /* OCVThinPlateSplineShapeTransformer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVThinPlateSplineShapeTransformer.h; sourceTree = \"<group>\"; };\n\t\t383BC4FB1E2FFF44002EA7A1 /* OCVThinPlateSplineShapeTransformer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVThinPlateSplineShapeTransformer.m; sourceTree = \"<group>\"; };\n\t\t383BC4FE1E2FFF5A002EA7A1 /* OCVFeaturesFinder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVFeaturesFinder.h; sourceTree = \"<group>\"; };\n\t\t383BC4FF1E2FFF5A002EA7A1 /* OCVFeaturesFinder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVFeaturesFinder.m; sourceTree = \"<group>\"; };\n\t\t383BC5021E2FFF66002EA7A1 /* OCVCompressedRectilinearWarper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVCompressedRectilinearWarper.h; sourceTree = \"<group>\"; };\n\t\t383BC5031E2FFF66002EA7A1 /* OCVCompressedRectilinearWarper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVCompressedRectilinearWarper.m; sourceTree = \"<group>\"; };\n\t\t383BC5061E2FFF6F002EA7A1 /* OCVFisheyeWarper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVFisheyeWarper.h; sourceTree = \"<group>\"; };\n\t\t383BC5071E2FFF6F002EA7A1 /* OCVFisheyeWarper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVFisheyeWarper.m; sourceTree = \"<group>\"; };\n\t\t383BC50A1E2FFF77002EA7A1 /* OCVMercatorWarper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVMercatorWarper.h; sourceTree = \"<group>\"; };\n\t\t383BC50B1E2FFF77002EA7A1 /* OCVMercatorWarper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVMercatorWarper.m; sourceTree = \"<group>\"; };\n\t\t383BC50E1E2FFF82002EA7A1 /* OCVOrbFeaturesFinder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVOrbFeaturesFinder.h; sourceTree = \"<group>\"; };\n\t\t383BC50F1E2FFF82002EA7A1 /* OCVOrbFeaturesFinder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVOrbFeaturesFinder.m; sourceTree = \"<group>\"; };\n\t\t383BC5121E2FFF8F002EA7A1 /* OCVPaniniPortraitWarper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVPaniniPortraitWarper.h; sourceTree = \"<group>\"; };\n\t\t383BC5131E2FFF8F002EA7A1 /* OCVPaniniPortraitWarper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVPaniniPortraitWarper.m; sourceTree = \"<group>\"; };\n\t\t383BC5161E2FFF99002EA7A1 /* OCVPaniniWarper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVPaniniWarper.h; sourceTree = \"<group>\"; };\n\t\t383BC5171E2FFF99002EA7A1 /* OCVPaniniWarper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVPaniniWarper.m; sourceTree = \"<group>\"; };\n\t\t383BC51A1E2FFFA0002EA7A1 /* OCVPlaneWarper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVPlaneWarper.h; sourceTree = \"<group>\"; };\n\t\t383BC51B1E2FFFA0002EA7A1 /* OCVPlaneWarper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVPlaneWarper.m; sourceTree = \"<group>\"; };\n\t\t383BC51E1E2FFFAA002EA7A1 /* OCVSphericalWarper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVSphericalWarper.h; sourceTree = \"<group>\"; };\n\t\t383BC51F1E2FFFAA002EA7A1 /* OCVSphericalWarper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVSphericalWarper.m; sourceTree = \"<group>\"; };\n\t\t383BC5221E2FFFB5002EA7A1 /* OCVStereographicWarper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVStereographicWarper.h; sourceTree = \"<group>\"; };\n\t\t383BC5231E2FFFB5002EA7A1 /* OCVStereographicWarper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVStereographicWarper.m; sourceTree = \"<group>\"; };\n\t\t383BC5261E2FFFBD002EA7A1 /* OCVSticher.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVSticher.h; sourceTree = \"<group>\"; };\n\t\t383BC5271E2FFFBD002EA7A1 /* OCVSticher.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVSticher.m; sourceTree = \"<group>\"; };\n\t\t383BC52A1E2FFFCE002EA7A1 /* OCVTransverseMercatorWarper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVTransverseMercatorWarper.h; sourceTree = \"<group>\"; };\n\t\t383BC52B1E2FFFCE002EA7A1 /* OCVTransverseMercatorWarper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVTransverseMercatorWarper.m; sourceTree = \"<group>\"; };\n\t\t383BC52E1E2FFFD9002EA7A1 /* OCVWarperCreator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVWarperCreator.h; sourceTree = \"<group>\"; };\n\t\t383BC52F1E2FFFD9002EA7A1 /* OCVWarperCreator.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVWarperCreator.m; sourceTree = \"<group>\"; };\n\t\t383BC5321E2FFFF6002EA7A1 /* OCVRgb.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVRgb.h; sourceTree = \"<group>\"; };\n\t\t383BC5331E2FFFF6002EA7A1 /* OCVRgb.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVRgb.m; sourceTree = \"<group>\"; };\n\t\t383BC5361E2FFFFC002EA7A1 /* OCVRgba.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVRgba.h; sourceTree = \"<group>\"; };\n\t\t383BC5371E2FFFFC002EA7A1 /* OCVRgba.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVRgba.m; sourceTree = \"<group>\"; };\n\t\t383BC53A1E300015002EA7A1 /* OCVFrameSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVFrameSource.h; sourceTree = \"<group>\"; };\n\t\t383BC53B1E300015002EA7A1 /* OCVFrameSource.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVFrameSource.m; sourceTree = \"<group>\"; };\n\t\t383BC53E1E30001E002EA7A1 /* OCVSuperResolution.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVSuperResolution.h; sourceTree = \"<group>\"; };\n\t\t383BC53F1E30001E002EA7A1 /* OCVSuperResolution.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVSuperResolution.m; sourceTree = \"<group>\"; };\n\t\t383BC5421E300033002EA7A1 /* OCVERFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVERFilter.h; sourceTree = \"<group>\"; };\n\t\t383BC5431E300033002EA7A1 /* OCVERFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVERFilter.m; sourceTree = \"<group>\"; };\n\t\t383BC5461E30003C002EA7A1 /* OCVERFilterNM1.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVERFilterNM1.h; sourceTree = \"<group>\"; };\n\t\t383BC5471E30003C002EA7A1 /* OCVERFilterNM1.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVERFilterNM1.m; sourceTree = \"<group>\"; };\n\t\t383BC54A1E300044002EA7A1 /* OCVERFilterNM2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVERFilterNM2.h; sourceTree = \"<group>\"; };\n\t\t383BC54B1E300044002EA7A1 /* OCVERFilterNM2.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVERFilterNM2.m; sourceTree = \"<group>\"; };\n\t\t383BC54E1E30004F002EA7A1 /* OCVERStat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVERStat.h; sourceTree = \"<group>\"; };\n\t\t383BC54F1E30004F002EA7A1 /* OCVERStat.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVERStat.m; sourceTree = \"<group>\"; };\n\t\t383BC5521E300062002EA7A1 /* OCVTiffWriter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVTiffWriter.h; sourceTree = \"<group>\"; };\n\t\t383BC5531E300062002EA7A1 /* OCVTiffWriter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVTiffWriter.m; sourceTree = \"<group>\"; };\n\t\t383BC5561E30006B002EA7A1 /* OCVTileTiffWriter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVTileTiffWriter.h; sourceTree = \"<group>\"; };\n\t\t383BC5571E30006B002EA7A1 /* OCVTileTiffWriter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVTileTiffWriter.m; sourceTree = \"<group>\"; };\n\t\t383BC55A1E300078002EA7A1 /* OCVMultiTracker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVMultiTracker.h; sourceTree = \"<group>\"; };\n\t\t383BC55B1E300078002EA7A1 /* OCVMultiTracker.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVMultiTracker.m; sourceTree = \"<group>\"; };\n\t\t383BC55E1E30007F002EA7A1 /* OCVTracker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVTracker.h; sourceTree = \"<group>\"; };\n\t\t383BC55F1E30007F002EA7A1 /* OCVTracker.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVTracker.m; sourceTree = \"<group>\"; };\n\t\t383BC5621E30009D002EA7A1 /* OCVVideoCaptureFrameSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVVideoCaptureFrameSource.h; sourceTree = \"<group>\"; };\n\t\t383BC5631E30009D002EA7A1 /* OCVVideoCaptureFrameSource.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVVideoCaptureFrameSource.m; sourceTree = \"<group>\"; };\n\t\t383BC5661E3000A4002EA7A1 /* OCVVideoFrameSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVVideoFrameSource.h; sourceTree = \"<group>\"; };\n\t\t383BC5671E3000A4002EA7A1 /* OCVVideoFrameSource.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVVideoFrameSource.m; sourceTree = \"<group>\"; };\n\t\t383BC56A1E3000AD002EA7A1 /* OCVGaussianMotionFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVGaussianMotionFilter.h; sourceTree = \"<group>\"; };\n\t\t383BC56B1E3000AD002EA7A1 /* OCVGaussianMotionFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVGaussianMotionFilter.m; sourceTree = \"<group>\"; };\n\t\t383BC56E1E3000B6002EA7A1 /* OCVOnePassStabilizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVOnePassStabilizer.h; sourceTree = \"<group>\"; };\n\t\t383BC56F1E3000B6002EA7A1 /* OCVOnePassStabilizer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVOnePassStabilizer.m; sourceTree = \"<group>\"; };\n\t\t383BC5721E3000BE002EA7A1 /* OCVTwoPassStabilizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVTwoPassStabilizer.h; sourceTree = \"<group>\"; };\n\t\t383BC5731E3000BE002EA7A1 /* OCVTwoPassStabilizer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVTwoPassStabilizer.m; sourceTree = \"<group>\"; };\n\t\t383BC5761E3000D0002EA7A1 /* OCVBackgroundSubtractor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVBackgroundSubtractor.h; sourceTree = \"<group>\"; };\n\t\t383BC5771E3000D0002EA7A1 /* OCVBackgroundSubtractor.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVBackgroundSubtractor.m; sourceTree = \"<group>\"; };\n\t\t383BC57A1E3000DA002EA7A1 /* OCVBackgroundSubtractorKNN.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVBackgroundSubtractorKNN.h; sourceTree = \"<group>\"; };\n\t\t383BC57B1E3000DA002EA7A1 /* OCVBackgroundSubtractorKNN.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVBackgroundSubtractorKNN.m; sourceTree = \"<group>\"; };\n\t\t383BC57E1E3000E3002EA7A1 /* OCVBackgroundSubtractorMOG2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVBackgroundSubtractorMOG2.h; sourceTree = \"<group>\"; };\n\t\t383BC57F1E3000E3002EA7A1 /* OCVBackgroundSubtractorMOG2.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVBackgroundSubtractorMOG2.m; sourceTree = \"<group>\"; };\n\t\t383BC5821E3000F7002EA7A1 /* OCVHistogramBox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVHistogramBox.h; sourceTree = \"<group>\"; };\n\t\t383BC5831E3000F7002EA7A1 /* OCVHistogramBox.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVHistogramBox.m; sourceTree = \"<group>\"; };\n\t\t383BC5861E3000FF002EA7A1 /* OCVHistogramViewer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVHistogramViewer.h; sourceTree = \"<group>\"; };\n\t\t383BC5871E3000FF002EA7A1 /* OCVHistogramViewer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVHistogramViewer.m; sourceTree = \"<group>\"; };\n\t\t383BC58E1E300134002EA7A1 /* OCVBriefDescriptorExtractor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVBriefDescriptorExtractor.h; sourceTree = \"<group>\"; };\n\t\t383BC58F1E300134002EA7A1 /* OCVBriefDescriptorExtractor.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVBriefDescriptorExtractor.m; sourceTree = \"<group>\"; };\n\t\t383BC5921E30013C002EA7A1 /* OCVCudaSURF.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVCudaSURF.h; sourceTree = \"<group>\"; };\n\t\t383BC5931E30013C002EA7A1 /* OCVCudaSURF.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVCudaSURF.m; sourceTree = \"<group>\"; };\n\t\t383BC5961E300142002EA7A1 /* OCVDAISY.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVDAISY.h; sourceTree = \"<group>\"; };\n\t\t383BC5971E300142002EA7A1 /* OCVDAISY.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVDAISY.m; sourceTree = \"<group>\"; };\n\t\t383BC59A1E300149002EA7A1 /* OCVFreak.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVFreak.h; sourceTree = \"<group>\"; };\n\t\t383BC59B1E300149002EA7A1 /* OCVFreak.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVFreak.m; sourceTree = \"<group>\"; };\n\t\t383BC59E1E300150002EA7A1 /* OCVLATCH.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVLATCH.h; sourceTree = \"<group>\"; };\n\t\t383BC59F1E300150002EA7A1 /* OCVLATCH.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVLATCH.m; sourceTree = \"<group>\"; };\n\t\t383BC5A21E300157002EA7A1 /* OCVLUCID.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVLUCID.h; sourceTree = \"<group>\"; };\n\t\t383BC5A31E300157002EA7A1 /* OCVLUCID.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVLUCID.m; sourceTree = \"<group>\"; };\n\t\t383BC5A61E30015E002EA7A1 /* OCVSIFT.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVSIFT.h; sourceTree = \"<group>\"; };\n\t\t383BC5A71E30015E002EA7A1 /* OCVSIFT.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVSIFT.m; sourceTree = \"<group>\"; };\n\t\t383BC5AA1E300165002EA7A1 /* OCVStarDetector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVStarDetector.h; sourceTree = \"<group>\"; };\n\t\t383BC5AB1E300165002EA7A1 /* OCVStarDetector.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVStarDetector.m; sourceTree = \"<group>\"; };\n\t\t383BC5AE1E30016B002EA7A1 /* OCVSURF.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVSURF.h; sourceTree = \"<group>\"; };\n\t\t383BC5AF1E30016B002EA7A1 /* OCVSURF.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVSURF.m; sourceTree = \"<group>\"; };\n\t\t383BC5B21E30017C002EA7A1 /* OCVDTFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVDTFilter.h; sourceTree = \"<group>\"; };\n\t\t383BC5B31E30017C002EA7A1 /* OCVDTFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVDTFilter.m; sourceTree = \"<group>\"; };\n\t\t383BC5B61E30018A002EA7A1 /* OCVXPhoto.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVXPhoto.h; sourceTree = \"<group>\"; };\n\t\t383BC5B71E30018A002EA7A1 /* OCVXPhoto.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVXPhoto.m; sourceTree = \"<group>\"; };\n\t\t386F2B7F1E3524D300320AEB /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };\n\t\t386F2B801E3524D300320AEB /* CoreVideo.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreVideo.framework; path = System/Library/Frameworks/CoreVideo.framework; sourceTree = SDKROOT; };\n\t\t386F2B811E3524D300320AEB /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };\n\t\t386F2B851E352A4800320AEB /* OCVPointerObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVPointerObject.h; sourceTree = \"<group>\"; };\n\t\t386F2B861E352A4800320AEB /* OCVPointerObject.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVPointerObject.m; sourceTree = \"<group>\"; };\n\t\t388B228421863CB500F24D45 /* Matrix.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Matrix.swift; sourceTree = \"<group>\"; };\n\t\t388B228B21863CF000F24D45 /* LegoSwiftCV.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = LegoSwiftCV.framework; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t388B228D21863CF000F24D45 /* LegoSwiftCV.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LegoSwiftCV.h; sourceTree = \"<group>\"; };\n\t\t388B228E21863CF000F24D45 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = \"<group>\"; };\n\t\t388B229321863CF000F24D45 /* LegoSwiftCVTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = LegoSwiftCVTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t388B229A21863CF000F24D45 /* LegoSwiftCVTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LegoSwiftCVTests.swift; sourceTree = \"<group>\"; };\n\t\t388B229C21863CF000F24D45 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = \"<group>\"; };\n\t\t389718681E36175E00CB02B4 /* LiveCameraVC.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LiveCameraVC.swift; sourceTree = \"<group>\"; };\n\t\t3897186A1E36176B00CB02B4 /* FaceRecognitionVC.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FaceRecognitionVC.swift; sourceTree = \"<group>\"; };\n\t\t3897186C1E3618B200CB02B4 /* FaceRecognizer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FaceRecognizer.swift; sourceTree = \"<group>\"; };\n\t\t3897186E1E3618BC00CB02B4 /* FaceDetector.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FaceDetector.swift; sourceTree = \"<group>\"; };\n\t\t389718751E361ECC00CB02B4 /* OCVVideoCamera.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVVideoCamera.h; sourceTree = \"<group>\"; };\n\t\t389718761E361ECC00CB02B4 /* OCVVideoCamera.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = OCVVideoCamera.mm; sourceTree = \"<group>\"; };\n\t\t389718791E361F0600CB02B4 /* OCVPhotoCamera.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVPhotoCamera.h; sourceTree = \"<group>\"; };\n\t\t3897187A1E361F0600CB02B4 /* OCVPhotoCamera.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = OCVPhotoCamera.mm; sourceTree = \"<group>\"; };\n\t\t3897187D1E3621D000CB02B4 /* OCVCamera.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVCamera.h; sourceTree = \"<group>\"; };\n\t\t3897187E1E3621D000CB02B4 /* OCVCamera.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = OCVCamera.mm; sourceTree = \"<group>\"; };\n\t\t389718811E36250800CB02B4 /* OCVCamera+Private.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = \"OCVCamera+Private.h\"; sourceTree = \"<group>\"; };\n\t\t389718831E36263A00CB02B4 /* OCVReferenceObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVReferenceObject.h; sourceTree = \"<group>\"; };\n\t\t389718841E36263A00CB02B4 /* OCVReferenceObject.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVReferenceObject.m; sourceTree = \"<group>\"; };\n\t\t389718881E362B8F00CB02B4 /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; };\n\t\t3897188A1E362B9700CB02B4 /* CoreMedia.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMedia.framework; path = System/Library/Frameworks/CoreMedia.framework; sourceTree = SDKROOT; };\n\t\t3897188C1E36439B00CB02B4 /* AssetsLibrary.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AssetsLibrary.framework; path = System/Library/Frameworks/AssetsLibrary.framework; sourceTree = SDKROOT; };\n\t\t3897188E1E3643A100CB02B4 /* Accelerate.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Accelerate.framework; path = System/Library/Frameworks/Accelerate.framework; sourceTree = SDKROOT; };\n\t\t389718901E3643A900CB02B4 /* CoreImage.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreImage.framework; path = System/Library/Frameworks/CoreImage.framework; sourceTree = SDKROOT; };\n\t\t389718921E3643B600CB02B4 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; };\n\t\t389871101E6F311400020CFB /* OCVFileStorage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVFileStorage.h; sourceTree = \"<group>\"; };\n\t\t389871111E6F311400020CFB /* OCVFileStorage.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = OCVFileStorage.mm; sourceTree = \"<group>\"; };\n\t\t389871141E6F315A00020CFB /* OCVFileNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVFileNode.h; sourceTree = \"<group>\"; };\n\t\t389871151E6F315A00020CFB /* OCVFileNode.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = OCVFileNode.mm; sourceTree = \"<group>\"; };\n\t\t389871181E6F32BE00020CFB /* OCVPersistence.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVPersistence.h; sourceTree = \"<group>\"; };\n\t\t3898711A1E6F393F00020CFB /* OCVSerializable.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = OCVSerializable.h; sourceTree = \"<group>\"; };\n\t\t3898711B1E6F3CB900020CFB /* OCVFileStorageFormatDescriptor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVFileStorageFormatDescriptor.h; sourceTree = \"<group>\"; };\n\t\t3898711C1E6F3CB900020CFB /* OCVFileStorageFormatDescriptor.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVFileStorageFormatDescriptor.m; sourceTree = \"<group>\"; };\n\t\t38B4D4B01E2AA01F008AAAB0 /* LegoCV.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = LegoCV.framework; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t38B4D4B31E2AA01F008AAAB0 /* LegoCV.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LegoCV.h; sourceTree = \"<group>\"; };\n\t\t38B4D4B41E2AA01F008AAAB0 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = \"<group>\"; };\n\t\t38B4D4B91E2AA01F008AAAB0 /* LegoCVTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = LegoCVTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t38B4D4BE1E2AA01F008AAAB0 /* LegoCVTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LegoCVTests.swift; sourceTree = \"<group>\"; };\n\t\t38B4D4C01E2AA01F008AAAB0 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = \"<group>\"; };\n\t\t38B4D4D01E2AA110008AAAB0 /* FaceDetection.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = FaceDetection.app; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t38B4D4D21E2AA110008AAAB0 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = \"<group>\"; };\n\t\t38B4D4D71E2AA110008AAAB0 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = \"<group>\"; };\n\t\t38B4D4D91E2AA111008AAAB0 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = \"<group>\"; };\n\t\t38B4D4DC1E2AA111008AAAB0 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = \"<group>\"; };\n\t\t38B4D4DE1E2AA111008AAAB0 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = \"<group>\"; };\n\t\t38C0D90D1E7D6D2000246963 /* OCVImageTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVImageTypes.h; sourceTree = \"<group>\"; };\n\t\t38C0D90F1E7D735F00246963 /* OCVGeneralizedHoughBallard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVGeneralizedHoughBallard.h; sourceTree = \"<group>\"; };\n\t\t38C0D9101E7D735F00246963 /* OCVGeneralizedHoughBallard.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVGeneralizedHoughBallard.m; sourceTree = \"<group>\"; };\n\t\t38C0D9131E7D73D100246963 /* OCVGeneralizedHough.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVGeneralizedHough.h; sourceTree = \"<group>\"; };\n\t\t38C0D9141E7D73D100246963 /* OCVGeneralizedHough.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVGeneralizedHough.m; sourceTree = \"<group>\"; };\n\t\t38C0D9171E7D747700246963 /* OCVArrayables.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVArrayables.h; sourceTree = \"<group>\"; };\n\t\t38C0D9191E7D764200246963 /* OCVGeneralizedHoughGuil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVGeneralizedHoughGuil.h; sourceTree = \"<group>\"; };\n\t\t38C0D91A1E7D764200246963 /* OCVGeneralizedHoughGuil.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVGeneralizedHoughGuil.m; sourceTree = \"<group>\"; };\n\t\t38C0D91D1E7D771300246963 /* OCVContrastLimitedAdaptiveHistogramEqualization.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVContrastLimitedAdaptiveHistogramEqualization.h; sourceTree = \"<group>\"; };\n\t\t38C0D91E1E7D771300246963 /* OCVContrastLimitedAdaptiveHistogramEqualization.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVContrastLimitedAdaptiveHistogramEqualization.m; sourceTree = \"<group>\"; };\n\t\t38C0D9211E7D77B500246963 /* OCVSubdiv2D.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVSubdiv2D.h; sourceTree = \"<group>\"; };\n\t\t38C0D9221E7D77B500246963 /* OCVSubdiv2D.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVSubdiv2D.m; sourceTree = \"<group>\"; };\n\t\t38C0D9291E7D7EAC00246963 /* OCVLineSegmentDetector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVLineSegmentDetector.h; sourceTree = \"<group>\"; };\n\t\t38C0D92A1E7D7EAC00246963 /* OCVLineSegmentDetector.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVLineSegmentDetector.m; sourceTree = \"<group>\"; };\n\t\t38C0D92E1E7D8D8200246963 /* OCVBaseCascadeClassifier.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVBaseCascadeClassifier.h; sourceTree = \"<group>\"; };\n\t\t38C0D92F1E7D8D8200246963 /* OCVBaseCascadeClassifier.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVBaseCascadeClassifier.m; sourceTree = \"<group>\"; };\n\t\t38C0D9321E7D8EEC00246963 /* OCVCascadeClassifierResult.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVCascadeClassifierResult.h; sourceTree = \"<group>\"; };\n\t\t38C0D9331E7D8EEC00246963 /* OCVCascadeClassifierResult.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVCascadeClassifierResult.m; sourceTree = \"<group>\"; };\n\t\t38C0D9361E7D8FFC00246963 /* OCVCascadeClassifierOptions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVCascadeClassifierOptions.h; sourceTree = \"<group>\"; };\n\t\t38C0D9371E7D8FFC00246963 /* OCVCascadeClassifierOptions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVCascadeClassifierOptions.m; sourceTree = \"<group>\"; };\n\t\t38DB13EB1E366E0100822472 /* OCVVideo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVVideo.h; sourceTree = \"<group>\"; };\n\t\t38DB13ED1E366FD500822472 /* OCVCore.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = OCVCore.h; sourceTree = \"<group>\"; };\n\t\t38DDD2492181033B007B999D /* MatrixOperations.playground */ = {isa = PBXFileReference; lastKnownFileType = file.playground; path = MatrixOperations.playground; sourceTree = \"<group>\"; xcLanguageSpecificationIdentifier = xcode.lang.swift; };\n\t\t38E3EA201E6E305C00BCC097 /* OCVImageProcessing.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVImageProcessing.h; sourceTree = \"<group>\"; };\n\t\t67E640401947EB92C031F274 /* OCVScalar.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVScalar.m; sourceTree = \"<group>\"; };\n\t\t67E6414DA192C455EE9F6374 /* OCVInputArray.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVInputArray.h; sourceTree = \"<group>\"; };\n\t\t67E6416E34EDDC521F465DDE /* OCVInputOutputArray.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVInputOutputArray.h; sourceTree = \"<group>\"; };\n\t\t67E641C573728BB0D14DBD41 /* OCVInputArrayable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVInputArrayable.h; sourceTree = \"<group>\"; };\n\t\t67E641E5AE5841744443558D /* OCVRect+Private.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = \"OCVRect+Private.mm\"; sourceTree = \"<group>\"; };\n\t\t67E641FBE65950718BDBAC73 /* OCVMat.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = OCVMat.mm; sourceTree = \"<group>\"; };\n\t\t67E6422A492670AF3DC695D8 /* OCVRect+Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = \"OCVRect+Private.h\"; sourceTree = \"<group>\"; };\n\t\t67E6425526F810208AA6B50E /* OCVOperation+Bitwise.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = \"OCVOperation+Bitwise.mm\"; sourceTree = \"<group>\"; };\n\t\t67E642642A6333F29DD824AA /* OCVOutputArray.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVOutputArray.h; sourceTree = \"<group>\"; };\n\t\t67E642DCCBA8EF4A5E2348FB /* OCVEdges.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVEdges.h; sourceTree = \"<group>\"; };\n\t\t67E642E169EC045927288E82 /* OCVMatDataAllocator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVMatDataAllocator.h; sourceTree = \"<group>\"; };\n\t\t67E6434323FF82193E9898C0 /* OCVOutputArray.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = OCVOutputArray.mm; sourceTree = \"<group>\"; };\n\t\t67E6438675C6C73B77B08385 /* OCVOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVOperation.h; sourceTree = \"<group>\"; };\n\t\t67E6438D1CE78C8D148D0DE8 /* OCVInputOutputArray+Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = \"OCVInputOutputArray+Private.h\"; sourceTree = \"<group>\"; };\n\t\t67E64391B0744DE769F98B1C /* OCVImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVImage.h; sourceTree = \"<group>\"; };\n\t\t67E6439A810BAF9EB4F3D2EB /* OCVImageOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVImageOperation.h; sourceTree = \"<group>\"; };\n\t\t67E643ED8E6AE25117DB09C6 /* OCVPoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVPoint.h; sourceTree = \"<group>\"; };\n\t\t67E643FED267103AF823F80A /* OCVRandomGenerator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVRandomGenerator.h; sourceTree = \"<group>\"; };\n\t\t67E6440F9430BD2FE92FB3E3 /* OCVAlgorithm.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVAlgorithm.m; sourceTree = \"<group>\"; };\n\t\t67E644438826EEE78DA5FA73 /* OCVMinimumMaximum.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVMinimumMaximum.h; sourceTree = \"<group>\"; };\n\t\t67E64459E0C63EA4D9627050 /* OCVTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVTypes.h; sourceTree = \"<group>\"; };\n\t\t67E6446098E944BFA71C69A9 /* OCVAlgorithm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVAlgorithm.h; sourceTree = \"<group>\"; };\n\t\t67E6448BB8EFC6BEBF51BA3C /* OCVSVD.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = OCVSVD.mm; sourceTree = \"<group>\"; };\n\t\t67E644AF37D67E1163B102A4 /* OCVOperation+Transform.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = \"OCVOperation+Transform.mm\"; sourceTree = \"<group>\"; };\n\t\t67E644F65A43C7F826E18FD8 /* OCVScalar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVScalar.h; sourceTree = \"<group>\"; };\n\t\t67E64557F96063D5CEA27BD8 /* OCVFormatter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVFormatter.h; sourceTree = \"<group>\"; };\n\t\t67E645697CBF982455006B11 /* OCVInterpolationType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVInterpolationType.h; sourceTree = \"<group>\"; };\n\t\t67E645D09E183D239A916DD8 /* OCVOperation+Bitwise.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = \"OCVOperation+Bitwise.h\"; sourceTree = \"<group>\"; };\n\t\t67E6468D1AAEA71F119F0D71 /* OCVCascadeClassifier.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = OCVCascadeClassifier.mm; sourceTree = \"<group>\"; };\n\t\t67E6472C6307D5835B1D6C2B /* OCVUMat.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVUMat.m; sourceTree = \"<group>\"; };\n\t\t67E6475B436646A9C998F132 /* OCVOutputArrayable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVOutputArrayable.h; sourceTree = \"<group>\"; };\n\t\t67E6477274FCBEE3CD09E268 /* OCVOutputArray+Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = \"OCVOutputArray+Private.h\"; sourceTree = \"<group>\"; };\n\t\t67E6479DFFDCE9D7CDD430C6 /* OCVPoint+Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = \"OCVPoint+Private.h\"; sourceTree = \"<group>\"; };\n\t\t67E648280FA290221C92DE01 /* OCVGeometry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVGeometry.h; sourceTree = \"<group>\"; };\n\t\t67E64844505F01302289F309 /* OCVPoint+Private.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = \"OCVPoint+Private.mm\"; sourceTree = \"<group>\"; };\n\t\t67E648666F32797BEEC3B6EA /* OCVComplex.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVComplex.h; sourceTree = \"<group>\"; };\n\t\t67E648D9189DEE59AAC80A60 /* OCVTermCriteria.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVTermCriteria.m; sourceTree = \"<group>\"; };\n\t\t67E648DFC66EAC59D4B600A3 /* OCVInputArray+Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = \"OCVInputArray+Private.h\"; sourceTree = \"<group>\"; };\n\t\t67E649395264F917D36DA5F8 /* OCVMat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVMat.h; sourceTree = \"<group>\"; };\n\t\t67E649531633D7EAAED7D919 /* OCVImage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVImage.m; sourceTree = \"<group>\"; };\n\t\t67E64961AAA53DCD08D796FF /* OCVRect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVRect.h; sourceTree = \"<group>\"; };\n\t\t67E6496A76480256E3FB4A07 /* OCVRandomGenerator.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = OCVRandomGenerator.mm; sourceTree = \"<group>\"; };\n\t\t67E6497C6E78CCC90BBD6C90 /* OCVGeometry+Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = \"OCVGeometry+Private.h\"; sourceTree = \"<group>\"; };\n\t\t67E6498671B0BA4198A082B7 /* OCVSVD.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVSVD.h; sourceTree = \"<group>\"; };\n\t\t67E64998581748A53D9A7499 /* OCVRect.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVRect.m; sourceTree = \"<group>\"; };\n\t\t67E64998F2833EED2BBE6864 /* OCVPCA.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = OCVPCA.mm; sourceTree = \"<group>\"; };\n\t\t67E649DB3C2A73D13D8B1B5E /* OCVMatDataAllocator.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = OCVMatDataAllocator.mm; sourceTree = \"<group>\"; };\n\t\t67E64A15D96D2EC6DAB44E24 /* OCVComplex.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVComplex.m; sourceTree = \"<group>\"; };\n\t\t67E64A3342D4BBE76713F88D /* OCVSize.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVSize.h; sourceTree = \"<group>\"; };\n\t\t67E64A456D91C276BAF01CDD /* OCVImageOperation.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = OCVImageOperation.mm; sourceTree = \"<group>\"; };\n\t\t67E64A5773A5543773312E0B /* OCVLDA.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = OCVLDA.mm; sourceTree = \"<group>\"; };\n\t\t67E64A6EE9A0528CA003C494 /* OCVVector.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVVector.m; sourceTree = \"<group>\"; };\n\t\t67E64A96432DA475855E0594 /* OCVMatExpr.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = OCVMatExpr.mm; sourceTree = \"<group>\"; };\n\t\t67E64B051241494FBEEEE346 /* OCVOperation.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = OCVOperation.mm; sourceTree = \"<group>\"; };\n\t\t67E64B2FA4855E136039527B /* OCVVector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVVector.h; sourceTree = \"<group>\"; };\n\t\t67E64B302058F4898CAE4A1C /* OCVInputOutputArray.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = OCVInputOutputArray.mm; sourceTree = \"<group>\"; };\n\t\t67E64B35099EBE43C5F9A1C2 /* OCVMinimumMaximum.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVMinimumMaximum.m; sourceTree = \"<group>\"; };\n\t\t67E64B59E8EBB4139E44EF18 /* OCVFormatter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OCVFormatter.m; sourceTree = \"<group>\"; };\n\t\t67E64BC77E241D37FD032064 /* OCVOperation+Transform.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = \"OCVOperation+Transform.h\"; sourceTree = \"<group>\"; };\n\t\t67E64C22D6FBDAD91BACC516 /* OCVMatDataAllocator+Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = \"OCVMatDataAllocator+Private.h\"; sourceTree = \"<group>\"; };\n\t\t67E64C801A725FA1FE883678 /* OCVSize+Private.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = \"OCVSize+Private.mm\"; sourceTree = \"<group>\"; };\n\t\t67E64CCA2E906D9DCCA4F777 /* OCVPCA.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVPCA.h; sourceTree = \"<group>\"; };\n\t\t67E64CDCF01D111E40407448 /* OCVInputArray.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = OCVInputArray.mm; sourceTree = \"<group>\"; };\n\t\t67E64D0DAEBA852A31A6211E /* OCVTermCriteria.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVTermCriteria.h; sourceTree = \"<group>\"; };\n\t\t67E64D2A87A5D1389D935DF9 /* OCVColorConversionType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVColorConversionType.h; sourceTree = \"<group>\"; };\n\t\t67E64D6AF68715735A06CFEA /* OCVCascadeClassifier.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVCascadeClassifier.h; sourceTree = \"<group>\"; };\n\t\t67E64E8EDB850ADB26F646D7 /* OCVInputOutputArrayable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVInputOutputArrayable.h; sourceTree = \"<group>\"; };\n\t\t67E64F8DA13AAEAD6BB69D81 /* OCVMatExpr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVMatExpr.h; sourceTree = \"<group>\"; };\n\t\t67E64F947B816F412C783679 /* OCVUMat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVUMat.h; sourceTree = \"<group>\"; };\n\t\t67E64FA8CD286E50EC4C0D24 /* OCVLDA.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OCVLDA.h; sourceTree = \"<group>\"; };\n\t\t67E64FDA4612629A3D339C5D /* OCVSize+Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = \"OCVSize+Private.h\"; sourceTree = \"<group>\"; };\n/* End PBXFileReference section */\n\n/* Begin PBXFrameworksBuildPhase section */\n\t\t388B228821863CF000F24D45 /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t38C5B0C222948817009D2D68 /* LegoCV.framework in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t388B229021863CF000F24D45 /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t388B229421863CF000F24D45 /* LegoSwiftCV.framework in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t38B4D4AC1E2AA01F008AAAB0 /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t3897188F1E3643A100CB02B4 /* Accelerate.framework in Frameworks */,\n\t\t\t\t3897188D1E36439B00CB02B4 /* AssetsLibrary.framework in Frameworks */,\n\t\t\t\t389718891E362B8F00CB02B4 /* AVFoundation.framework in Frameworks */,\n\t\t\t\t386F2B821E3524D300320AEB /* CoreGraphics.framework in Frameworks */,\n\t\t\t\t389718911E3643A900CB02B4 /* CoreImage.framework in Frameworks */,\n\t\t\t\t3897188B1E362B9700CB02B4 /* CoreMedia.framework in Frameworks */,\n\t\t\t\t386F2B831E3524D300320AEB /* CoreVideo.framework in Frameworks */,\n\t\t\t\t389718931E3643B600CB02B4 /* QuartzCore.framework in Frameworks */,\n\t\t\t\t386F2B841E3524D300320AEB /* UIKit.framework in Frameworks */,\n\t\t\t\t381F15091E2AA1D50072F870 /* opencv2.framework in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t38B4D4B61E2AA01F008AAAB0 /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t38B4D4BA1E2AA01F008AAAB0 /* LegoCV.framework in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t38B4D4CD1E2AA110008AAAB0 /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t388B22A021863CF000F24D45 /* LegoSwiftCV.framework in Frameworks */,\n\t\t\t\t3848D3371E3F973A00379F4F /* opencv2.framework in Frameworks */,\n\t\t\t\t381F150B1E2AA22A0072F870 /* LegoCV.framework in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXFrameworksBuildPhase section */\n\n/* Begin PBXGroup section */\n\t\t381193C21E2D4BF600CF9D00 /* Wrapper */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t67E6430CF5BBDDCEDA0A11F2 /* Aruco */,\n\t\t\t\t67E64CE47F8AE8A39C02F013 /* BgSegm */,\n\t\t\t\t67E64E1D1A75A6F4A9339476 /* Core */,\n\t\t\t\t67E64CE4EA82E6C734B1F52D /* Cuda */,\n\t\t\t\t67E64EED9C49A3E9AB65659A /* Cvb */,\n\t\t\t\t67E64980D14E883E7E22B208 /* CvEnum */,\n\t\t\t\t67E6489A0A8802D9C1091CC8 /* Dnn */,\n\t\t\t\t67E64C26DEAEA4C3FE73C23D /* Face */,\n\t\t\t\t67E64B00E2A16E6D51A9E1D4 /* Features2D */,\n\t\t\t\t67E64B3E655A26032DBA8E9F /* Flann */,\n\t\t\t\t67E64FDEDEE3065E9A7F3BE8 /* Fuzzy */,\n\t\t\t\t67E641E369D94E7F5342E82E /* Geodetic */,\n\t\t\t\t67E6489EBEF439348E9D6BCB /* ImageProcessing */,\n\t\t\t\t67E64F6071CE207DF3EA0488 /* LineDescriptor */,\n\t\t\t\t67E64432A132FEAC78280869 /* ML */,\n\t\t\t\t67E643EB7AB5324B5B5C31E6 /* Ocl */,\n\t\t\t\t38C0D92D1E7D8CB500246963 /* ObjectDetection */,\n\t\t\t\t67E64F8EEC3A8B31F642A947 /* OCR */,\n\t\t\t\t67E64583A748B411350D5C74 /* Plot */,\n\t\t\t\t67E64D13E7D9F06FEE0F28C2 /* Reflection */,\n\t\t\t\t67E6447F53A9DEC7BE404618 /* Shape */,\n\t\t\t\t67E64585903D7373E7F2F056 /* Stitching */,\n\t\t\t\t67E645CBEE5F1F74150FA52E /* Structure */,\n\t\t\t\t67E64C50AE8C38E24986224C /* Superres */,\n\t\t\t\t67E64997F8B60292B0B7C8A3 /* Text */,\n\t\t\t\t67E64A5532EB81F2AC3EDB1B /* Tiff */,\n\t\t\t\t67E6478B610D2A7CF61C68FF /* Tracking */,\n\t\t\t\t67E64629FAD58DDACC835B32 /* Utilities */,\n\t\t\t\t67E645FD62A438314B2968ED /* UI */,\n\t\t\t\t389718741E361EA800CB02B4 /* Video */,\n\t\t\t\t67E640EEFD7D8239C61CDF92 /* VideoStab */,\n\t\t\t\t67E6455F762AF81DFA3C1EE6 /* VideoSurveillance */,\n\t\t\t\t67E64C67A5DA9CF04E6E96F7 /* XFeatures2D */,\n\t\t\t\t67E649CA095FB911CF039A14 /* XImgproc */,\n\t\t\t\t67E649E845FA0B83ABC44E56 /* XPhoto */,\n\t\t\t);\n\t\t\tpath = Wrapper;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t388B228221863C9600F24D45 /* LegoSwiftCV */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t388B228321863CA600F24D45 /* Core */,\n\t\t\t);\n\t\t\tpath = LegoSwiftCV;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t388B228321863CA600F24D45 /* Core */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t388B228421863CB500F24D45 /* Matrix.swift */,\n\t\t\t);\n\t\t\tpath = Core;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t388B228C21863CF000F24D45 /* LegoSwiftCV */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t388B228D21863CF000F24D45 /* LegoSwiftCV.h */,\n\t\t\t\t388B228E21863CF000F24D45 /* Info.plist */,\n\t\t\t);\n\t\t\tpath = LegoSwiftCV;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t388B229921863CF000F24D45 /* LegoSwiftCVTests */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t388B229A21863CF000F24D45 /* LegoSwiftCVTests.swift */,\n\t\t\t\t388B229C21863CF000F24D45 /* Info.plist */,\n\t\t\t);\n\t\t\tpath = LegoSwiftCVTests;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t389718661E36172200CB02B4 /* Recognition */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t3897186E1E3618BC00CB02B4 /* FaceDetector.swift */,\n\t\t\t\t3897186C1E3618B200CB02B4 /* FaceRecognizer.swift */,\n\t\t\t);\n\t\t\tpath = Recognition;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t389718671E36173100CB02B4 /* View Controllers */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t3897186A1E36176B00CB02B4 /* FaceRecognitionVC.swift */,\n\t\t\t\t389718681E36175E00CB02B4 /* LiveCameraVC.swift */,\n\t\t\t);\n\t\t\tpath = \"View Controllers\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t389718741E361EA800CB02B4 /* Video */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t38DB13EB1E366E0100822472 /* OCVVideo.h */,\n\t\t\t\t389718811E36250800CB02B4 /* OCVCamera+Private.h */,\n\t\t\t\t3897187D1E3621D000CB02B4 /* OCVCamera.h */,\n\t\t\t\t3897187E1E3621D000CB02B4 /* OCVCamera.mm */,\n\t\t\t\t389718791E361F0600CB02B4 /* OCVPhotoCamera.h */,\n\t\t\t\t3897187A1E361F0600CB02B4 /* OCVPhotoCamera.mm */,\n\t\t\t\t389718751E361ECC00CB02B4 /* OCVVideoCamera.h */,\n\t\t\t\t389718761E361ECC00CB02B4 /* OCVVideoCamera.mm */,\n\t\t\t);\n\t\t\tpath = Video;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t3898710F1E6F30F700020CFB /* Persistence */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t389871181E6F32BE00020CFB /* OCVPersistence.h */,\n\t\t\t\t389871101E6F311400020CFB /* OCVFileStorage.h */,\n\t\t\t\t389871111E6F311400020CFB /* OCVFileStorage.mm */,\n\t\t\t\t3898711B1E6F3CB900020CFB /* OCVFileStorageFormatDescriptor.h */,\n\t\t\t\t3898711C1E6F3CB900020CFB /* OCVFileStorageFormatDescriptor.m */,\n\t\t\t\t389871141E6F315A00020CFB /* OCVFileNode.h */,\n\t\t\t\t389871151E6F315A00020CFB /* OCVFileNode.mm */,\n\t\t\t\t3898711A1E6F393F00020CFB /* OCVSerializable.h */,\n\t\t\t);\n\t\t\tpath = Persistence;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t38B4D4A61E2AA01F008AAAB0 = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t388B228221863C9600F24D45 /* LegoSwiftCV */,\n\t\t\t\t38B4D4B21E2AA01F008AAAB0 /* LegoCV */,\n\t\t\t\t38B4D4BD1E2AA01F008AAAB0 /* LegoCVTests */,\n\t\t\t\t38B4D4D11E2AA110008AAAB0 /* FaceDetection */,\n\t\t\t\t38DDD2482181022F007B999D /* Playgrounds */,\n\t\t\t\t388B228C21863CF000F24D45 /* LegoSwiftCV */,\n\t\t\t\t388B229921863CF000F24D45 /* LegoSwiftCVTests */,\n\t\t\t\t38B4D4B11E2AA01F008AAAB0 /* Products */,\n\t\t\t\t38B4D4CA1E2AA090008AAAB0 /* Frameworks */,\n\t\t\t);\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t38B4D4B11E2AA01F008AAAB0 /* Products */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t38B4D4B01E2AA01F008AAAB0 /* LegoCV.framework */,\n\t\t\t\t38B4D4B91E2AA01F008AAAB0 /* LegoCVTests.xctest */,\n\t\t\t\t38B4D4D01E2AA110008AAAB0 /* FaceDetection.app */,\n\t\t\t\t388B228B21863CF000F24D45 /* LegoSwiftCV.framework */,\n\t\t\t\t388B229321863CF000F24D45 /* LegoSwiftCVTests.xctest */,\n\t\t\t);\n\t\t\tname = Products;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t38B4D4B21E2AA01F008AAAB0 /* LegoCV */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t381193C21E2D4BF600CF9D00 /* Wrapper */,\n\t\t\t\t38B4D4B31E2AA01F008AAAB0 /* LegoCV.h */,\n\t\t\t\t38B4D4B41E2AA01F008AAAB0 /* Info.plist */,\n\t\t\t);\n\t\t\tpath = LegoCV;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t38B4D4BD1E2AA01F008AAAB0 /* LegoCVTests */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t38B4D4BE1E2AA01F008AAAB0 /* LegoCVTests.swift */,\n\t\t\t\t38B4D4C01E2AA01F008AAAB0 /* Info.plist */,\n\t\t\t);\n\t\t\tpath = LegoCVTests;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t38B4D4CA1E2AA090008AAAB0 /* Frameworks */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t389718921E3643B600CB02B4 /* QuartzCore.framework */,\n\t\t\t\t389718901E3643A900CB02B4 /* CoreImage.framework */,\n\t\t\t\t3897188E1E3643A100CB02B4 /* Accelerate.framework */,\n\t\t\t\t3897188C1E36439B00CB02B4 /* AssetsLibrary.framework */,\n\t\t\t\t3897188A1E362B9700CB02B4 /* CoreMedia.framework */,\n\t\t\t\t389718881E362B8F00CB02B4 /* AVFoundation.framework */,\n\t\t\t\t386F2B7F1E3524D300320AEB /* CoreGraphics.framework */,\n\t\t\t\t386F2B801E3524D300320AEB /* CoreVideo.framework */,\n\t\t\t\t386F2B811E3524D300320AEB /* UIKit.framework */,\n\t\t\t\t381F15081E2AA1D50072F870 /* opencv2.framework */,\n\t\t\t);\n\t\t\tname = Frameworks;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t38B4D4D11E2AA110008AAAB0 /* FaceDetection */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t389718661E36172200CB02B4 /* Recognition */,\n\t\t\t\t389718671E36173100CB02B4 /* View Controllers */,\n\t\t\t\t38B4D4D21E2AA110008AAAB0 /* AppDelegate.swift */,\n\t\t\t\t38B4D4D61E2AA110008AAAB0 /* Main.storyboard */,\n\t\t\t\t38B4D4D91E2AA111008AAAB0 /* Assets.xcassets */,\n\t\t\t\t38B4D4DB1E2AA111008AAAB0 /* LaunchScreen.storyboard */,\n\t\t\t\t38B4D4DE1E2AA111008AAAB0 /* Info.plist */,\n\t\t\t);\n\t\t\tpath = FaceDetection;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t38C0D92D1E7D8CB500246963 /* ObjectDetection */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t38C0D92E1E7D8D8200246963 /* OCVBaseCascadeClassifier.h */,\n\t\t\t\t38C0D92F1E7D8D8200246963 /* OCVBaseCascadeClassifier.m */,\n\t\t\t\t67E64D6AF68715735A06CFEA /* OCVCascadeClassifier.h */,\n\t\t\t\t67E6468D1AAEA71F119F0D71 /* OCVCascadeClassifier.mm */,\n\t\t\t\t38C0D9321E7D8EEC00246963 /* OCVCascadeClassifierResult.h */,\n\t\t\t\t38C0D9331E7D8EEC00246963 /* OCVCascadeClassifierResult.m */,\n\t\t\t\t38C0D9361E7D8FFC00246963 /* OCVCascadeClassifierOptions.h */,\n\t\t\t\t38C0D9371E7D8FFC00246963 /* OCVCascadeClassifierOptions.m */,\n\t\t\t);\n\t\t\tpath = ObjectDetection;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t38DDD2482181022F007B999D /* Playgrounds */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t38DDD2492181033B007B999D /* MatrixOperations.playground */,\n\t\t\t);\n\t\t\tpath = Playgrounds;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t67E640EEFD7D8239C61CDF92 /* VideoStab */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t383BC5621E30009D002EA7A1 /* OCVVideoCaptureFrameSource.h */,\n\t\t\t\t383BC5631E30009D002EA7A1 /* OCVVideoCaptureFrameSource.m */,\n\t\t\t\t383BC5661E3000A4002EA7A1 /* OCVVideoFrameSource.h */,\n\t\t\t\t383BC5671E3000A4002EA7A1 /* OCVVideoFrameSource.m */,\n\t\t\t\t383BC56A1E3000AD002EA7A1 /* OCVGaussianMotionFilter.h */,\n\t\t\t\t383BC56B1E3000AD002EA7A1 /* OCVGaussianMotionFilter.m */,\n\t\t\t\t383BC56E1E3000B6002EA7A1 /* OCVOnePassStabilizer.h */,\n\t\t\t\t383BC56F1E3000B6002EA7A1 /* OCVOnePassStabilizer.m */,\n\t\t\t\t383BC5721E3000BE002EA7A1 /* OCVTwoPassStabilizer.h */,\n\t\t\t\t383BC5731E3000BE002EA7A1 /* OCVTwoPassStabilizer.m */,\n\t\t\t);\n\t\t\tpath = VideoStab;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t67E641E369D94E7F5342E82E /* Geodetic */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t383BC4521E2FFC18002EA7A1 /* OCVGeodeticCoordinate.h */,\n\t\t\t\t383BC4531E2FFC18002EA7A1 /* OCVGeodeticCoordinate.m */,\n\t\t\t);\n\t\t\tpath = Geodetic;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t67E6430CF5BBDDCEDA0A11F2 /* Aruco */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t383BC4221E2FFB32002EA7A1 /* OCVCharucoBoard.h */,\n\t\t\t\t383BC4231E2FFB32002EA7A1 /* OCVCharucoBoard.m */,\n\t\t\t);\n\t\t\tpath = Aruco;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t67E6435957E1035A51337C83 /* Operations */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t67E6438675C6C73B77B08385 /* OCVOperation.h */,\n\t\t\t\t67E64B051241494FBEEEE346 /* OCVOperation.mm */,\n\t\t\t\t67E645D09E183D239A916DD8 /* OCVOperation+Bitwise.h */,\n\t\t\t\t67E6425526F810208AA6B50E /* OCVOperation+Bitwise.mm */,\n\t\t\t\t67E64BC77E241D37FD032064 /* OCVOperation+Transform.h */,\n\t\t\t\t67E644AF37D67E1163B102A4 /* OCVOperation+Transform.mm */,\n\t\t\t\t67E644438826EEE78DA5FA73 /* OCVMinimumMaximum.h */,\n\t\t\t\t67E64B35099EBE43C5F9A1C2 /* OCVMinimumMaximum.m */,\n\t\t\t\t67E64D0DAEBA852A31A6211E /* OCVTermCriteria.h */,\n\t\t\t\t67E648D9189DEE59AAC80A60 /* OCVTermCriteria.m */,\n\t\t\t);\n\t\t\tpath = Operations;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t67E643EB7AB5324B5B5C31E6 /* Ocl */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t383BC4A21E2FFDDA002EA7A1 /* OCVDevice.h */,\n\t\t\t\t383BC4A31E2FFDDA002EA7A1 /* OCVDevice.m */,\n\t\t\t\t383BC4A61E2FFDE5002EA7A1 /* OCVQueue.h */,\n\t\t\t\t383BC4A71E2FFDE5002EA7A1 /* OCVQueue.m */,\n\t\t\t\t383BC4AA1E2FFDEC002EA7A1 /* OCVKernel.h */,\n\t\t\t\t383BC4AB1E2FFDEC002EA7A1 /* OCVKernel.m */,\n\t\t\t\t383BC4AE1E2FFDF6002EA7A1 /* OCVImage2D.h */,\n\t\t\t\t383BC4AF1E2FFDF6002EA7A1 /* OCVImage2D.m */,\n\t\t\t\t383BC4B21E2FFE06002EA7A1 /* OCVKernelConfiguration.h */,\n\t\t\t\t383BC4B31E2FFE06002EA7A1 /* OCVKernelConfiguration.m */,\n\t\t\t\t383BC4B61E2FFE13002EA7A1 /* OCVPlatformInfo.h */,\n\t\t\t\t383BC4B71E2FFE13002EA7A1 /* OCVPlatformInfo.m */,\n\t\t\t\t383BC4BA1E2FFE1C002EA7A1 /* OCVProgramSource.h */,\n\t\t\t\t383BC4BB1E2FFE1C002EA7A1 /* OCVProgramSource.m */,\n\t\t\t);\n\t\t\tpath = Ocl;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t67E64432A132FEAC78280869 /* ML */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t67E6491ED1C71A0C715D8719 /* Enum */,\n\t\t\t\t67E64A1F522EAB057EB23322 /* Structure */,\n\t\t\t\t383BC45E1E2FFC6F002EA7A1 /* OCVBoost.h */,\n\t\t\t\t383BC45F1E2FFC6F002EA7A1 /* OCVBoost.m */,\n\t\t\t\t383BC4621E2FFC7B002EA7A1 /* OCVANNMLP.h */,\n\t\t\t\t383BC4631E2FFC7B002EA7A1 /* OCVANNMLP.m */,\n\t\t\t\t383BC4661E2FFC8F002EA7A1 /* OCVDTree.h */,\n\t\t\t\t383BC4671E2FFC8F002EA7A1 /* OCVDTree.m */,\n\t\t\t\t383BC46A1E2FFCA2002EA7A1 /* OCVEM.h */,\n\t\t\t\t383BC46B1E2FFCA2002EA7A1 /* OCVEM.m */,\n\t\t\t\t383BC46E1E2FFCAC002EA7A1 /* OCVKNearest.h */,\n\t\t\t\t383BC46F1E2FFCAC002EA7A1 /* OCVKNearest.m */,\n\t\t\t\t383BC4721E2FFCB5002EA7A1 /* OCVLogisticRegression.h */,\n\t\t\t\t383BC4731E2FFCB5002EA7A1 /* OCVLogisticRegression.m */,\n\t\t\t\t383BC4761E2FFCC9002EA7A1 /* OCVNormalBayesClassifier.h */,\n\t\t\t\t383BC4771E2FFCC9002EA7A1 /* OCVNormalBayesClassifier.m */,\n\t\t\t\t383BC47A1E2FFCD3002EA7A1 /* OCVRTree.h */,\n\t\t\t\t383BC47B1E2FFCD3002EA7A1 /* OCVRTree.m */,\n\t\t\t\t383BC47E1E2FFCE1002EA7A1 /* OCVStatModelExtensions.h */,\n\t\t\t\t383BC47F1E2FFCE1002EA7A1 /* OCVStatModelExtensions.m */,\n\t\t\t\t383BC4821E2FFCEA002EA7A1 /* OCVSVM.h */,\n\t\t\t\t383BC4831E2FFCEA002EA7A1 /* OCVSVM.m */,\n\t\t\t\t383BC4861E2FFCF2002EA7A1 /* OCVTrainData.h */,\n\t\t\t\t383BC4871E2FFCF2002EA7A1 /* OCVTrainData.m */,\n\t\t\t);\n\t\t\tpath = ML;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t67E6447F53A9DEC7BE404618 /* Shape */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t383BC4D61E2FFEC0002EA7A1 /* OCVAffineTransformer.h */,\n\t\t\t\t383BC4D71E2FFEC0002EA7A1 /* OCVAffineTransformer.m */,\n\t\t\t\t383BC4DA1E2FFED0002EA7A1 /* OCVChiHistogramCostExtractor.h */,\n\t\t\t\t383BC4DB1E2FFED0002EA7A1 /* OCVChiHistogramCostExtractor.m */,\n\t\t\t\t383BC4DE1E2FFEDE002EA7A1 /* OCVEMDHistogramCostExtractor.h */,\n\t\t\t\t383BC4DF1E2FFEDE002EA7A1 /* OCVEMDHistogramCostExtractor.m */,\n\t\t\t\t383BC4E21E2FFEEC002EA7A1 /* OCVEMDL1HistogramCostExtractor.h */,\n\t\t\t\t383BC4E31E2FFEEC002EA7A1 /* OCVEMDL1HistogramCostExtractor.m */,\n\t\t\t\t383BC4E61E2FFEF8002EA7A1 /* OCVHausdorffDistanceExtractor.h */,\n\t\t\t\t383BC4E71E2FFEF8002EA7A1 /* OCVHausdorffDistanceExtractor.m */,\n\t\t\t\t383BC4EA1E2FFF08002EA7A1 /* OCVHistogramCostExtractor.h */,\n\t\t\t\t383BC4EB1E2FFF08002EA7A1 /* OCVHistogramCostExtractor.m */,\n\t\t\t\t383BC4EE1E2FFF14002EA7A1 /* OCVNormHistogramCostExtractor.h */,\n\t\t\t\t383BC4EF1E2FFF14002EA7A1 /* OCVNormHistogramCostExtractor.m */,\n\t\t\t\t383BC4F21E2FFF23002EA7A1 /* OCVShapeContextDistanceExtractor.h */,\n\t\t\t\t383BC4F31E2FFF23002EA7A1 /* OCVShapeContextDistanceExtractor.m */,\n\t\t\t\t383BC4F61E2FFF39002EA7A1 /* OCVShapeDistanceExtractor.h */,\n\t\t\t\t383BC4F71E2FFF39002EA7A1 /* OCVShapeDistanceExtractor.m */,\n\t\t\t\t383BC4FA1E2FFF44002EA7A1 /* OCVThinPlateSplineShapeTransformer.h */,\n\t\t\t\t383BC4FB1E2FFF44002EA7A1 /* OCVThinPlateSplineShapeTransformer.m */,\n\t\t\t);\n\t\t\tpath = Shape;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t67E6455F762AF81DFA3C1EE6 /* VideoSurveillance */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t383BC5761E3000D0002EA7A1 /* OCVBackgroundSubtractor.h */,\n\t\t\t\t383BC5771E3000D0002EA7A1 /* OCVBackgroundSubtractor.m */,\n\t\t\t\t383BC57A1E3000DA002EA7A1 /* OCVBackgroundSubtractorKNN.h */,\n\t\t\t\t383BC57B1E3000DA002EA7A1 /* OCVBackgroundSubtractorKNN.m */,\n\t\t\t\t383BC57E1E3000E3002EA7A1 /* OCVBackgroundSubtractorMOG2.h */,\n\t\t\t\t383BC57F1E3000E3002EA7A1 /* OCVBackgroundSubtractorMOG2.m */,\n\t\t\t);\n\t\t\tpath = VideoSurveillance;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t67E64583A748B411350D5C74 /* Plot */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t383BC4CE1E2FFE90002EA7A1 /* OCVPlot.h */,\n\t\t\t\t383BC4CF1E2FFE90002EA7A1 /* OCVPlot.m */,\n\t\t\t);\n\t\t\tpath = Plot;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t67E64585903D7373E7F2F056 /* Stitching */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t383BC4FE1E2FFF5A002EA7A1 /* OCVFeaturesFinder.h */,\n\t\t\t\t383BC4FF1E2FFF5A002EA7A1 /* OCVFeaturesFinder.m */,\n\t\t\t\t383BC5021E2FFF66002EA7A1 /* OCVCompressedRectilinearWarper.h */,\n\t\t\t\t383BC5031E2FFF66002EA7A1 /* OCVCompressedRectilinearWarper.m */,\n\t\t\t\t383BC5061E2FFF6F002EA7A1 /* OCVFisheyeWarper.h */,\n\t\t\t\t383BC5071E2FFF6F002EA7A1 /* OCVFisheyeWarper.m */,\n\t\t\t\t383BC50A1E2FFF77002EA7A1 /* OCVMercatorWarper.h */,\n\t\t\t\t383BC50B1E2FFF77002EA7A1 /* OCVMercatorWarper.m */,\n\t\t\t\t383BC50E1E2FFF82002EA7A1 /* OCVOrbFeaturesFinder.h */,\n\t\t\t\t383BC50F1E2FFF82002EA7A1 /* OCVOrbFeaturesFinder.m */,\n\t\t\t\t383BC5121E2FFF8F002EA7A1 /* OCVPaniniPortraitWarper.h */,\n\t\t\t\t383BC5131E2FFF8F002EA7A1 /* OCVPaniniPortraitWarper.m */,\n\t\t\t\t383BC5161E2FFF99002EA7A1 /* OCVPaniniWarper.h */,\n\t\t\t\t383BC5171E2FFF99002EA7A1 /* OCVPaniniWarper.m */,\n\t\t\t\t383BC51A1E2FFFA0002EA7A1 /* OCVPlaneWarper.h */,\n\t\t\t\t383BC51B1E2FFFA0002EA7A1 /* OCVPlaneWarper.m */,\n\t\t\t\t383BC51E1E2FFFAA002EA7A1 /* OCVSphericalWarper.h */,\n\t\t\t\t383BC51F1E2FFFAA002EA7A1 /* OCVSphericalWarper.m */,\n\t\t\t\t383BC5221E2FFFB5002EA7A1 /* OCVStereographicWarper.h */,\n\t\t\t\t383BC5231E2FFFB5002EA7A1 /* OCVStereographicWarper.m */,\n\t\t\t\t383BC5261E2FFFBD002EA7A1 /* OCVSticher.h */,\n\t\t\t\t383BC5271E2FFFBD002EA7A1 /* OCVSticher.m */,\n\t\t\t\t383BC52A1E2FFFCE002EA7A1 /* OCVTransverseMercatorWarper.h */,\n\t\t\t\t383BC52B1E2FFFCE002EA7A1 /* OCVTransverseMercatorWarper.m */,\n\t\t\t\t383BC52E1E2FFFD9002EA7A1 /* OCVWarperCreator.h */,\n\t\t\t\t383BC52F1E2FFFD9002EA7A1 /* OCVWarperCreator.m */,\n\t\t\t);\n\t\t\tpath = Stitching;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t67E645CBEE5F1F74150FA52E /* Structure */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t383BC5321E2FFFF6002EA7A1 /* OCVRgb.h */,\n\t\t\t\t383BC5331E2FFFF6002EA7A1 /* OCVRgb.m */,\n\t\t\t\t383BC5361E2FFFFC002EA7A1 /* OCVRgba.h */,\n\t\t\t\t383BC5371E2FFFFC002EA7A1 /* OCVRgba.m */,\n\t\t\t);\n\t\t\tpath = Structure;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t67E645FD62A438314B2968ED /* UI */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t383BC5821E3000F7002EA7A1 /* OCVHistogramBox.h */,\n\t\t\t\t383BC5831E3000F7002EA7A1 /* OCVHistogramBox.m */,\n\t\t\t\t383BC5861E3000FF002EA7A1 /* OCVHistogramViewer.h */,\n\t\t\t\t383BC5871E3000FF002EA7A1 /* OCVHistogramViewer.m */,\n\t\t\t);\n\t\t\tpath = UI;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t67E64629FAD58DDACC835B32 /* Utilities */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t383BC40E1E2FF974002EA7A1 /* OCVObject.h */,\n\t\t\t\t383BC40F1E2FF974002EA7A1 /* OCVObject.m */,\n\t\t\t\t386F2B851E352A4800320AEB /* OCVPointerObject.h */,\n\t\t\t\t386F2B861E352A4800320AEB /* OCVPointerObject.m */,\n\t\t\t\t389718831E36263A00CB02B4 /* OCVReferenceObject.h */,\n\t\t\t\t389718841E36263A00CB02B4 /* OCVReferenceObject.m */,\n\t\t\t);\n\t\t\tpath = Utilities;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t67E64745979703A472DBFFBC /* Private */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t67E6497C6E78CCC90BBD6C90 /* OCVGeometry+Private.h */,\n\t\t\t\t67E648DFC66EAC59D4B600A3 /* OCVInputArray+Private.h */,\n\t\t\t\t67E6438D1CE78C8D148D0DE8 /* OCVInputOutputArray+Private.h */,\n\t\t\t\t67E64C22D6FBDAD91BACC516 /* OCVMatDataAllocator+Private.h */,\n\t\t\t\t67E6477274FCBEE3CD09E268 /* OCVOutputArray+Private.h */,\n\t\t\t\t67E6479DFFDCE9D7CDD430C6 /* OCVPoint+Private.h */,\n\t\t\t\t67E64844505F01302289F309 /* OCVPoint+Private.mm */,\n\t\t\t\t67E641E5AE5841744443558D /* OCVRect+Private.mm */,\n\t\t\t\t67E6422A492670AF3DC695D8 /* OCVRect+Private.h */,\n\t\t\t\t67E64C801A725FA1FE883678 /* OCVSize+Private.mm */,\n\t\t\t\t67E64FDA4612629A3D339C5D /* OCVSize+Private.h */,\n\t\t\t);\n\t\t\tpath = Private;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t67E6478B610D2A7CF61C68FF /* Tracking */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t383BC55A1E300078002EA7A1 /* OCVMultiTracker.h */,\n\t\t\t\t383BC55B1E300078002EA7A1 /* OCVMultiTracker.m */,\n\t\t\t\t383BC55E1E30007F002EA7A1 /* OCVTracker.h */,\n\t\t\t\t383BC55F1E30007F002EA7A1 /* OCVTracker.m */,\n\t\t\t);\n\t\t\tpath = Tracking;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t67E647D357B7BD627D7D29B4 /* Mat */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t67E642E169EC045927288E82 /* OCVMatDataAllocator.h */,\n\t\t\t\t67E649DB3C2A73D13D8B1B5E /* OCVMatDataAllocator.mm */,\n\t\t\t\t67E64F8DA13AAEAD6BB69D81 /* OCVMatExpr.h */,\n\t\t\t\t67E64A96432DA475855E0594 /* OCVMatExpr.mm */,\n\t\t\t\t67E649395264F917D36DA5F8 /* OCVMat.h */,\n\t\t\t\t67E641FBE65950718BDBAC73 /* OCVMat.mm */,\n\t\t\t\t67E64F947B816F412C783679 /* OCVUMat.h */,\n\t\t\t\t67E6472C6307D5835B1D6C2B /* OCVUMat.m */,\n\t\t\t);\n\t\t\tpath = Mat;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t67E6489A0A8802D9C1091CC8 /* Dnn */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t383BC4321E2FFB89002EA7A1 /* OCVImporter.h */,\n\t\t\t\t383BC4331E2FFB89002EA7A1 /* OCVImporter.m */,\n\t\t\t\t383BC42E1E2FFB78002EA7A1 /* OCVNet.h */,\n\t\t\t\t383BC42F1E2FFB78002EA7A1 /* OCVNet.m */,\n\t\t\t);\n\t\t\tpath = Dnn;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t67E6489EBEF439348E9D6BCB /* ImageProcessing */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t38E3EA201E6E305C00BCC097 /* OCVImageProcessing.h */,\n\t\t\t\t67E64D2A87A5D1389D935DF9 /* OCVColorConversionType.h */,\n\t\t\t\t67E645697CBF982455006B11 /* OCVInterpolationType.h */,\n\t\t\t\t67E6439A810BAF9EB4F3D2EB /* OCVImageOperation.h */,\n\t\t\t\t67E64A456D91C276BAF01CDD /* OCVImageOperation.mm */,\n\t\t\t\t67E64391B0744DE769F98B1C /* OCVImage.h */,\n\t\t\t\t67E649531633D7EAAED7D919 /* OCVImage.m */,\n\t\t\t\t38C0D90D1E7D6D2000246963 /* OCVImageTypes.h */,\n\t\t\t\t38C0D90F1E7D735F00246963 /* OCVGeneralizedHoughBallard.h */,\n\t\t\t\t38C0D9101E7D735F00246963 /* OCVGeneralizedHoughBallard.m */,\n\t\t\t\t38C0D9131E7D73D100246963 /* OCVGeneralizedHough.h */,\n\t\t\t\t38C0D9141E7D73D100246963 /* OCVGeneralizedHough.m */,\n\t\t\t\t38C0D9191E7D764200246963 /* OCVGeneralizedHoughGuil.h */,\n\t\t\t\t38C0D91A1E7D764200246963 /* OCVGeneralizedHoughGuil.m */,\n\t\t\t\t38C0D91D1E7D771300246963 /* OCVContrastLimitedAdaptiveHistogramEqualization.h */,\n\t\t\t\t38C0D91E1E7D771300246963 /* OCVContrastLimitedAdaptiveHistogramEqualization.m */,\n\t\t\t\t38C0D9211E7D77B500246963 /* OCVSubdiv2D.h */,\n\t\t\t\t38C0D9221E7D77B500246963 /* OCVSubdiv2D.m */,\n\t\t\t\t38C0D9291E7D7EAC00246963 /* OCVLineSegmentDetector.h */,\n\t\t\t\t38C0D92A1E7D7EAC00246963 /* OCVLineSegmentDetector.m */,\n\t\t\t);\n\t\t\tpath = ImageProcessing;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t67E648B3CACE63D40EBA303E /* Base */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t38C0D9171E7D747700246963 /* OCVArrayables.h */,\n\t\t\t\t67E648666F32797BEEC3B6EA /* OCVComplex.h */,\n\t\t\t\t67E64A15D96D2EC6DAB44E24 /* OCVComplex.m */,\n\t\t\t\t67E642DCCBA8EF4A5E2348FB /* OCVEdges.h */,\n\t\t\t\t67E644F65A43C7F826E18FD8 /* OCVScalar.h */,\n\t\t\t\t67E64961AAA53DCD08D796FF /* OCVRect.h */,\n\t\t\t\t67E64998581748A53D9A7499 /* OCVRect.m */,\n\t\t\t\t67E640401947EB92C031F274 /* OCVScalar.m */,\n\t\t\t\t67E64A3342D4BBE76713F88D /* OCVSize.h */,\n\t\t\t\t67E643ED8E6AE25117DB09C6 /* OCVPoint.h */,\n\t\t\t\t67E64B2FA4855E136039527B /* OCVVector.h */,\n\t\t\t\t67E64A6EE9A0528CA003C494 /* OCVVector.m */,\n\t\t\t\t67E6446098E944BFA71C69A9 /* OCVAlgorithm.h */,\n\t\t\t\t67E6440F9430BD2FE92FB3E3 /* OCVAlgorithm.m */,\n\t\t\t\t67E648280FA290221C92DE01 /* OCVGeometry.h */,\n\t\t\t\t67E641C573728BB0D14DBD41 /* OCVInputArrayable.h */,\n\t\t\t\t67E6414DA192C455EE9F6374 /* OCVInputArray.h */,\n\t\t\t\t67E64CDCF01D111E40407448 /* OCVInputArray.mm */,\n\t\t\t\t67E64E8EDB850ADB26F646D7 /* OCVInputOutputArrayable.h */,\n\t\t\t\t67E6416E34EDDC521F465DDE /* OCVInputOutputArray.h */,\n\t\t\t\t67E64B302058F4898CAE4A1C /* OCVInputOutputArray.mm */,\n\t\t\t\t67E642642A6333F29DD824AA /* OCVOutputArray.h */,\n\t\t\t\t67E6434323FF82193E9898C0 /* OCVOutputArray.mm */,\n\t\t\t\t67E6475B436646A9C998F132 /* OCVOutputArrayable.h */,\n\t\t\t\t67E64557F96063D5CEA27BD8 /* OCVFormatter.h */,\n\t\t\t\t67E64B59E8EBB4139E44EF18 /* OCVFormatter.m */,\n\t\t\t\t67E64459E0C63EA4D9627050 /* OCVTypes.h */,\n\t\t\t);\n\t\t\tpath = Base;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t67E6491ED1C71A0C715D8719 /* Enum */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t383BC48A1E2FFD0A002EA7A1 /* OCVBoostType.h */,\n\t\t\t\t383BC48B1E2FFD0A002EA7A1 /* OCVBoostType.m */,\n\t\t\t\t383BC48E1E2FFD13002EA7A1 /* OCVVarType.h */,\n\t\t\t\t383BC48F1E2FFD13002EA7A1 /* OCVVarType.m */,\n\t\t\t);\n\t\t\tpath = Enum;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t67E64980D14E883E7E22B208 /* CvEnum */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t383BC41E1E2FFB1D002EA7A1 /* OCVStorageOperationType.h */,\n\t\t\t\t383BC41F1E2FFB1D002EA7A1 /* OCVStorageOperationType.m */,\n\t\t\t);\n\t\t\tpath = CvEnum;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t67E64997F8B60292B0B7C8A3 /* Text */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t383BC5421E300033002EA7A1 /* OCVERFilter.h */,\n\t\t\t\t383BC5431E300033002EA7A1 /* OCVERFilter.m */,\n\t\t\t\t383BC5461E30003C002EA7A1 /* OCVERFilterNM1.h */,\n\t\t\t\t383BC5471E30003C002EA7A1 /* OCVERFilterNM1.m */,\n\t\t\t\t383BC54A1E300044002EA7A1 /* OCVERFilterNM2.h */,\n\t\t\t\t383BC54B1E300044002EA7A1 /* OCVERFilterNM2.m */,\n\t\t\t\t383BC54E1E30004F002EA7A1 /* OCVERStat.h */,\n\t\t\t\t383BC54F1E30004F002EA7A1 /* OCVERStat.m */,\n\t\t\t);\n\t\t\tpath = Text;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t67E649CA095FB911CF039A14 /* XImgproc */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t383BC5B21E30017C002EA7A1 /* OCVDTFilter.h */,\n\t\t\t\t383BC5B31E30017C002EA7A1 /* OCVDTFilter.m */,\n\t\t\t);\n\t\t\tpath = XImgproc;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t67E649E845FA0B83ABC44E56 /* XPhoto */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t383BC5B61E30018A002EA7A1 /* OCVXPhoto.h */,\n\t\t\t\t383BC5B71E30018A002EA7A1 /* OCVXPhoto.m */,\n\t\t\t);\n\t\t\tpath = XPhoto;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t67E64A1F522EAB057EB23322 /* Structure */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t383BC4921E2FFD2C002EA7A1 /* OCVMCvDTreeNode.h */,\n\t\t\t\t383BC4931E2FFD2C002EA7A1 /* OCVMCvDTreeNode.m */,\n\t\t\t\t383BC4961E2FFD39002EA7A1 /* OCVMCvDTreeSplit.h */,\n\t\t\t\t383BC4971E2FFD39002EA7A1 /* OCVMCvDTreeSplit.m */,\n\t\t\t\t383BC49A1E2FFD4B002EA7A1 /* OCVMCvDTreeSplitMOrder.h */,\n\t\t\t\t383BC49B1E2FFD4B002EA7A1 /* OCVMCvDTreeSplitMOrder.m */,\n\t\t\t\t383BC49E1E2FFD56002EA7A1 /* OCVMCvParamGrid.h */,\n\t\t\t\t383BC49F1E2FFD56002EA7A1 /* OCVMCvParamGrid.m */,\n\t\t\t);\n\t\t\tpath = Structure;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t67E64A5532EB81F2AC3EDB1B /* Tiff */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t383BC5521E300062002EA7A1 /* OCVTiffWriter.h */,\n\t\t\t\t383BC5531E300062002EA7A1 /* OCVTiffWriter.m */,\n\t\t\t\t383BC5561E30006B002EA7A1 /* OCVTileTiffWriter.h */,\n\t\t\t\t383BC5571E30006B002EA7A1 /* OCVTileTiffWriter.m */,\n\t\t\t);\n\t\t\tpath = Tiff;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t67E64A56382886DE40147DB2 /* Algorithms */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t67E64CCA2E906D9DCCA4F777 /* OCVPCA.h */,\n\t\t\t\t67E64998F2833EED2BBE6864 /* OCVPCA.mm */,\n\t\t\t\t67E6498671B0BA4198A082B7 /* OCVSVD.h */,\n\t\t\t\t67E6448BB8EFC6BEBF51BA3C /* OCVSVD.mm */,\n\t\t\t\t67E64FA8CD286E50EC4C0D24 /* OCVLDA.h */,\n\t\t\t\t67E64A5773A5543773312E0B /* OCVLDA.mm */,\n\t\t\t\t67E643FED267103AF823F80A /* OCVRandomGenerator.h */,\n\t\t\t\t67E6496A76480256E3FB4A07 /* OCVRandomGenerator.mm */,\n\t\t\t);\n\t\t\tpath = Algorithms;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t67E64B00E2A16E6D51A9E1D4 /* Features2D */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t383BC4461E2FFBD5002EA7A1 /* OCVFeature2D.h */,\n\t\t\t\t383BC4471E2FFBD5002EA7A1 /* OCVFeature2D.m */,\n\t\t\t);\n\t\t\tpath = Features2D;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t67E64B3E655A26032DBA8E9F /* Flann */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t383BC44A1E2FFBE4002EA7A1 /* OCVIndex.h */,\n\t\t\t\t383BC44B1E2FFBE4002EA7A1 /* OCVIndex.m */,\n\t\t\t);\n\t\t\tpath = Flann;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t67E64C26DEAEA4C3FE73C23D /* Face */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t383BC4361E2FFB9A002EA7A1 /* OCVEigenFaceRecognizer.h */,\n\t\t\t\t383BC4371E2FFB9A002EA7A1 /* OCVEigenFaceRecognizer.m */,\n\t\t\t\t383BC43A1E2FFBA6002EA7A1 /* OCVFaceRecognizer.h */,\n\t\t\t\t383BC43B1E2FFBA6002EA7A1 /* OCVFaceRecognizer.m */,\n\t\t\t\t383BC43E1E2FFBB3002EA7A1 /* OCVFisherFaceRecognizer.h */,\n\t\t\t\t383BC43F1E2FFBB3002EA7A1 /* OCVFisherFaceRecognizer.m */,\n\t\t\t\t383BC4421E2FFBBF002EA7A1 /* OCVLBPHFaceRecognizer.h */,\n\t\t\t\t383BC4431E2FFBBF002EA7A1 /* OCVLBPHFaceRecognizer.m */,\n\t\t\t);\n\t\t\tpath = Face;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t67E64C50AE8C38E24986224C /* Superres */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t383BC53A1E300015002EA7A1 /* OCVFrameSource.h */,\n\t\t\t\t383BC53B1E300015002EA7A1 /* OCVFrameSource.m */,\n\t\t\t\t383BC53E1E30001E002EA7A1 /* OCVSuperResolution.h */,\n\t\t\t\t383BC53F1E30001E002EA7A1 /* OCVSuperResolution.m */,\n\t\t\t);\n\t\t\tpath = Superres;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t67E64C67A5DA9CF04E6E96F7 /* XFeatures2D */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t383BC58E1E300134002EA7A1 /* OCVBriefDescriptorExtractor.h */,\n\t\t\t\t383BC58F1E300134002EA7A1 /* OCVBriefDescriptorExtractor.m */,\n\t\t\t\t383BC5921E30013C002EA7A1 /* OCVCudaSURF.h */,\n\t\t\t\t383BC5931E30013C002EA7A1 /* OCVCudaSURF.m */,\n\t\t\t\t383BC5961E300142002EA7A1 /* OCVDAISY.h */,\n\t\t\t\t383BC5971E300142002EA7A1 /* OCVDAISY.m */,\n\t\t\t\t383BC59A1E300149002EA7A1 /* OCVFreak.h */,\n\t\t\t\t383BC59B1E300149002EA7A1 /* OCVFreak.m */,\n\t\t\t\t383BC59E1E300150002EA7A1 /* OCVLATCH.h */,\n\t\t\t\t383BC59F1E300150002EA7A1 /* OCVLATCH.m */,\n\t\t\t\t383BC5A21E300157002EA7A1 /* OCVLUCID.h */,\n\t\t\t\t383BC5A31E300157002EA7A1 /* OCVLUCID.m */,\n\t\t\t\t383BC5A61E30015E002EA7A1 /* OCVSIFT.h */,\n\t\t\t\t383BC5A71E30015E002EA7A1 /* OCVSIFT.m */,\n\t\t\t\t383BC5AA1E300165002EA7A1 /* OCVStarDetector.h */,\n\t\t\t\t383BC5AB1E300165002EA7A1 /* OCVStarDetector.m */,\n\t\t\t\t383BC5AE1E30016B002EA7A1 /* OCVSURF.h */,\n\t\t\t\t383BC5AF1E30016B002EA7A1 /* OCVSURF.m */,\n\t\t\t);\n\t\t\tpath = XFeatures2D;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t67E64CE47F8AE8A39C02F013 /* BgSegm */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t383BC4261E2FFB47002EA7A1 /* OCVBackgroundSubtractorGMG.h */,\n\t\t\t\t383BC4271E2FFB47002EA7A1 /* OCVBackgroundSubtractorGMG.m */,\n\t\t\t\t383BC42A1E2FFB56002EA7A1 /* OCVBackgroundSubtractorMOG.h */,\n\t\t\t\t383BC42B1E2FFB56002EA7A1 /* OCVBackgroundSubtractorMOG.m */,\n\t\t\t);\n\t\t\tpath = BgSegm;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t67E64CE4EA82E6C734B1F52D /* Cuda */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t383BC41A1E2FFAD4002EA7A1 /* OCVGPUMat.h */,\n\t\t\t\t383BC41B1E2FFAD4002EA7A1 /* OCVGPUMat.m */,\n\t\t\t);\n\t\t\tpath = Cuda;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t67E64D13E7D9F06FEE0F28C2 /* Reflection */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t383BC4D21E2FFEAE002EA7A1 /* OCVReflectImage.h */,\n\t\t\t\t383BC4D31E2FFEAE002EA7A1 /* OCVReflectImage.m */,\n\t\t\t);\n\t\t\tpath = Reflection;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t67E64E1D1A75A6F4A9339476 /* Core */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t67E64A56382886DE40147DB2 /* Algorithms */,\n\t\t\t\t67E648B3CACE63D40EBA303E /* Base */,\n\t\t\t\t67E647D357B7BD627D7D29B4 /* Mat */,\n\t\t\t\t67E6435957E1035A51337C83 /* Operations */,\n\t\t\t\t3898710F1E6F30F700020CFB /* Persistence */,\n\t\t\t\t67E64745979703A472DBFFBC /* Private */,\n\t\t\t\t38DB13ED1E366FD500822472 /* OCVCore.h */,\n\t\t\t);\n\t\t\tpath = Core;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t67E64EED9C49A3E9AB65659A /* Cvb */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t383BC4161E2FFAC2002EA7A1 /* OCVBlob.h */,\n\t\t\t\t383BC4171E2FFAC2002EA7A1 /* OCVBlob.m */,\n\t\t\t);\n\t\t\tpath = Cvb;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t67E64F6071CE207DF3EA0488 /* LineDescriptor */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t383BC45A1E2FFC5C002EA7A1 /* OCVLSDDetector.h */,\n\t\t\t\t383BC45B1E2FFC5C002EA7A1 /* OCVLSDDetector.m */,\n\t\t\t);\n\t\t\tpath = LineDescriptor;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t67E64F8EEC3A8B31F642A947 /* OCR */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t383BC4BE1E2FFE4E002EA7A1 /* OCVPageIterator.h */,\n\t\t\t\t383BC4BF1E2FFE4E002EA7A1 /* OCVPageIterator.m */,\n\t\t\t\t383BC4C21E2FFE63002EA7A1 /* OCVTesseract.h */,\n\t\t\t\t383BC4C31E2FFE63002EA7A1 /* OCVTesseract.m */,\n\t\t\t\t383BC4C61E2FFE6C002EA7A1 /* OCVTesseractResult.h */,\n\t\t\t\t383BC4C71E2FFE6C002EA7A1 /* OCVTesseractResult.m */,\n\t\t\t\t383BC4CA1E2FFE7C002EA7A1 /* OCVOrientation.h */,\n\t\t\t\t383BC4CB1E2FFE7C002EA7A1 /* OCVOrientation.m */,\n\t\t\t);\n\t\t\tpath = OCR;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t67E64FDEDEE3065E9A7F3BE8 /* Fuzzy */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t383BC4561E2FFC2E002EA7A1 /* OCVFuzzyInvoke.h */,\n\t\t\t\t383BC4571E2FFC2E002EA7A1 /* OCVFuzzyInvoke.m */,\n\t\t\t);\n\t\t\tpath = Fuzzy;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXGroup section */\n\n/* Begin PBXHeadersBuildPhase section */\n\t\t388B228621863CF000F24D45 /* Headers */ = {\n\t\t\tisa = PBXHeadersBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t388B229D21863CF000F24D45 /* LegoSwiftCV.h in Headers */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t38B4D4AD1E2AA01F008AAAB0 /* Headers */ = {\n\t\t\tisa = PBXHeadersBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t383BC4E41E2FFEEC002EA7A1 /* OCVEMDL1HistogramCostExtractor.h in Headers */,\n\t\t\t\t383BC4481E2FFBD5002EA7A1 /* OCVFeature2D.h in Headers */,\n\t\t\t\t383BC5841E3000F7002EA7A1 /* OCVHistogramBox.h in Headers */,\n\t\t\t\t383BC4181E2FFAC2002EA7A1 /* OCVBlob.h in Headers */,\n\t\t\t\t38C0D9151E7D73D100246963 /* OCVGeneralizedHough.h in Headers */,\n\t\t\t\t383BC42C1E2FFB56002EA7A1 /* OCVBackgroundSubtractorMOG.h in Headers */,\n\t\t\t\t38C0D93A1E7D93D000246963 /* OCVSerializable.h in Headers */,\n\t\t\t\t383BC5A41E300157002EA7A1 /* OCVLUCID.h in Headers */,\n\t\t\t\t383BC5441E300033002EA7A1 /* OCVERFilter.h in Headers */,\n\t\t\t\t383BC5081E2FFF6F002EA7A1 /* OCVFisheyeWarper.h in Headers */,\n\t\t\t\t383BC5181E2FFF99002EA7A1 /* OCVPaniniWarper.h in Headers */,\n\t\t\t\t383BC4FC1E2FFF44002EA7A1 /* OCVThinPlateSplineShapeTransformer.h in Headers */,\n\t\t\t\t383BC4801E2FFCE1002EA7A1 /* OCVStatModelExtensions.h in Headers */,\n\t\t\t\t38DB13EC1E366E0100822472 /* OCVVideo.h in Headers */,\n\t\t\t\t383BC5401E30001E002EA7A1 /* OCVSuperResolution.h in Headers */,\n\t\t\t\t38C0D9231E7D77B500246963 /* OCVSubdiv2D.h in Headers */,\n\t\t\t\t383BC4841E2FFCEA002EA7A1 /* OCVSVM.h in Headers */,\n\t\t\t\t383BC46C1E2FFCA2002EA7A1 /* OCVEM.h in Headers */,\n\t\t\t\t383BC4C41E2FFE63002EA7A1 /* OCVTesseract.h in Headers */,\n\t\t\t\t389871161E6F315A00020CFB /* OCVFileNode.h in Headers */,\n\t\t\t\t383BC5B81E30018A002EA7A1 /* OCVXPhoto.h in Headers */,\n\t\t\t\t383BC43C1E2FFBA6002EA7A1 /* OCVFaceRecognizer.h in Headers */,\n\t\t\t\t3898711D1E6F3CB900020CFB /* OCVFileStorageFormatDescriptor.h in Headers */,\n\t\t\t\t383BC56C1E3000AD002EA7A1 /* OCVGaussianMotionFilter.h in Headers */,\n\t\t\t\t383BC4941E2FFD2C002EA7A1 /* OCVMCvDTreeNode.h in Headers */,\n\t\t\t\t383BC4101E2FF974002EA7A1 /* OCVObject.h in Headers */,\n\t\t\t\t383BC54C1E300044002EA7A1 /* OCVERFilterNM2.h in Headers */,\n\t\t\t\t383BC4E81E2FFEF8002EA7A1 /* OCVHausdorffDistanceExtractor.h in Headers */,\n\t\t\t\t383BC4781E2FFCC9002EA7A1 /* OCVNormalBayesClassifier.h in Headers */,\n\t\t\t\t383BC50C1E2FFF77002EA7A1 /* OCVMercatorWarper.h in Headers */,\n\t\t\t\t383BC48C1E2FFD0A002EA7A1 /* OCVBoostType.h in Headers */,\n\t\t\t\t383BC4EC1E2FFF08002EA7A1 /* OCVHistogramCostExtractor.h in Headers */,\n\t\t\t\t383BC5B41E30017C002EA7A1 /* OCVDTFilter.h in Headers */,\n\t\t\t\t383BC4F81E2FFF39002EA7A1 /* OCVShapeDistanceExtractor.h in Headers */,\n\t\t\t\t38C0D92B1E7D7EAC00246963 /* OCVLineSegmentDetector.h in Headers */,\n\t\t\t\t38B4D4C11E2AA01F008AAAB0 /* LegoCV.h in Headers */,\n\t\t\t\t383BC5141E2FFF8F002EA7A1 /* OCVPaniniPortraitWarper.h in Headers */,\n\t\t\t\t383BC4E01E2FFEDE002EA7A1 /* OCVEMDHistogramCostExtractor.h in Headers */,\n\t\t\t\t383BC5A81E30015E002EA7A1 /* OCVSIFT.h in Headers */,\n\t\t\t\t383BC5701E3000B6002EA7A1 /* OCVOnePassStabilizer.h in Headers */,\n\t\t\t\t3897187B1E361F0600CB02B4 /* OCVPhotoCamera.h in Headers */,\n\t\t\t\t383BC4F41E2FFF23002EA7A1 /* OCVShapeContextDistanceExtractor.h in Headers */,\n\t\t\t\t383BC5501E30004F002EA7A1 /* OCVERStat.h in Headers */,\n\t\t\t\t383BC5981E300142002EA7A1 /* OCVDAISY.h in Headers */,\n\t\t\t\t383BC4B81E2FFE13002EA7A1 /* OCVPlatformInfo.h in Headers */,\n\t\t\t\t383BC4201E2FFB1D002EA7A1 /* OCVStorageOperationType.h in Headers */,\n\t\t\t\t389871191E6F32BE00020CFB /* OCVPersistence.h in Headers */,\n\t\t\t\t383BC4981E2FFD39002EA7A1 /* OCVMCvDTreeSplit.h in Headers */,\n\t\t\t\t38C0D91B1E7D764200246963 /* OCVGeneralizedHoughGuil.h in Headers */,\n\t\t\t\t383BC5201E2FFFAA002EA7A1 /* OCVSphericalWarper.h in Headers */,\n\t\t\t\t383BC4641E2FFC7B002EA7A1 /* OCVANNMLP.h in Headers */,\n\t\t\t\t383BC4B41E2FFE06002EA7A1 /* OCVKernelConfiguration.h in Headers */,\n\t\t\t\t383BC51C1E2FFFA0002EA7A1 /* OCVPlaneWarper.h in Headers */,\n\t\t\t\t383BC4581E2FFC2E002EA7A1 /* OCVFuzzyInvoke.h in Headers */,\n\t\t\t\t383BC5341E2FFFF6002EA7A1 /* OCVRgb.h in Headers */,\n\t\t\t\t383BC4881E2FFCF2002EA7A1 /* OCVTrainData.h in Headers */,\n\t\t\t\t383BC52C1E2FFFCE002EA7A1 /* OCVTransverseMercatorWarper.h in Headers */,\n\t\t\t\t383BC5A01E300150002EA7A1 /* OCVLATCH.h in Headers */,\n\t\t\t\t383BC4A01E2FFD56002EA7A1 /* OCVMCvParamGrid.h in Headers */,\n\t\t\t\t383BC5641E30009D002EA7A1 /* OCVVideoCaptureFrameSource.h in Headers */,\n\t\t\t\t383BC5581E30006B002EA7A1 /* OCVTileTiffWriter.h in Headers */,\n\t\t\t\t383BC44C1E2FFBE4002EA7A1 /* OCVIndex.h in Headers */,\n\t\t\t\t383BC5AC1E300165002EA7A1 /* OCVStarDetector.h in Headers */,\n\t\t\t\t383BC4AC1E2FFDEC002EA7A1 /* OCVKernel.h in Headers */,\n\t\t\t\t383BC5301E2FFFD9002EA7A1 /* OCVWarperCreator.h in Headers */,\n\t\t\t\t383BC5281E2FFFBD002EA7A1 /* OCVSticher.h in Headers */,\n\t\t\t\t383BC4401E2FFBB3002EA7A1 /* OCVFisherFaceRecognizer.h in Headers */,\n\t\t\t\t383BC5241E2FFFB5002EA7A1 /* OCVStereographicWarper.h in Headers */,\n\t\t\t\t383BC4681E2FFC8F002EA7A1 /* OCVDTree.h in Headers */,\n\t\t\t\t383BC4441E2FFBBF002EA7A1 /* OCVLBPHFaceRecognizer.h in Headers */,\n\t\t\t\t3897187F1E3621D000CB02B4 /* OCVCamera.h in Headers */,\n\t\t\t\t38E3EA211E6E305C00BCC097 /* OCVImageProcessing.h in Headers */,\n\t\t\t\t383BC4A41E2FFDDA002EA7A1 /* OCVDevice.h in Headers */,\n\t\t\t\t383BC5381E2FFFFC002EA7A1 /* OCVRgba.h in Headers */,\n\t\t\t\t383BC53C1E300015002EA7A1 /* OCVFrameSource.h in Headers */,\n\t\t\t\t383BC5001E2FFF5A002EA7A1 /* OCVFeaturesFinder.h in Headers */,\n\t\t\t\t389718871E3627D100CB02B4 /* OCVCamera+Private.h in Headers */,\n\t\t\t\t383BC5781E3000D0002EA7A1 /* OCVBackgroundSubtractor.h in Headers */,\n\t\t\t\t383BC4D41E2FFEAE002EA7A1 /* OCVReflectImage.h in Headers */,\n\t\t\t\t383BC49C1E2FFD4B002EA7A1 /* OCVMCvDTreeSplitMOrder.h in Headers */,\n\t\t\t\t383BC5741E3000BE002EA7A1 /* OCVTwoPassStabilizer.h in Headers */,\n\t\t\t\t383BC5801E3000E3002EA7A1 /* OCVBackgroundSubtractorMOG2.h in Headers */,\n\t\t\t\t383BC45C1E2FFC5C002EA7A1 /* OCVLSDDetector.h in Headers */,\n\t\t\t\t383BC55C1E300078002EA7A1 /* OCVMultiTracker.h in Headers */,\n\t\t\t\t383BC5541E300062002EA7A1 /* OCVTiffWriter.h in Headers */,\n\t\t\t\t383BC41C1E2FFAD4002EA7A1 /* OCVGPUMat.h in Headers */,\n\t\t\t\t383BC5B01E30016B002EA7A1 /* OCVSURF.h in Headers */,\n\t\t\t\t383BC4741E2FFCB5002EA7A1 /* OCVLogisticRegression.h in Headers */,\n\t\t\t\t389718771E361ECC00CB02B4 /* OCVVideoCamera.h in Headers */,\n\t\t\t\t383BC4701E2FFCAC002EA7A1 /* OCVKNearest.h in Headers */,\n\t\t\t\t383BC4BC1E2FFE1C002EA7A1 /* OCVProgramSource.h in Headers */,\n\t\t\t\t383BC5101E2FFF82002EA7A1 /* OCVOrbFeaturesFinder.h in Headers */,\n\t\t\t\t383BC5481E30003C002EA7A1 /* OCVERFilterNM1.h in Headers */,\n\t\t\t\t386F2B871E352A4800320AEB /* OCVPointerObject.h in Headers */,\n\t\t\t\t383BC4241E2FFB32002EA7A1 /* OCVCharucoBoard.h in Headers */,\n\t\t\t\t383BC5881E3000FF002EA7A1 /* OCVHistogramViewer.h in Headers */,\n\t\t\t\t383BC57C1E3000DA002EA7A1 /* OCVBackgroundSubtractorKNN.h in Headers */,\n\t\t\t\t383BC4281E2FFB47002EA7A1 /* OCVBackgroundSubtractorGMG.h in Headers */,\n\t\t\t\t383BC5041E2FFF66002EA7A1 /* OCVCompressedRectilinearWarper.h in Headers */,\n\t\t\t\t383BC4C81E2FFE6C002EA7A1 /* OCVTesseractResult.h in Headers */,\n\t\t\t\t383BC4541E2FFC18002EA7A1 /* OCVGeodeticCoordinate.h in Headers */,\n\t\t\t\t383BC59C1E300149002EA7A1 /* OCVFreak.h in Headers */,\n\t\t\t\t383BC5681E3000A4002EA7A1 /* OCVVideoFrameSource.h in Headers */,\n\t\t\t\t383BC4F01E2FFF14002EA7A1 /* OCVNormHistogramCostExtractor.h in Headers */,\n\t\t\t\t383BC4341E2FFB89002EA7A1 /* OCVImporter.h in Headers */,\n\t\t\t\t38C0D9381E7D8FFC00246963 /* OCVCascadeClassifierOptions.h in Headers */,\n\t\t\t\t389718851E36263A00CB02B4 /* OCVReferenceObject.h in Headers */,\n\t\t\t\t383BC4C01E2FFE4E002EA7A1 /* OCVPageIterator.h in Headers */,\n\t\t\t\t383BC5941E30013C002EA7A1 /* OCVCudaSURF.h in Headers */,\n\t\t\t\t383BC4301E2FFB78002EA7A1 /* OCVNet.h in Headers */,\n\t\t\t\t38C0D9111E7D735F00246963 /* OCVGeneralizedHoughBallard.h in Headers */,\n\t\t\t\t383BC4601E2FFC6F002EA7A1 /* OCVBoost.h in Headers */,\n\t\t\t\t383BC4D01E2FFE90002EA7A1 /* OCVPlot.h in Headers */,\n\t\t\t\t383BC5901E300134002EA7A1 /* OCVBriefDescriptorExtractor.h in Headers */,\n\t\t\t\t383BC4D81E2FFEC0002EA7A1 /* OCVAffineTransformer.h in Headers */,\n\t\t\t\t383BC4CC1E2FFE7C002EA7A1 /* OCVOrientation.h in Headers */,\n\t\t\t\t383BC5601E30007F002EA7A1 /* OCVTracker.h in Headers */,\n\t\t\t\t38DB13EE1E366FE700822472 /* OCVCore.h in Headers */,\n\t\t\t\t383BC4DC1E2FFED0002EA7A1 /* OCVChiHistogramCostExtractor.h in Headers */,\n\t\t\t\t383BC4A81E2FFDE5002EA7A1 /* OCVQueue.h in Headers */,\n\t\t\t\t383BC47C1E2FFCD3002EA7A1 /* OCVRTree.h in Headers */,\n\t\t\t\t383BC4B01E2FFDF6002EA7A1 /* OCVImage2D.h in Headers */,\n\t\t\t\t383BC4901E2FFD13002EA7A1 /* OCVVarType.h in Headers */,\n\t\t\t\t383BC4381E2FFB9A002EA7A1 /* OCVEigenFaceRecognizer.h in Headers */,\n\t\t\t\t67E648CE9C63C53ACF371407 /* OCVColorConversionType.h in Headers */,\n\t\t\t\t38C0D9181E7D747700246963 /* OCVArrayables.h in Headers */,\n\t\t\t\t67E6451D7988CBE476CE428C /* OCVImageOperation.h in Headers */,\n\t\t\t\t67E64EDCC12B0E85158EED46 /* OCVInterpolationType.h in Headers */,\n\t\t\t\t67E64A019431C37CD2E82210 /* OCVImage.h in Headers */,\n\t\t\t\t67E6417055654E2DD6FD5D3A /* OCVInputArray+Private.h in Headers */,\n\t\t\t\t38C0D9301E7D8D8200246963 /* OCVBaseCascadeClassifier.h in Headers */,\n\t\t\t\t67E64F822344F94C3B4967C8 /* OCVInputOutputArray+Private.h in Headers */,\n\t\t\t\t67E64B239EDCF0B841EC9CC1 /* OCVMatDataAllocator+Private.h in Headers */,\n\t\t\t\t389871121E6F311400020CFB /* OCVFileStorage.h in Headers */,\n\t\t\t\t67E6473F3C34532A46C0D9EC /* OCVOutputArray+Private.h in Headers */,\n\t\t\t\t67E6448CC376B69531E717EC /* OCVPoint+Private.h in Headers */,\n\t\t\t\t38C0D9341E7D8EEC00246963 /* OCVCascadeClassifierResult.h in Headers */,\n\t\t\t\t67E646925E8CB062C6A6B51D /* OCVRect+Private.h in Headers */,\n\t\t\t\t67E64D8A7F0465ED26226CDE /* OCVSize+Private.h in Headers */,\n\t\t\t\t67E6437FD719EFAD3A84D511 /* OCVMatDataAllocator.h in Headers */,\n\t\t\t\t67E6426C3111E627F15578A5 /* OCVMat.h in Headers */,\n\t\t\t\t67E64A1FCCE0E9859B9A3ED5 /* OCVMatExpr.h in Headers */,\n\t\t\t\t67E6476EC8885C15EA428F69 /* OCVComplex.h in Headers */,\n\t\t\t\t67E64A11B0A406C9C9029672 /* OCVEdges.h in Headers */,\n\t\t\t\t38C0D90E1E7D6D2000246963 /* OCVImageTypes.h in Headers */,\n\t\t\t\t67E6462097C843412681563A /* OCVScalar.h in Headers */,\n\t\t\t\t67E64C1DB7DBFA0C5DA2C9BE /* OCVRect.h in Headers */,\n\t\t\t\t67E64E7DA7437D4DEA3E1191 /* OCVSize.h in Headers */,\n\t\t\t\t67E642A4F9BE94B327C25F84 /* OCVUMat.h in Headers */,\n\t\t\t\t67E64C955BC995A800BE238A /* OCVOperation+Bitwise.h in Headers */,\n\t\t\t\t67E644E39302CDD38472F074 /* OCVOperation+Transform.h in Headers */,\n\t\t\t\t67E642627C4A182CCBCA3A46 /* OCVOperation.h in Headers */,\n\t\t\t\t67E641AE46ACCCCFFFCE3621 /* OCVPoint.h in Headers */,\n\t\t\t\t67E6436EE5D768B6C32F3C87 /* OCVTypes.h in Headers */,\n\t\t\t\t67E64B60D2C9C331E963C1B0 /* OCVVector.h in Headers */,\n\t\t\t\t38C0D91F1E7D771300246963 /* OCVContrastLimitedAdaptiveHistogramEqualization.h in Headers */,\n\t\t\t\t67E648675A5F8621E5FD80C2 /* OCVAlgorithm.h in Headers */,\n\t\t\t\t67E64F5B14D37BB167F88E90 /* OCVGeometry.h in Headers */,\n\t\t\t\t67E6456620CCF41EBB3210AD /* OCVLDA.h in Headers */,\n\t\t\t\t67E64B717650D498E650CC73 /* OCVRandomGenerator.h in Headers */,\n\t\t\t\t67E640A971036C2B4E41E3D9 /* OCVPCA.h in Headers */,\n\t\t\t\t67E649516B336D32CF0E6059 /* OCVSVD.h in Headers */,\n\t\t\t\t67E6478BAEA8F246134B41AB /* OCVMinimumMaximum.h in Headers */,\n\t\t\t\t67E64B41EB82AA57E982C27A /* OCVInputOutputArray.h in Headers */,\n\t\t\t\t67E643A4327EFC207C923080 /* OCVInputArray.h in Headers */,\n\t\t\t\t67E649ED77AF2C63CB75F620 /* OCVInputOutputArrayable.h in Headers */,\n\t\t\t\t67E64A0C4B4C00A32A808C87 /* OCVInputArrayable.h in Headers */,\n\t\t\t\t67E64C9B5A91DA7042DD5BEC /* OCVOutputArray.h in Headers */,\n\t\t\t\t67E643F98D5706485C3DAA9F /* OCVOutputArrayable.h in Headers */,\n\t\t\t\t67E64A5FFF74B76259911897 /* OCVFormatter.h in Headers */,\n\t\t\t\t67E6424CB9C3609DCBB63C45 /* OCVTermCriteria.h in Headers */,\n\t\t\t\t67E6483A6D84B9ED9B5D2A4A /* OCVCascadeClassifier.h in Headers */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXHeadersBuildPhase section */\n\n/* Begin PBXNativeTarget section */\n\t\t388B228A21863CF000F24D45 /* LegoSwiftCV */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 388B22A221863CF000F24D45 /* Build configuration list for PBXNativeTarget \"LegoSwiftCV\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t388B228621863CF000F24D45 /* Headers */,\n\t\t\t\t388B228721863CF000F24D45 /* Sources */,\n\t\t\t\t388B228821863CF000F24D45 /* Frameworks */,\n\t\t\t\t388B228921863CF000F24D45 /* Resources */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tname = LegoSwiftCV;\n\t\t\tproductName = LegoSwiftCV;\n\t\t\tproductReference = 388B228B21863CF000F24D45 /* LegoSwiftCV.framework */;\n\t\t\tproductType = \"com.apple.product-type.framework\";\n\t\t};\n\t\t388B229221863CF000F24D45 /* LegoSwiftCVTests */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 388B22A521863CF000F24D45 /* Build configuration list for PBXNativeTarget \"LegoSwiftCVTests\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t388B228F21863CF000F24D45 /* Sources */,\n\t\t\t\t388B229021863CF000F24D45 /* Frameworks */,\n\t\t\t\t388B229121863CF000F24D45 /* Resources */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t\t388B229621863CF000F24D45 /* PBXTargetDependency */,\n\t\t\t\t388B229821863CF000F24D45 /* PBXTargetDependency */,\n\t\t\t);\n\t\t\tname = LegoSwiftCVTests;\n\t\t\tproductName = LegoSwiftCVTests;\n\t\t\tproductReference = 388B229321863CF000F24D45 /* LegoSwiftCVTests.xctest */;\n\t\t\tproductType = \"com.apple.product-type.bundle.unit-test\";\n\t\t};\n\t\t38B4D4AF1E2AA01F008AAAB0 /* LegoCV */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 38B4D4C41E2AA020008AAAB0 /* Build configuration list for PBXNativeTarget \"LegoCV\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t38B4D4AB1E2AA01F008AAAB0 /* Sources */,\n\t\t\t\t38B4D4AC1E2AA01F008AAAB0 /* Frameworks */,\n\t\t\t\t38B4D4AD1E2AA01F008AAAB0 /* Headers */,\n\t\t\t\t38B4D4AE1E2AA01F008AAAB0 /* Resources */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tname = LegoCV;\n\t\t\tproductName = LegoCV;\n\t\t\tproductReference = 38B4D4B01E2AA01F008AAAB0 /* LegoCV.framework */;\n\t\t\tproductType = \"com.apple.product-type.framework\";\n\t\t};\n\t\t38B4D4B81E2AA01F008AAAB0 /* LegoCVTests */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 38B4D4C71E2AA020008AAAB0 /* Build configuration list for PBXNativeTarget \"LegoCVTests\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t38B4D4B51E2AA01F008AAAB0 /* Sources */,\n\t\t\t\t38B4D4B61E2AA01F008AAAB0 /* Frameworks */,\n\t\t\t\t38B4D4B71E2AA01F008AAAB0 /* Resources */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t\t38B4D4BC1E2AA01F008AAAB0 /* PBXTargetDependency */,\n\t\t\t\t38C5B0C422948865009D2D68 /* PBXTargetDependency */,\n\t\t\t);\n\t\t\tname = LegoCVTests;\n\t\t\tproductName = LegoCVTests;\n\t\t\tproductReference = 38B4D4B91E2AA01F008AAAB0 /* LegoCVTests.xctest */;\n\t\t\tproductType = \"com.apple.product-type.bundle.unit-test\";\n\t\t};\n\t\t38B4D4CF1E2AA110008AAAB0 /* FaceDetection */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 38B4D4DF1E2AA111008AAAB0 /* Build configuration list for PBXNativeTarget \"FaceDetection\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t38B4D4CC1E2AA110008AAAB0 /* Sources */,\n\t\t\t\t38B4D4CD1E2AA110008AAAB0 /* Frameworks */,\n\t\t\t\t38B4D4CE1E2AA110008AAAB0 /* Resources */,\n\t\t\t\t381F150F1E2AA22A0072F870 /* Embed Frameworks */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t\t381F150E1E2AA22A0072F870 /* PBXTargetDependency */,\n\t\t\t\t388B229F21863CF000F24D45 /* PBXTargetDependency */,\n\t\t\t);\n\t\t\tname = FaceDetection;\n\t\t\tproductName = FaceDetection;\n\t\t\tproductReference = 38B4D4D01E2AA110008AAAB0 /* FaceDetection.app */;\n\t\t\tproductType = \"com.apple.product-type.application\";\n\t\t};\n/* End PBXNativeTarget section */\n\n/* Begin PBXProject section */\n\t\t38B4D4A71E2AA01F008AAAB0 /* Project object */ = {\n\t\t\tisa = PBXProject;\n\t\t\tattributes = {\n\t\t\t\tLastSwiftUpdateCheck = 1000;\n\t\t\t\tLastUpgradeCheck = 1020;\n\t\t\t\tORGANIZATIONNAME = \"Unified Sense\";\n\t\t\t\tTargetAttributes = {\n\t\t\t\t\t388B228A21863CF000F24D45 = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 10.0;\n\t\t\t\t\t\tDevelopmentTeam = 289M6XEDV4;\n\t\t\t\t\t\tLastSwiftMigration = 1020;\n\t\t\t\t\t\tProvisioningStyle = Automatic;\n\t\t\t\t\t};\n\t\t\t\t\t388B229221863CF000F24D45 = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 10.0;\n\t\t\t\t\t\tDevelopmentTeam = 289M6XEDV4;\n\t\t\t\t\t\tLastSwiftMigration = 1020;\n\t\t\t\t\t\tProvisioningStyle = Automatic;\n\t\t\t\t\t\tTestTargetID = 38B4D4CF1E2AA110008AAAB0;\n\t\t\t\t\t};\n\t\t\t\t\t38B4D4AF1E2AA01F008AAAB0 = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 8.2.1;\n\t\t\t\t\t\tDevelopmentTeam = 289M6XEDV4;\n\t\t\t\t\t\tLastSwiftMigration = 1000;\n\t\t\t\t\t\tProvisioningStyle = Automatic;\n\t\t\t\t\t};\n\t\t\t\t\t38B4D4B81E2AA01F008AAAB0 = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 8.2.1;\n\t\t\t\t\t\tDevelopmentTeam = 289M6XEDV4;\n\t\t\t\t\t\tLastSwiftMigration = 1020;\n\t\t\t\t\t\tProvisioningStyle = Automatic;\n\t\t\t\t\t\tTestTargetID = 38B4D4CF1E2AA110008AAAB0;\n\t\t\t\t\t};\n\t\t\t\t\t38B4D4CF1E2AA110008AAAB0 = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 8.2.1;\n\t\t\t\t\t\tDevelopmentTeam = 289M6XEDV4;\n\t\t\t\t\t\tProvisioningStyle = Automatic;\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t};\n\t\t\tbuildConfigurationList = 38B4D4AA1E2AA01F008AAAB0 /* Build configuration list for PBXProject \"LegoCV\" */;\n\t\t\tcompatibilityVersion = \"Xcode 3.2\";\n\t\t\tdevelopmentRegion = en;\n\t\t\thasScannedForEncodings = 0;\n\t\t\tknownRegions = (\n\t\t\t\ten,\n\t\t\t\tBase,\n\t\t\t);\n\t\t\tmainGroup = 38B4D4A61E2AA01F008AAAB0;\n\t\t\tproductRefGroup = 38B4D4B11E2AA01F008AAAB0 /* Products */;\n\t\t\tprojectDirPath = \"\";\n\t\t\tprojectRoot = \"\";\n\t\t\ttargets = (\n\t\t\t\t38B4D4AF1E2AA01F008AAAB0 /* LegoCV */,\n\t\t\t\t388B228A21863CF000F24D45 /* LegoSwiftCV */,\n\t\t\t\t38B4D4B81E2AA01F008AAAB0 /* LegoCVTests */,\n\t\t\t\t388B229221863CF000F24D45 /* LegoSwiftCVTests */,\n\t\t\t\t38B4D4CF1E2AA110008AAAB0 /* FaceDetection */,\n\t\t\t);\n\t\t};\n/* End PBXProject section */\n\n/* Begin PBXResourcesBuildPhase section */\n\t\t388B228921863CF000F24D45 /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t388B229121863CF000F24D45 /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t38B4D4AE1E2AA01F008AAAB0 /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t38B4D4B71E2AA01F008AAAB0 /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t38B4D4CE1E2AA110008AAAB0 /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t38B4D4DD1E2AA111008AAAB0 /* LaunchScreen.storyboard in Resources */,\n\t\t\t\t38B4D4DA1E2AA111008AAAB0 /* Assets.xcassets in Resources */,\n\t\t\t\t38B4D4D81E2AA110008AAAB0 /* Main.storyboard in Resources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXResourcesBuildPhase section */\n\n/* Begin PBXSourcesBuildPhase section */\n\t\t388B228721863CF000F24D45 /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t388B22A821863E0200F24D45 /* Matrix.swift in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t388B228F21863CF000F24D45 /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t388B229B21863CF000F24D45 /* LegoSwiftCVTests.swift in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t38B4D4AB1E2AA01F008AAAB0 /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t383BC52D1E2FFFCE002EA7A1 /* OCVTransverseMercatorWarper.m in Sources */,\n\t\t\t\t383BC5351E2FFFF6002EA7A1 /* OCVRgb.m in Sources */,\n\t\t\t\t383BC5591E30006B002EA7A1 /* OCVTileTiffWriter.m in Sources */,\n\t\t\t\t38C0D9351E7D8EEC00246963 /* OCVCascadeClassifierResult.m in Sources */,\n\t\t\t\t383BC4291E2FFB47002EA7A1 /* OCVBackgroundSubtractorGMG.m in Sources */,\n\t\t\t\t383BC5B11E30016B002EA7A1 /* OCVSURF.m in Sources */,\n\t\t\t\t383BC5291E2FFFBD002EA7A1 /* OCVSticher.m in Sources */,\n\t\t\t\t383BC5791E3000D0002EA7A1 /* OCVBackgroundSubtractor.m in Sources */,\n\t\t\t\t383BC4891E2FFCF2002EA7A1 /* OCVTrainData.m in Sources */,\n\t\t\t\t383BC4711E2FFCAC002EA7A1 /* OCVKNearest.m in Sources */,\n\t\t\t\t383BC4411E2FFBB3002EA7A1 /* OCVFisherFaceRecognizer.m in Sources */,\n\t\t\t\t3897187C1E361F0600CB02B4 /* OCVPhotoCamera.mm in Sources */,\n\t\t\t\t383BC4F51E2FFF23002EA7A1 /* OCVShapeContextDistanceExtractor.m in Sources */,\n\t\t\t\t389718781E361ECC00CB02B4 /* OCVVideoCamera.mm in Sources */,\n\t\t\t\t383BC53D1E300015002EA7A1 /* OCVFrameSource.m in Sources */,\n\t\t\t\t383BC4851E2FFCEA002EA7A1 /* OCVSVM.m in Sources */,\n\t\t\t\t389718861E36263A00CB02B4 /* OCVReferenceObject.m in Sources */,\n\t\t\t\t383BC4B91E2FFE13002EA7A1 /* OCVPlatformInfo.m in Sources */,\n\t\t\t\t383BC48D1E2FFD0A002EA7A1 /* OCVBoostType.m in Sources */,\n\t\t\t\t383BC5051E2FFF66002EA7A1 /* OCVCompressedRectilinearWarper.m in Sources */,\n\t\t\t\t383BC5B91E30018A002EA7A1 /* OCVXPhoto.m in Sources */,\n\t\t\t\t383BC4351E2FFB89002EA7A1 /* OCVImporter.m in Sources */,\n\t\t\t\t383BC5A11E300150002EA7A1 /* OCVLATCH.m in Sources */,\n\t\t\t\t383BC4B51E2FFE06002EA7A1 /* OCVKernelConfiguration.m in Sources */,\n\t\t\t\t383BC49D1E2FFD4B002EA7A1 /* OCVMCvDTreeSplitMOrder.m in Sources */,\n\t\t\t\t383BC5A51E300157002EA7A1 /* OCVLUCID.m in Sources */,\n\t\t\t\t389871171E6F315A00020CFB /* OCVFileNode.mm in Sources */,\n\t\t\t\t383BC4211E2FFB1D002EA7A1 /* OCVStorageOperationType.m in Sources */,\n\t\t\t\t383BC57D1E3000DA002EA7A1 /* OCVBackgroundSubtractorKNN.m in Sources */,\n\t\t\t\t383BC5211E2FFFAA002EA7A1 /* OCVSphericalWarper.m in Sources */,\n\t\t\t\t383BC5411E30001E002EA7A1 /* OCVSuperResolution.m in Sources */,\n\t\t\t\t383BC4D91E2FFEC0002EA7A1 /* OCVAffineTransformer.m in Sources */,\n\t\t\t\t383BC4F11E2FFF14002EA7A1 /* OCVNormHistogramCostExtractor.m in Sources */,\n\t\t\t\t383BC4451E2FFBBF002EA7A1 /* OCVLBPHFaceRecognizer.m in Sources */,\n\t\t\t\t386F2B881E352A4800320AEB /* OCVPointerObject.m in Sources */,\n\t\t\t\t383BC46D1E2FFCA2002EA7A1 /* OCVEM.m in Sources */,\n\t\t\t\t383BC5191E2FFF99002EA7A1 /* OCVPaniniWarper.m in Sources */,\n\t\t\t\t383BC4C51E2FFE63002EA7A1 /* OCVTesseract.m in Sources */,\n\t\t\t\t383BC5111E2FFF82002EA7A1 /* OCVOrbFeaturesFinder.m in Sources */,\n\t\t\t\t38C0D9121E7D735F00246963 /* OCVGeneralizedHoughBallard.m in Sources */,\n\t\t\t\t383BC5B51E30017C002EA7A1 /* OCVDTFilter.m in Sources */,\n\t\t\t\t383BC4A51E2FFDDA002EA7A1 /* OCVDevice.m in Sources */,\n\t\t\t\t383BC5551E300062002EA7A1 /* OCVTiffWriter.m in Sources */,\n\t\t\t\t383BC4591E2FFC2E002EA7A1 /* OCVFuzzyInvoke.m in Sources */,\n\t\t\t\t383BC4311E2FFB78002EA7A1 /* OCVNet.m in Sources */,\n\t\t\t\t389871131E6F311400020CFB /* OCVFileStorage.mm in Sources */,\n\t\t\t\t383BC4ED1E2FFF08002EA7A1 /* OCVHistogramCostExtractor.m in Sources */,\n\t\t\t\t383BC4191E2FFAC2002EA7A1 /* OCVBlob.m in Sources */,\n\t\t\t\t383BC4E11E2FFEDE002EA7A1 /* OCVEMDHistogramCostExtractor.m in Sources */,\n\t\t\t\t383BC5891E3000FF002EA7A1 /* OCVHistogramViewer.m in Sources */,\n\t\t\t\t383BC4D11E2FFE90002EA7A1 /* OCVPlot.m in Sources */,\n\t\t\t\t38C0D91C1E7D764200246963 /* OCVGeneralizedHoughGuil.m in Sources */,\n\t\t\t\t389718801E3621D000CB02B4 /* OCVCamera.mm in Sources */,\n\t\t\t\t383BC5011E2FFF5A002EA7A1 /* OCVFeaturesFinder.m in Sources */,\n\t\t\t\t383BC5611E30007F002EA7A1 /* OCVTracker.m in Sources */,\n\t\t\t\t383BC56D1E3000AD002EA7A1 /* OCVGaussianMotionFilter.m in Sources */,\n\t\t\t\t383BC4251E2FFB32002EA7A1 /* OCVCharucoBoard.m in Sources */,\n\t\t\t\t383BC4D51E2FFEAE002EA7A1 /* OCVReflectImage.m in Sources */,\n\t\t\t\t383BC59D1E300149002EA7A1 /* OCVFreak.m in Sources */,\n\t\t\t\t383BC4811E2FFCE1002EA7A1 /* OCVStatModelExtensions.m in Sources */,\n\t\t\t\t383BC44D1E2FFBE4002EA7A1 /* OCVIndex.m in Sources */,\n\t\t\t\t383BC4991E2FFD39002EA7A1 /* OCVMCvDTreeSplit.m in Sources */,\n\t\t\t\t383BC50D1E2FFF77002EA7A1 /* OCVMercatorWarper.m in Sources */,\n\t\t\t\t383BC4951E2FFD2C002EA7A1 /* OCVMCvDTreeNode.m in Sources */,\n\t\t\t\t383BC4AD1E2FFDEC002EA7A1 /* OCVKernel.m in Sources */,\n\t\t\t\t383BC41D1E2FFAD4002EA7A1 /* OCVGPUMat.m in Sources */,\n\t\t\t\t383BC47D1E2FFCD3002EA7A1 /* OCVRTree.m in Sources */,\n\t\t\t\t383BC4551E2FFC18002EA7A1 /* OCVGeodeticCoordinate.m in Sources */,\n\t\t\t\t383BC4911E2FFD13002EA7A1 /* OCVVarType.m in Sources */,\n\t\t\t\t383BC4E91E2FFEF8002EA7A1 /* OCVHausdorffDistanceExtractor.m in Sources */,\n\t\t\t\t38C0D9311E7D8D8200246963 /* OCVBaseCascadeClassifier.m in Sources */,\n\t\t\t\t383BC4751E2FFCB5002EA7A1 /* OCVLogisticRegression.m in Sources */,\n\t\t\t\t383BC5091E2FFF6F002EA7A1 /* OCVFisheyeWarper.m in Sources */,\n\t\t\t\t383BC4651E2FFC7B002EA7A1 /* OCVANNMLP.m in Sources */,\n\t\t\t\t383BC43D1E2FFBA6002EA7A1 /* OCVFaceRecognizer.m in Sources */,\n\t\t\t\t383BC5691E3000A4002EA7A1 /* OCVVideoFrameSource.m in Sources */,\n\t\t\t\t383BC4C91E2FFE6C002EA7A1 /* OCVTesseractResult.m in Sources */,\n\t\t\t\t383BC4611E2FFC6F002EA7A1 /* OCVBoost.m in Sources */,\n\t\t\t\t383BC5391E2FFFFC002EA7A1 /* OCVRgba.m in Sources */,\n\t\t\t\t383BC4B11E2FFDF6002EA7A1 /* OCVImage2D.m in Sources */,\n\t\t\t\t383BC5451E300033002EA7A1 /* OCVERFilter.m in Sources */,\n\t\t\t\t383BC4FD1E2FFF44002EA7A1 /* OCVThinPlateSplineShapeTransformer.m in Sources */,\n\t\t\t\t383BC51D1E2FFFA0002EA7A1 /* OCVPlaneWarper.m in Sources */,\n\t\t\t\t383BC4E51E2FFEEC002EA7A1 /* OCVEMDL1HistogramCostExtractor.m in Sources */,\n\t\t\t\t383BC4391E2FFB9A002EA7A1 /* OCVEigenFaceRecognizer.m in Sources */,\n\t\t\t\t383BC5251E2FFFB5002EA7A1 /* OCVStereographicWarper.m in Sources */,\n\t\t\t\t383BC4691E2FFC8F002EA7A1 /* OCVDTree.m in Sources */,\n\t\t\t\t383BC5151E2FFF8F002EA7A1 /* OCVPaniniPortraitWarper.m in Sources */,\n\t\t\t\t383BC45D1E2FFC5C002EA7A1 /* OCVLSDDetector.m in Sources */,\n\t\t\t\t383BC5751E3000BE002EA7A1 /* OCVTwoPassStabilizer.m in Sources */,\n\t\t\t\t383BC4DD1E2FFED0002EA7A1 /* OCVChiHistogramCostExtractor.m in Sources */,\n\t\t\t\t383BC42D1E2FFB56002EA7A1 /* OCVBackgroundSubtractorMOG.m in Sources */,\n\t\t\t\t383BC4F91E2FFF39002EA7A1 /* OCVShapeDistanceExtractor.m in Sources */,\n\t\t\t\t383BC4A91E2FFDE5002EA7A1 /* OCVQueue.m in Sources */,\n\t\t\t\t383BC5AD1E300165002EA7A1 /* OCVStarDetector.m in Sources */,\n\t\t\t\t383BC5711E3000B6002EA7A1 /* OCVOnePassStabilizer.m in Sources */,\n\t\t\t\t383BC4491E2FFBD5002EA7A1 /* OCVFeature2D.m in Sources */,\n\t\t\t\t38C0D9241E7D77B500246963 /* OCVSubdiv2D.m in Sources */,\n\t\t\t\t383BC5511E30004F002EA7A1 /* OCVERStat.m in Sources */,\n\t\t\t\t383BC4111E2FF974002EA7A1 /* OCVObject.m in Sources */,\n\t\t\t\t383BC5951E30013C002EA7A1 /* OCVCudaSURF.m in Sources */,\n\t\t\t\t383BC4C11E2FFE4E002EA7A1 /* OCVPageIterator.m in Sources */,\n\t\t\t\t383BC5651E30009D002EA7A1 /* OCVVideoCaptureFrameSource.m in Sources */,\n\t\t\t\t383BC5811E3000E3002EA7A1 /* OCVBackgroundSubtractorMOG2.m in Sources */,\n\t\t\t\t38C0D9161E7D73D100246963 /* OCVGeneralizedHough.m in Sources */,\n\t\t\t\t383BC4CD1E2FFE7C002EA7A1 /* OCVOrientation.m in Sources */,\n\t\t\t\t383BC5311E2FFFD9002EA7A1 /* OCVWarperCreator.m in Sources */,\n\t\t\t\t383BC5991E300142002EA7A1 /* OCVDAISY.m in Sources */,\n\t\t\t\t383BC54D1E300044002EA7A1 /* OCVERFilterNM2.m in Sources */,\n\t\t\t\t383BC5851E3000F7002EA7A1 /* OCVHistogramBox.m in Sources */,\n\t\t\t\t383BC5491E30003C002EA7A1 /* OCVERFilterNM1.m in Sources */,\n\t\t\t\t38C0D9391E7D8FFC00246963 /* OCVCascadeClassifierOptions.m in Sources */,\n\t\t\t\t38C0D92C1E7D7EAC00246963 /* OCVLineSegmentDetector.m in Sources */,\n\t\t\t\t383BC5A91E30015E002EA7A1 /* OCVSIFT.m in Sources */,\n\t\t\t\t383BC4791E2FFCC9002EA7A1 /* OCVNormalBayesClassifier.m in Sources */,\n\t\t\t\t383BC55D1E300078002EA7A1 /* OCVMultiTracker.m in Sources */,\n\t\t\t\t383BC5911E300134002EA7A1 /* OCVBriefDescriptorExtractor.m in Sources */,\n\t\t\t\t383BC4BD1E2FFE1C002EA7A1 /* OCVProgramSource.m in Sources */,\n\t\t\t\t383BC4A11E2FFD56002EA7A1 /* OCVMCvParamGrid.m in Sources */,\n\t\t\t\t67E64E06B0FC8DB79DF8354F /* OCVImageOperation.mm in Sources */,\n\t\t\t\t67E6471FA02CAAF362060F84 /* OCVImage.m in Sources */,\n\t\t\t\t3898711E1E6F3CB900020CFB /* OCVFileStorageFormatDescriptor.m in Sources */,\n\t\t\t\t67E64C3AD9D201BE55ACDD51 /* OCVPoint+Private.mm in Sources */,\n\t\t\t\t67E6430460F88D3DB9A262A1 /* OCVRect+Private.mm in Sources */,\n\t\t\t\t67E64C56148755FEAD662D52 /* OCVSize+Private.mm in Sources */,\n\t\t\t\t67E64B7E0FDC5B551EF68970 /* OCVMatDataAllocator.mm in Sources */,\n\t\t\t\t67E6438494C8E62823A6221F /* OCVMatExpr.mm in Sources */,\n\t\t\t\t67E6445E927F1CC3D66BE6CA /* OCVMat.mm in Sources */,\n\t\t\t\t67E641CE9F2AC16067D63172 /* OCVComplex.m in Sources */,\n\t\t\t\t67E647A36EE5D1F16353A215 /* OCVRect.m in Sources */,\n\t\t\t\t67E64776786FCF3C6717E47E /* OCVScalar.m in Sources */,\n\t\t\t\t67E64DD6519A59AAABD4B224 /* OCVUMat.m in Sources */,\n\t\t\t\t67E646DDD3DE39D2D7C8D936 /* OCVOperation+Transform.mm in Sources */,\n\t\t\t\t67E642E40A844657959DAB84 /* OCVOperation+Bitwise.mm in Sources */,\n\t\t\t\t67E647D322F01061FBD19528 /* OCVOperation.mm in Sources */,\n\t\t\t\t67E64E27B72E603F164AD432 /* OCVVector.m in Sources */,\n\t\t\t\t67E647D10B4E166E041A9B8D /* OCVAlgorithm.m in Sources */,\n\t\t\t\t67E645A832B070AB94DE46CF /* OCVPCA.mm in Sources */,\n\t\t\t\t67E641A0E84C3661DCAE643F /* OCVSVD.mm in Sources */,\n\t\t\t\t38C0D9201E7D771300246963 /* OCVContrastLimitedAdaptiveHistogramEqualization.m in Sources */,\n\t\t\t\t67E6470893E985806C173E68 /* OCVRandomGenerator.mm in Sources */,\n\t\t\t\t67E648D0AA7CBC940CD83B4C /* OCVLDA.mm in Sources */,\n\t\t\t\t67E64B5D0527B760FE0161D7 /* OCVMinimumMaximum.m in Sources */,\n\t\t\t\t67E6434338BC40333D7F777C /* OCVInputArray.mm in Sources */,\n\t\t\t\t67E64ACB7AC9146ABC81AF5C /* OCVInputOutputArray.mm in Sources */,\n\t\t\t\t67E643CAD65DD5E9C86957D0 /* OCVOutputArray.mm in Sources */,\n\t\t\t\t67E643FC3D2EF70F92993806 /* OCVFormatter.m in Sources */,\n\t\t\t\t67E64AB04DF01AC5F2DC4632 /* OCVTermCriteria.m in Sources */,\n\t\t\t\t67E6453125423AC48F3D4C54 /* OCVCascadeClassifier.mm in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t38B4D4B51E2AA01F008AAAB0 /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t38B4D4BF1E2AA01F008AAAB0 /* LegoCVTests.swift in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t38B4D4CC1E2AA110008AAAB0 /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t3897186F1E3618BC00CB02B4 /* FaceDetector.swift in Sources */,\n\t\t\t\t389718691E36175E00CB02B4 /* LiveCameraVC.swift in Sources */,\n\t\t\t\t38B4D4D31E2AA110008AAAB0 /* AppDelegate.swift in Sources */,\n\t\t\t\t3897186D1E3618B200CB02B4 /* FaceRecognizer.swift in Sources */,\n\t\t\t\t3897186B1E36176B00CB02B4 /* FaceRecognitionVC.swift in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXSourcesBuildPhase section */\n\n/* Begin PBXTargetDependency section */\n\t\t381F150E1E2AA22A0072F870 /* PBXTargetDependency */ = {\n\t\t\tisa = PBXTargetDependency;\n\t\t\ttarget = 38B4D4AF1E2AA01F008AAAB0 /* LegoCV */;\n\t\t\ttargetProxy = 381F150D1E2AA22A0072F870 /* PBXContainerItemProxy */;\n\t\t};\n\t\t388B229621863CF000F24D45 /* PBXTargetDependency */ = {\n\t\t\tisa = PBXTargetDependency;\n\t\t\ttarget = 388B228A21863CF000F24D45 /* LegoSwiftCV */;\n\t\t\ttargetProxy = 388B229521863CF000F24D45 /* PBXContainerItemProxy */;\n\t\t};\n\t\t388B229821863CF000F24D45 /* PBXTargetDependency */ = {\n\t\t\tisa = PBXTargetDependency;\n\t\t\ttarget = 38B4D4CF1E2AA110008AAAB0 /* FaceDetection */;\n\t\t\ttargetProxy = 388B229721863CF000F24D45 /* PBXContainerItemProxy */;\n\t\t};\n\t\t388B229F21863CF000F24D45 /* PBXTargetDependency */ = {\n\t\t\tisa = PBXTargetDependency;\n\t\t\ttarget = 388B228A21863CF000F24D45 /* LegoSwiftCV */;\n\t\t\ttargetProxy = 388B229E21863CF000F24D45 /* PBXContainerItemProxy */;\n\t\t};\n\t\t38B4D4BC1E2AA01F008AAAB0 /* PBXTargetDependency */ = {\n\t\t\tisa = PBXTargetDependency;\n\t\t\ttarget = 38B4D4AF1E2AA01F008AAAB0 /* LegoCV */;\n\t\t\ttargetProxy = 38B4D4BB1E2AA01F008AAAB0 /* PBXContainerItemProxy */;\n\t\t};\n\t\t38C5B0C422948865009D2D68 /* PBXTargetDependency */ = {\n\t\t\tisa = PBXTargetDependency;\n\t\t\ttarget = 38B4D4CF1E2AA110008AAAB0 /* FaceDetection */;\n\t\t\ttargetProxy = 38C5B0C322948865009D2D68 /* PBXContainerItemProxy */;\n\t\t};\n/* End PBXTargetDependency section */\n\n/* Begin PBXVariantGroup section */\n\t\t38B4D4D61E2AA110008AAAB0 /* Main.storyboard */ = {\n\t\t\tisa = PBXVariantGroup;\n\t\t\tchildren = (\n\t\t\t\t38B4D4D71E2AA110008AAAB0 /* Base */,\n\t\t\t);\n\t\t\tname = Main.storyboard;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t38B4D4DB1E2AA111008AAAB0 /* LaunchScreen.storyboard */ = {\n\t\t\tisa = PBXVariantGroup;\n\t\t\tchildren = (\n\t\t\t\t38B4D4DC1E2AA111008AAAB0 /* Base */,\n\t\t\t);\n\t\t\tname = LaunchScreen.storyboard;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXVariantGroup section */\n\n/* Begin XCBuildConfiguration section */\n\t\t388B22A321863CF000F24D45 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++14\";\n\t\t\t\tCLANG_ENABLE_OBJC_WEAK = YES;\n\t\t\t\tCLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;\n\t\t\t\tCODE_SIGN_IDENTITY = \"\";\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tDEFINES_MODULE = YES;\n\t\t\t\tDEVELOPMENT_TEAM = 289M6XEDV4;\n\t\t\t\tDYLIB_COMPATIBILITY_VERSION = 1;\n\t\t\t\tDYLIB_CURRENT_VERSION = 1;\n\t\t\t\tDYLIB_INSTALL_NAME_BASE = \"@rpath\";\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu11;\n\t\t\t\tINFOPLIST_FILE = LegoSwiftCV/Info.plist;\n\t\t\t\tINSTALL_PATH = \"$(LOCAL_LIBRARY_DIR)/Frameworks\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks @loader_path/Frameworks\";\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;\n\t\t\t\tMTL_FAST_MATH = YES;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = com.unifiedsense.LegoSwiftCV;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME:c99extidentifier)\";\n\t\t\t\tSKIP_INSTALL = YES;\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t388B22A421863CF000F24D45 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++14\";\n\t\t\t\tCLANG_ENABLE_OBJC_WEAK = YES;\n\t\t\t\tCLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;\n\t\t\t\tCODE_SIGN_IDENTITY = \"\";\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tDEFINES_MODULE = YES;\n\t\t\t\tDEVELOPMENT_TEAM = 289M6XEDV4;\n\t\t\t\tDYLIB_COMPATIBILITY_VERSION = 1;\n\t\t\t\tDYLIB_CURRENT_VERSION = 1;\n\t\t\t\tDYLIB_INSTALL_NAME_BASE = \"@rpath\";\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu11;\n\t\t\t\tINFOPLIST_FILE = LegoSwiftCV/Info.plist;\n\t\t\t\tINSTALL_PATH = \"$(LOCAL_LIBRARY_DIR)/Frameworks\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks @loader_path/Frameworks\";\n\t\t\t\tMTL_FAST_MATH = YES;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = com.unifiedsense.LegoSwiftCV;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME:c99extidentifier)\";\n\t\t\t\tSKIP_INSTALL = YES;\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2\";\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t388B22A621863CF000F24D45 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;\n\t\t\t\tCLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++14\";\n\t\t\t\tCLANG_ENABLE_OBJC_WEAK = YES;\n\t\t\t\tCLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;\n\t\t\t\tCODE_SIGN_IDENTITY = \"iPhone Developer\";\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tDEVELOPMENT_TEAM = 289M6XEDV4;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu11;\n\t\t\t\tINFOPLIST_FILE = LegoSwiftCVTests/Info.plist;\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 12.0;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks @loader_path/Frameworks\";\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;\n\t\t\t\tMTL_FAST_MATH = YES;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = com.unifiedsense.LegoSwiftCVTests;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2\";\n\t\t\t\tTEST_HOST = \"$(BUILT_PRODUCTS_DIR)/FaceDetection.app/FaceDetection\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t388B22A721863CF000F24D45 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;\n\t\t\t\tCLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++14\";\n\t\t\t\tCLANG_ENABLE_OBJC_WEAK = YES;\n\t\t\t\tCLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;\n\t\t\t\tCODE_SIGN_IDENTITY = \"iPhone Developer\";\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tDEVELOPMENT_TEAM = 289M6XEDV4;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu11;\n\t\t\t\tINFOPLIST_FILE = LegoSwiftCVTests/Info.plist;\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 12.0;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks @loader_path/Frameworks\";\n\t\t\t\tMTL_FAST_MATH = YES;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = com.unifiedsense.LegoSwiftCVTests;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2\";\n\t\t\t\tTEST_HOST = \"$(BUILT_PRODUCTS_DIR)/FaceDetection.app/FaceDetection\";\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t38B4D4C21E2AA020008AAAB0 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++0x\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_DOCUMENTATION_COMMENTS = YES;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=iphoneos*]\" = \"iPhone Developer\";\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = dwarf;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tENABLE_TESTABILITY = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu99;\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_OPTIMIZATION_LEVEL = 0;\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 10.0;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = YES;\n\t\t\t\tONLY_ACTIVE_ARCH = YES;\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tSWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-Onone\";\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2\";\n\t\t\t\tVERSIONING_SYSTEM = \"apple-generic\";\n\t\t\t\tVERSION_INFO_PREFIX = \"\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t38B4D4C31E2AA020008AAAB0 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++0x\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_DOCUMENTATION_COMMENTS = YES;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=iphoneos*]\" = \"iPhone Developer\";\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = \"dwarf-with-dsym\";\n\t\t\t\tENABLE_NS_ASSERTIONS = NO;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu99;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 10.0;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = NO;\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-Owholemodule\";\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2\";\n\t\t\t\tVALIDATE_PRODUCT = YES;\n\t\t\t\tVERSIONING_SYSTEM = \"apple-generic\";\n\t\t\t\tVERSION_INFO_PREFIX = \"\";\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t38B4D4C51E2AA020008AAAB0 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCODE_SIGN_IDENTITY = \"\";\n\t\t\t\tDEFINES_MODULE = YES;\n\t\t\t\tDEVELOPMENT_TEAM = 289M6XEDV4;\n\t\t\t\tDYLIB_COMPATIBILITY_VERSION = 1;\n\t\t\t\tDYLIB_CURRENT_VERSION = 1;\n\t\t\t\tDYLIB_INSTALL_NAME_BASE = \"@rpath\";\n\t\t\t\tFRAMEWORK_SEARCH_PATHS = ../ios;\n\t\t\t\tINFOPLIST_FILE = LegoCV/Info.plist;\n\t\t\t\tINSTALL_PATH = \"$(LOCAL_LIBRARY_DIR)/Frameworks\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks @loader_path/Frameworks\";\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = com.unifiedsense.LegoCV;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSKIP_INSTALL = YES;\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-Onone\";\n\t\t\t\tSWIFT_VERSION = 3.0;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t38B4D4C61E2AA020008AAAB0 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCODE_SIGN_IDENTITY = \"\";\n\t\t\t\tDEFINES_MODULE = YES;\n\t\t\t\tDEVELOPMENT_TEAM = 289M6XEDV4;\n\t\t\t\tDYLIB_COMPATIBILITY_VERSION = 1;\n\t\t\t\tDYLIB_CURRENT_VERSION = 1;\n\t\t\t\tDYLIB_INSTALL_NAME_BASE = \"@rpath\";\n\t\t\t\tFRAMEWORK_SEARCH_PATHS = ../ios;\n\t\t\t\tINFOPLIST_FILE = LegoCV/Info.plist;\n\t\t\t\tINSTALL_PATH = \"$(LOCAL_LIBRARY_DIR)/Frameworks\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks @loader_path/Frameworks\";\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = com.unifiedsense.LegoCV;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSKIP_INSTALL = YES;\n\t\t\t\tSWIFT_VERSION = 3.0;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t38B4D4C81E2AA020008AAAB0 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tDEVELOPMENT_TEAM = 289M6XEDV4;\n\t\t\t\tINFOPLIST_FILE = LegoCVTests/Info.plist;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks @loader_path/Frameworks\";\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = com.unifiedsense.LegoCVTests;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t\tTEST_HOST = \"$(BUILT_PRODUCTS_DIR)/FaceDetection.app/FaceDetection\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t38B4D4C91E2AA020008AAAB0 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tDEVELOPMENT_TEAM = 289M6XEDV4;\n\t\t\t\tINFOPLIST_FILE = LegoCVTests/Info.plist;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks @loader_path/Frameworks\";\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = com.unifiedsense.LegoCVTests;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t\tTEST_HOST = \"$(BUILT_PRODUCTS_DIR)/FaceDetection.app/FaceDetection\";\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t38B4D4E01E2AA111008AAAB0 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tCODE_SIGN_IDENTITY = \"iPhone Developer\";\n\t\t\t\tDEVELOPMENT_TEAM = 289M6XEDV4;\n\t\t\t\tFRAMEWORK_SEARCH_PATHS = ../ios;\n\t\t\t\tINFOPLIST_FILE = FaceDetection/Info.plist;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks\";\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = com.unifiedsense.legocv.FaceDetection;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t38B4D4E11E2AA111008AAAB0 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tCODE_SIGN_IDENTITY = \"iPhone Developer\";\n\t\t\t\tDEVELOPMENT_TEAM = 289M6XEDV4;\n\t\t\t\tFRAMEWORK_SEARCH_PATHS = ../ios;\n\t\t\t\tINFOPLIST_FILE = FaceDetection/Info.plist;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks\";\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = com.unifiedsense.legocv.FaceDetection;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n/* End XCBuildConfiguration section */\n\n/* Begin XCConfigurationList section */\n\t\t388B22A221863CF000F24D45 /* Build configuration list for PBXNativeTarget \"LegoSwiftCV\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t388B22A321863CF000F24D45 /* Debug */,\n\t\t\t\t388B22A421863CF000F24D45 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t388B22A521863CF000F24D45 /* Build configuration list for PBXNativeTarget \"LegoSwiftCVTests\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t388B22A621863CF000F24D45 /* Debug */,\n\t\t\t\t388B22A721863CF000F24D45 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t38B4D4AA1E2AA01F008AAAB0 /* Build configuration list for PBXProject \"LegoCV\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t38B4D4C21E2AA020008AAAB0 /* Debug */,\n\t\t\t\t38B4D4C31E2AA020008AAAB0 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t38B4D4C41E2AA020008AAAB0 /* Build configuration list for PBXNativeTarget \"LegoCV\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t38B4D4C51E2AA020008AAAB0 /* Debug */,\n\t\t\t\t38B4D4C61E2AA020008AAAB0 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t38B4D4C71E2AA020008AAAB0 /* Build configuration list for PBXNativeTarget \"LegoCVTests\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t38B4D4C81E2AA020008AAAB0 /* Debug */,\n\t\t\t\t38B4D4C91E2AA020008AAAB0 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t38B4D4DF1E2AA111008AAAB0 /* Build configuration list for PBXNativeTarget \"FaceDetection\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t38B4D4E01E2AA111008AAAB0 /* Debug */,\n\t\t\t\t38B4D4E11E2AA111008AAAB0 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n/* End XCConfigurationList section */\n\t};\n\trootObject = 38B4D4A71E2AA01F008AAAB0 /* Project object */;\n}\n"
  },
  {
    "path": "LegoCV/LegoCV.xcodeproj/project.xcworkspace/contents.xcworkspacedata",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"self:LegoCV.xcodeproj\">\n   </FileRef>\n</Workspace>\n"
  },
  {
    "path": "LegoCV/LegoCV.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>IDEDidComputeMac32BitWarning</key>\n\t<true/>\n</dict>\n</plist>\n"
  },
  {
    "path": "LegoCV/LegoCV.xcodeproj/xcshareddata/xcschemes/LegoCV.xcscheme",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"1020\"\n   version = \"1.3\">\n   <BuildAction\n      parallelizeBuildables = \"YES\"\n      buildImplicitDependencies = \"YES\">\n      <BuildActionEntries>\n         <BuildActionEntry\n            buildForTesting = \"YES\"\n            buildForRunning = \"YES\"\n            buildForProfiling = \"YES\"\n            buildForArchiving = \"YES\"\n            buildForAnalyzing = \"YES\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"38B4D4AF1E2AA01F008AAAB0\"\n               BuildableName = \"LegoCV.framework\"\n               BlueprintName = \"LegoCV\"\n               ReferencedContainer = \"container:LegoCV.xcodeproj\">\n            </BuildableReference>\n         </BuildActionEntry>\n      </BuildActionEntries>\n   </BuildAction>\n   <TestAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\">\n      <Testables>\n         <TestableReference\n            skipped = \"NO\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"38B4D4B81E2AA01F008AAAB0\"\n               BuildableName = \"LegoCVTests.xctest\"\n               BlueprintName = \"LegoCVTests\"\n               ReferencedContainer = \"container:LegoCV.xcodeproj\">\n            </BuildableReference>\n         </TestableReference>\n      </Testables>\n      <MacroExpansion>\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"38B4D4AF1E2AA01F008AAAB0\"\n            BuildableName = \"LegoCV.framework\"\n            BlueprintName = \"LegoCV\"\n            ReferencedContainer = \"container:LegoCV.xcodeproj\">\n         </BuildableReference>\n      </MacroExpansion>\n      <AdditionalOptions>\n      </AdditionalOptions>\n   </TestAction>\n   <LaunchAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      launchStyle = \"0\"\n      useCustomWorkingDirectory = \"NO\"\n      ignoresPersistentStateOnLaunch = \"NO\"\n      debugDocumentVersioning = \"YES\"\n      debugServiceExtension = \"internal\"\n      allowLocationSimulation = \"YES\">\n      <MacroExpansion>\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"38B4D4AF1E2AA01F008AAAB0\"\n            BuildableName = \"LegoCV.framework\"\n            BlueprintName = \"LegoCV\"\n            ReferencedContainer = \"container:LegoCV.xcodeproj\">\n         </BuildableReference>\n      </MacroExpansion>\n      <AdditionalOptions>\n      </AdditionalOptions>\n   </LaunchAction>\n   <ProfileAction\n      buildConfiguration = \"Release\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\"\n      savedToolIdentifier = \"\"\n      useCustomWorkingDirectory = \"NO\"\n      debugDocumentVersioning = \"YES\">\n      <MacroExpansion>\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"38B4D4AF1E2AA01F008AAAB0\"\n            BuildableName = \"LegoCV.framework\"\n            BlueprintName = \"LegoCV\"\n            ReferencedContainer = \"container:LegoCV.xcodeproj\">\n         </BuildableReference>\n      </MacroExpansion>\n   </ProfileAction>\n   <AnalyzeAction\n      buildConfiguration = \"Debug\">\n   </AnalyzeAction>\n   <ArchiveAction\n      buildConfiguration = \"Release\"\n      revealArchiveInOrganizer = \"YES\">\n   </ArchiveAction>\n</Scheme>\n"
  },
  {
    "path": "LegoCV/LegoCV.xcodeproj/xcshareddata/xcschemes/LegoSwiftCV.xcscheme",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"1020\"\n   version = \"1.3\">\n   <BuildAction\n      parallelizeBuildables = \"YES\"\n      buildImplicitDependencies = \"YES\">\n      <BuildActionEntries>\n         <BuildActionEntry\n            buildForTesting = \"YES\"\n            buildForRunning = \"YES\"\n            buildForProfiling = \"YES\"\n            buildForArchiving = \"YES\"\n            buildForAnalyzing = \"YES\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"388B228A21863CF000F24D45\"\n               BuildableName = \"LegoSwiftCV.framework\"\n               BlueprintName = \"LegoSwiftCV\"\n               ReferencedContainer = \"container:LegoCV.xcodeproj\">\n            </BuildableReference>\n         </BuildActionEntry>\n      </BuildActionEntries>\n   </BuildAction>\n   <TestAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\">\n      <Testables>\n      </Testables>\n      <AdditionalOptions>\n      </AdditionalOptions>\n   </TestAction>\n   <LaunchAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      launchStyle = \"0\"\n      useCustomWorkingDirectory = \"NO\"\n      ignoresPersistentStateOnLaunch = \"NO\"\n      debugDocumentVersioning = \"YES\"\n      debugServiceExtension = \"internal\"\n      allowLocationSimulation = \"YES\">\n      <MacroExpansion>\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"388B228A21863CF000F24D45\"\n            BuildableName = \"LegoSwiftCV.framework\"\n            BlueprintName = \"LegoSwiftCV\"\n            ReferencedContainer = \"container:LegoCV.xcodeproj\">\n         </BuildableReference>\n      </MacroExpansion>\n      <AdditionalOptions>\n      </AdditionalOptions>\n   </LaunchAction>\n   <ProfileAction\n      buildConfiguration = \"Release\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\"\n      savedToolIdentifier = \"\"\n      useCustomWorkingDirectory = \"NO\"\n      debugDocumentVersioning = \"YES\">\n      <MacroExpansion>\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"388B228A21863CF000F24D45\"\n            BuildableName = \"LegoSwiftCV.framework\"\n            BlueprintName = \"LegoSwiftCV\"\n            ReferencedContainer = \"container:LegoCV.xcodeproj\">\n         </BuildableReference>\n      </MacroExpansion>\n   </ProfileAction>\n   <AnalyzeAction\n      buildConfiguration = \"Debug\">\n   </AnalyzeAction>\n   <ArchiveAction\n      buildConfiguration = \"Release\"\n      revealArchiveInOrganizer = \"YES\">\n   </ArchiveAction>\n</Scheme>\n"
  },
  {
    "path": "LegoCV/LegoCVTests/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>en</string>\n\t<key>CFBundleExecutable</key>\n\t<string>$(EXECUTABLE_NAME)</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>$(PRODUCT_NAME)</string>\n\t<key>CFBundlePackageType</key>\n\t<string>BNDL</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>1.0</string>\n\t<key>CFBundleVersion</key>\n\t<string>1</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "LegoCV/LegoCVTests/LegoCVTests.swift",
    "content": "//\n//  LegoCVTests.swift\n//  LegoCVTests\n//\n//  Created by Dal Rupnik on 14/01/2017.\n//  Copyright © 2017 Unified Sense. All rights reserved.\n//\n\nimport XCTest\n@testable import LegoCV\n\nclass LegoCVTests: XCTestCase {\n    \n    override func setUp() {\n        super.setUp()\n        // Put setup code here. This method is called before the invocation of each test method in the class.\n    }\n    \n    override func tearDown() {\n        // Put teardown code here. This method is called after the invocation of each test method in the class.\n        super.tearDown()\n    }\n    \n    func testExample() {\n        // This is an example of a functional test case.\n        // Use XCTAssert and related functions to verify your tests produce the correct results.\n    }\n    \n    func testPerformanceExample() {\n        // This is an example of a performance test case.\n        self.measure {\n            // Put the code you want to measure the time of here.\n        }\n    }\n    \n}\n"
  },
  {
    "path": "LegoCV/LegoSwiftCV/Core/Matrix.swift",
    "content": "//\n//  Matrix.swift\n//  LegoCV\n//\n//  Created by Dal Rupnik on 10/28/18.\n//  Copyright © 2018 Unified Sense. All rights reserved.\n//\n\nimport Foundation\nimport LegoCV\n\npublic class Matrix<T : Numeric> : OCVMat {\n}\n"
  },
  {
    "path": "LegoCV/LegoSwiftCV/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>$(DEVELOPMENT_LANGUAGE)</string>\n\t<key>CFBundleExecutable</key>\n\t<string>$(EXECUTABLE_NAME)</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>$(PRODUCT_NAME)</string>\n\t<key>CFBundlePackageType</key>\n\t<string>FMWK</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>1.0.0</string>\n\t<key>CFBundleVersion</key>\n\t<string>$(CURRENT_PROJECT_VERSION)</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "LegoCV/LegoSwiftCV/LegoSwiftCV.h",
    "content": "//\n//  LegoSwiftCV.h\n//  LegoSwiftCV\n//\n//  Created by Dal Rupnik on 10/28/18.\n//  Copyright © 2018 Unified Sense. All rights reserved.\n//\n\n#import <UIKit/UIKit.h>\n\n//! Project version number for LegoSwiftCV.\nFOUNDATION_EXPORT double LegoSwiftCVVersionNumber;\n\n//! Project version string for LegoSwiftCV.\nFOUNDATION_EXPORT const unsigned char LegoSwiftCVVersionString[];\n\n// In this header, you should import all the public headers of your framework using statements like #import <LegoSwiftCV/PublicHeader.h>\n\n\n"
  },
  {
    "path": "LegoCV/LegoSwiftCVTests/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>$(DEVELOPMENT_LANGUAGE)</string>\n\t<key>CFBundleExecutable</key>\n\t<string>$(EXECUTABLE_NAME)</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>$(PRODUCT_NAME)</string>\n\t<key>CFBundlePackageType</key>\n\t<string>BNDL</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>1.0</string>\n\t<key>CFBundleVersion</key>\n\t<string>1</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "LegoCV/LegoSwiftCVTests/LegoSwiftCVTests.swift",
    "content": "//\n//  LegoSwiftCVTests.swift\n//  LegoSwiftCVTests\n//\n//  Created by Dal Rupnik on 10/28/18.\n//  Copyright © 2018 Unified Sense. All rights reserved.\n//\n\nimport XCTest\n@testable import LegoSwiftCV\n\nclass LegoSwiftCVTests: XCTestCase {\n\n    override func setUp() {\n        // Put setup code here. This method is called before the invocation of each test method in the class.\n    }\n\n    override func tearDown() {\n        // Put teardown code here. This method is called after the invocation of each test method in the class.\n    }\n\n    func testExample() {\n        // This is an example of a functional test case.\n        // Use XCTAssert and related functions to verify your tests produce the correct results.\n    }\n\n    func testPerformanceExample() {\n        // This is an example of a performance test case.\n        self.measure {\n            // Put the code you want to measure the time of here.\n        }\n    }\n\n}\n"
  },
  {
    "path": "LegoCV/Playgrounds/MatrixOperations.playground/Contents.swift",
    "content": "//: A UIKit based Playground for presenting user interface\n\nimport LegoCV\nimport LegoSwiftCV\n\nimport UIKit\nimport PlaygroundSupport\n\n//let matrix = Matrix.zeros(withRows: 2, cols: 2, type: .cv8U, channels: 3)\n\nlet mat = OCVMat()\nlet copy = mat.clone()\n\n\nlet image = UIImage(named: \"test1\")\n\n// Present the view controller in the Live View window\nPlaygroundPage.current.liveView = UIImageView(image: image)\n"
  },
  {
    "path": "LegoCV/Playgrounds/MatrixOperations.playground/contents.xcplayground",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<playground version='5.0' target-platform='ios' executeOnSourceChanges='false' last-migration='1000'>\n    <timeline fileName='timeline.xctimeline'/>\n</playground>"
  },
  {
    "path": "LegoCV.podspec",
    "content": "Pod::Spec.new do |s|\n  s.name             = 'LegoCV'\n  s.version          = '0.1.2'\n  s.summary          = 'Simple, lightweight native OpenCV wrapper for Objective-C and Swift.'\n\n  s.description      = <<-DESC\nLegoCV 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.\n                       DESC\n\n  s.homepage         = 'https://github.com/legoless/legocv'\n  # s.screenshots     = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2'\n  s.license          = { :type => '3-clause BSD', :file => 'LICENSE' }\n  s.author           = { 'Dal Rupnik' => 'legoless@gmail.com' }\n  s.source           = { :git => 'https://github.com/legoless/legocv.git', :tag => s.version.to_s }\n  s.social_media_url = 'https://twitter.com/thelegoless'\n\n  s.ios.deployment_target = '10.0'\n\n  s.public_header_files = 'LegoCV/LegoCV/LegoCV.h'\n  s.source_files = 'LegoCV/LegoCV/LegoCV.h'\n\n  s.subspec 'Core' do |subspec|\n    subspec.public_header_files = 'LegoCV/LegoCV/Wrapper/Core/**/*.h', 'LegoCV/LegoCV/Wrapper/Utilities/**/*.h', \n    subspec.private_header_files = 'LegoCV/LegoCV/Wrapper/Core/Private/*.h'\n    subspec.source_files = 'LegoCV/LegoCV/Wrapper/Core/**/*.{h,m,mm}', 'LegoCV/LegoCV/Wrapper/Utilities/**/*.{h,m,mm}'\n    subspec.dependency 'OpenCV-Dynamic'\n  end\n\n  s.subspec 'ImageProcessing' do |subspec|\n    subspec.public_header_files = 'LegoCV/LegoCV/Wrapper/ImageProcessing/**/*.h' \n    #subspec.private_header_files = 'LegoCV/LegoCV/Wrapper/Core/Private/*.h'\n    subspec.source_files = 'LegoCV/LegoCV/Wrapper/ImageProcessing/**/*.{h,m,mm}'\n    subspec.dependency 'LegoCV/Core'\n  end\n  \n  s.frameworks = 'UIKit'\nend\n"
  },
  {
    "path": "README.md",
    "content": "# LegoCV\n\nLegoCV 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*).\n\n## Vision\n\nSwift 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++.\n\nThis 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.\n\n*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.*\n\n## Example\n\nThe following examples display the difference with using LegoCV in Swift or Objective-C compared to vanilla OpenCV in C++.\nThe 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).\n\n#### Swift (LegoCV):\n```swift\nlet faceDetector = OCVCascadeClassifier();\nfaceDetector.load(path: \"haarcascade_frontalface_alt2.xml\")\n\nfunc process(image: OCVMat) {\n    let scale = 2.0\n\n    let minSize = OCVSize(width: 30, height: 30)\n    \n    let size = CGSize(width: 140.0, height: 140.00).ocvSize\n        \n    let gray = OCVMat()\n    let smallImage = OCVMat(rows: Int(round(Double(image.rows) / scale)), cols: Int(round(Double(image.cols) / scale)), type: .cv8U, channels: 1)\n    \n    //\n    // OpenCV Default Syntax requires to predefine both input and output\n    //\n    OCVOperation.convertColor(from: image, to: gray, with: .BGR2GRAY)\n    \n    //\n    // LegoCV syntactic sugar allows you to perform operations directly on the input, only defining output.\n    //\n    image.convertColor(to: gray, with: .BGR2GRAY)\n    let grayImg = image.convertColor(with: .BGR2GRAY)\n    \n    OCVOperation.convertColor(from: image, to: gray, with: .BGR2GRAY)\n    OCVOperation.resize(from: gray, to: smallImage, size: smallImage.size, fx: 0, fy: 0, interpolation: .linear)\n    OCVOperation.equalizeHistogram(from: smallImage, to: smallImage)\n    \n    //\n    // Faces are returned as OCVRect instances, so they are mapped in Swift, as they are structs.\n    //\n    var faces : [OCVRect] = faceDetector.detectMultiscale(with: smallImage, scaleFactor: 1.1, minNeighbours: 2, flags: 0, minSize: minSize).map { $0.rect }\n    \n    //\n    // More LegoCV objective syntactic sugar\n    //\n    let result : OCVCascadeClassifierResult = faceDetector.detectMultiscale(on: smallImage, with: OCVCascadeClassifierOptions.default)\n    faces = result.objects\n    \n}\n```\n\n#### Objective-C (LegoCV with Objective-C):\n```objectivec\n- (void)setupClassifier {\n    self.faceDetector = [[OCVCascadeClassifier alloc] init];\n    [self.faceDetector loadPath:@\"haarcascade_frontalface_alt2.xml\"];\n}\n\n- (void)processImage:(OCVMat *)image {\n    double scale = 2.0;\n\n    OCVSize minSize;\n    minSize.width = 30;\n    minSize.height = 30;\n        \n    OCVMat* gray = [[OCVMat alloc] init];\n    OCVMat* smallImage = [[OCVMat alloc] initWithRows:round(image.rows / scale) cols:round(image.cols / scale) type: OCVDepthTypeCv8U, channels: 1)\n    \n    [OCVOperation convertColorFromSource:image toDestination:gray with:OCVColorConversionTypeBGR2GRAY];\n    [OCVOperation resizeFromSource:gray toDestination:smallImage size:smallImage.size fx:0 fy:0 interpolation:OCVInterpolationTypeLinear];\n    [OCVOperation equalizeHistogramFromSource:smallImage toDestination:smallImage];\n    \n    //\n    // Faces are returned as OCVRectValue instances, which wrap OCVRect structs.\n    //\n    NSArray<OCVRectValue *>* faces = [self.faceDetector detectMultiscaleWith:smallImage scaleFactor:1.1 minNeighbours:2 flags: 0 minSize:minSize];\n    \n    //\n    // Call the face detector classifier\n    //\n    OCVCascadeClassifierResult* result = [self.faceDetector detectMultiScaleOnImage:smallImage withOptions:[OCVCascadeClassifierOptions defaultOptions]];\n}\n```\n\n#### C++ (OpenCV):\n```cpp\nusing namespace cv;\n\nvoid setup () {\n    _faceDetector = new CascadeClassifier();\n    _faceDetector->load(\"haarcascade_frontalface_alt2.xml\");\n}\n\nvoid processImage(cv::Mat img) {\n    double scale = 2.0;\n    Mat gray, smallImg( cvRound (img.rows/scale), cvRound(img.cols/scale), CV_8UC1 );\n    \n    cvtColor( img, gray, COLOR_BGR2GRAY );\n    resize( gray, smallImg, smallImg.size(), 0, 0, INTER_LINEAR );\n    equalizeHist( smallImg, smallImg );\n\n    cv::Size minSize(30,30);\n\n    vector<cv::Rect> faceRects;\n\n    // Faces are returned in provided faceRects vector\n    _faceDetector->detectMultiScale(smallImg, faceRects, 1.1, 2, 0, minSize);\n}\n```\n\nMore examples, including Swift playgrounds can be found in the sample project.\n\n## Documentation\n\nAs this is a project in progress, documentation will be added to [Wiki]() as development progresses.\n\n## Performance\n\nThere 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.\n\n## Installation\n\n### Prerequisites\n\nFor 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.\n\n### CocoaPods\n\nLegoCV 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.\n\n```ruby\npod 'LegoCV'\n\n# Use only specific modules\npod 'LegoCV/Core'\npod 'LegoCV/VideoIO'\n```\n\n*LegoCV supports iOS 8 and higher.*\n\n### Example Project\n\n1. First clone the project:\n\n`git clone git@github.com:legoless/legocv.git`\n`cd legocv`\n\n2. Initialize submodules\n\n```\ngit submodule init\ngit submodule update\n```\n\n3. Build `opencv2.framework` from git repository.\n\n```\n/usr/bin/python opencv/platforms/ios/build_framework.py ios --dynamic\n```\n\n4. Open `LegoCV.xcodeproj` and build.\n\n\n# License\n\n[BSD license](https://github.com/legoless/legocv/blob/master/LICENSE), respect [OpenCV](https://github.com/opencv/opencv/blob/master/LICENSE) license as well.\n"
  }
]