Showing preview only (521K chars total). Download the full file or copy to clipboard to get everything.
Repository: Legoless/LegoCV
Branch: master
Commit: 5338a3bb0397
Files: 351
Total size: 435.2 KB
Directory structure:
gitextract_zblrltlp/
├── .gitignore
├── .gitmodules
├── LICENSE
├── LegoCV/
│ ├── FaceDetection/
│ │ ├── AppDelegate.swift
│ │ ├── Assets.xcassets/
│ │ │ └── AppIcon.appiconset/
│ │ │ └── Contents.json
│ │ ├── Base.lproj/
│ │ │ ├── LaunchScreen.storyboard
│ │ │ └── Main.storyboard
│ │ ├── Info.plist
│ │ ├── Recognition/
│ │ │ ├── FaceDetector.swift
│ │ │ └── FaceRecognizer.swift
│ │ └── View Controllers/
│ │ ├── FaceRecognitionVC.swift
│ │ └── LiveCameraVC.swift
│ ├── LegoCV/
│ │ ├── Info.plist
│ │ ├── LegoCV.h
│ │ └── Wrapper/
│ │ ├── Aruco/
│ │ │ ├── OCVCharucoBoard.h
│ │ │ └── OCVCharucoBoard.m
│ │ ├── BgSegm/
│ │ │ ├── OCVBackgroundSubtractorGMG.h
│ │ │ ├── OCVBackgroundSubtractorGMG.m
│ │ │ ├── OCVBackgroundSubtractorMOG.h
│ │ │ └── OCVBackgroundSubtractorMOG.m
│ │ ├── Core/
│ │ │ ├── Algorithms/
│ │ │ │ ├── OCVLDA.h
│ │ │ │ ├── OCVLDA.mm
│ │ │ │ ├── OCVPCA.h
│ │ │ │ ├── OCVPCA.mm
│ │ │ │ ├── OCVRandomGenerator.h
│ │ │ │ ├── OCVRandomGenerator.mm
│ │ │ │ ├── OCVSVD.h
│ │ │ │ └── OCVSVD.mm
│ │ │ ├── Base/
│ │ │ │ ├── OCVAlgorithm.h
│ │ │ │ ├── OCVAlgorithm.m
│ │ │ │ ├── OCVArrayables.h
│ │ │ │ ├── OCVComplex.h
│ │ │ │ ├── OCVComplex.m
│ │ │ │ ├── OCVEdges.h
│ │ │ │ ├── OCVFormatter.h
│ │ │ │ ├── OCVFormatter.m
│ │ │ │ ├── OCVGeometry.h
│ │ │ │ ├── OCVInputArray.h
│ │ │ │ ├── OCVInputArray.mm
│ │ │ │ ├── OCVInputArrayable.h
│ │ │ │ ├── OCVInputOutputArray.h
│ │ │ │ ├── OCVInputOutputArray.mm
│ │ │ │ ├── OCVInputOutputArrayable.h
│ │ │ │ ├── OCVOutputArray.h
│ │ │ │ ├── OCVOutputArray.mm
│ │ │ │ ├── OCVOutputArrayable.h
│ │ │ │ ├── OCVPoint.h
│ │ │ │ ├── OCVRect.h
│ │ │ │ ├── OCVRect.m
│ │ │ │ ├── OCVScalar.h
│ │ │ │ ├── OCVScalar.m
│ │ │ │ ├── OCVSize.h
│ │ │ │ ├── OCVTypes.h
│ │ │ │ ├── OCVVector.h
│ │ │ │ └── OCVVector.m
│ │ │ ├── Mat/
│ │ │ │ ├── OCVMat.h
│ │ │ │ ├── OCVMat.mm
│ │ │ │ ├── OCVMatDataAllocator.h
│ │ │ │ ├── OCVMatDataAllocator.mm
│ │ │ │ ├── OCVMatExpr.h
│ │ │ │ ├── OCVMatExpr.mm
│ │ │ │ ├── OCVUMat.h
│ │ │ │ └── OCVUMat.m
│ │ │ ├── OCVCore.h
│ │ │ ├── Operations/
│ │ │ │ ├── OCVMinimumMaximum.h
│ │ │ │ ├── OCVMinimumMaximum.m
│ │ │ │ ├── OCVOperation+Bitwise.h
│ │ │ │ ├── OCVOperation+Bitwise.mm
│ │ │ │ ├── OCVOperation+Transform.h
│ │ │ │ ├── OCVOperation+Transform.mm
│ │ │ │ ├── OCVOperation.h
│ │ │ │ ├── OCVOperation.mm
│ │ │ │ ├── OCVTermCriteria.h
│ │ │ │ └── OCVTermCriteria.m
│ │ │ ├── Persistence/
│ │ │ │ ├── OCVFileNode.h
│ │ │ │ ├── OCVFileNode.mm
│ │ │ │ ├── OCVFileStorage.h
│ │ │ │ ├── OCVFileStorage.mm
│ │ │ │ ├── OCVFileStorageFormatDescriptor.h
│ │ │ │ ├── OCVFileStorageFormatDescriptor.m
│ │ │ │ ├── OCVPersistence.h
│ │ │ │ └── OCVSerializable.h
│ │ │ └── Private/
│ │ │ ├── OCVGeometry+Private.h
│ │ │ ├── OCVInputArray+Private.h
│ │ │ ├── OCVInputOutputArray+Private.h
│ │ │ ├── OCVMatDataAllocator+Private.h
│ │ │ ├── OCVOutputArray+Private.h
│ │ │ ├── OCVPoint+Private.h
│ │ │ ├── OCVPoint+Private.mm
│ │ │ ├── OCVRect+Private.h
│ │ │ ├── OCVRect+Private.mm
│ │ │ ├── OCVSize+Private.h
│ │ │ └── OCVSize+Private.mm
│ │ ├── Cuda/
│ │ │ ├── OCVGPUMat.h
│ │ │ └── OCVGPUMat.m
│ │ ├── CvEnum/
│ │ │ ├── OCVStorageOperationType.h
│ │ │ └── OCVStorageOperationType.m
│ │ ├── Cvb/
│ │ │ ├── OCVBlob.h
│ │ │ └── OCVBlob.m
│ │ ├── Dnn/
│ │ │ ├── OCVImporter.h
│ │ │ ├── OCVImporter.m
│ │ │ ├── OCVNet.h
│ │ │ └── OCVNet.m
│ │ ├── Face/
│ │ │ ├── OCVEigenFaceRecognizer.h
│ │ │ ├── OCVEigenFaceRecognizer.m
│ │ │ ├── OCVFaceRecognizer.h
│ │ │ ├── OCVFaceRecognizer.m
│ │ │ ├── OCVFisherFaceRecognizer.h
│ │ │ ├── OCVFisherFaceRecognizer.m
│ │ │ ├── OCVLBPHFaceRecognizer.h
│ │ │ └── OCVLBPHFaceRecognizer.m
│ │ ├── Features2D/
│ │ │ ├── OCVFeature2D.h
│ │ │ └── OCVFeature2D.m
│ │ ├── Flann/
│ │ │ ├── OCVIndex.h
│ │ │ └── OCVIndex.m
│ │ ├── Fuzzy/
│ │ │ ├── OCVFuzzyInvoke.h
│ │ │ └── OCVFuzzyInvoke.m
│ │ ├── Geodetic/
│ │ │ ├── OCVGeodeticCoordinate.h
│ │ │ └── OCVGeodeticCoordinate.m
│ │ ├── ImageProcessing/
│ │ │ ├── OCVColorConversionType.h
│ │ │ ├── OCVContrastLimitedAdaptiveHistogramEqualization.h
│ │ │ ├── OCVContrastLimitedAdaptiveHistogramEqualization.m
│ │ │ ├── OCVGeneralizedHough.h
│ │ │ ├── OCVGeneralizedHough.m
│ │ │ ├── OCVGeneralizedHoughBallard.h
│ │ │ ├── OCVGeneralizedHoughBallard.m
│ │ │ ├── OCVGeneralizedHoughGuil.h
│ │ │ ├── OCVGeneralizedHoughGuil.m
│ │ │ ├── OCVImage.h
│ │ │ ├── OCVImage.m
│ │ │ ├── OCVImageOperation.h
│ │ │ ├── OCVImageOperation.mm
│ │ │ ├── OCVImageProcessing.h
│ │ │ ├── OCVImageTypes.h
│ │ │ ├── OCVInterpolationType.h
│ │ │ ├── OCVLineSegmentDetector.h
│ │ │ ├── OCVLineSegmentDetector.m
│ │ │ ├── OCVSubdiv2D.h
│ │ │ └── OCVSubdiv2D.m
│ │ ├── LineDescriptor/
│ │ │ ├── OCVLSDDetector.h
│ │ │ └── OCVLSDDetector.m
│ │ ├── ML/
│ │ │ ├── Enum/
│ │ │ │ ├── OCVBoostType.h
│ │ │ │ ├── OCVBoostType.m
│ │ │ │ ├── OCVVarType.h
│ │ │ │ └── OCVVarType.m
│ │ │ ├── OCVANNMLP.h
│ │ │ ├── OCVANNMLP.m
│ │ │ ├── OCVBoost.h
│ │ │ ├── OCVBoost.m
│ │ │ ├── OCVDTree.h
│ │ │ ├── OCVDTree.m
│ │ │ ├── OCVEM.h
│ │ │ ├── OCVEM.m
│ │ │ ├── OCVKNearest.h
│ │ │ ├── OCVKNearest.m
│ │ │ ├── OCVLogisticRegression.h
│ │ │ ├── OCVLogisticRegression.m
│ │ │ ├── OCVNormalBayesClassifier.h
│ │ │ ├── OCVNormalBayesClassifier.m
│ │ │ ├── OCVRTree.h
│ │ │ ├── OCVRTree.m
│ │ │ ├── OCVSVM.h
│ │ │ ├── OCVSVM.m
│ │ │ ├── OCVStatModelExtensions.h
│ │ │ ├── OCVStatModelExtensions.m
│ │ │ ├── OCVTrainData.h
│ │ │ ├── OCVTrainData.m
│ │ │ └── Structure/
│ │ │ ├── OCVMCvDTreeNode.h
│ │ │ ├── OCVMCvDTreeNode.m
│ │ │ ├── OCVMCvDTreeSplit.h
│ │ │ ├── OCVMCvDTreeSplit.m
│ │ │ ├── OCVMCvDTreeSplitMOrder.h
│ │ │ ├── OCVMCvDTreeSplitMOrder.m
│ │ │ ├── OCVMCvParamGrid.h
│ │ │ └── OCVMCvParamGrid.m
│ │ ├── OCR/
│ │ │ ├── OCVOrientation.h
│ │ │ ├── OCVOrientation.m
│ │ │ ├── OCVPageIterator.h
│ │ │ ├── OCVPageIterator.m
│ │ │ ├── OCVTesseract.h
│ │ │ ├── OCVTesseract.m
│ │ │ ├── OCVTesseractResult.h
│ │ │ └── OCVTesseractResult.m
│ │ ├── ObjectDetection/
│ │ │ ├── OCVBaseCascadeClassifier.h
│ │ │ ├── OCVBaseCascadeClassifier.m
│ │ │ ├── OCVCascadeClassifier.h
│ │ │ ├── OCVCascadeClassifier.mm
│ │ │ ├── OCVCascadeClassifierOptions.h
│ │ │ ├── OCVCascadeClassifierOptions.m
│ │ │ ├── OCVCascadeClassifierResult.h
│ │ │ └── OCVCascadeClassifierResult.m
│ │ ├── Ocl/
│ │ │ ├── OCVDevice.h
│ │ │ ├── OCVDevice.m
│ │ │ ├── OCVImage2D.h
│ │ │ ├── OCVImage2D.m
│ │ │ ├── OCVKernel.h
│ │ │ ├── OCVKernel.m
│ │ │ ├── OCVKernelConfiguration.h
│ │ │ ├── OCVKernelConfiguration.m
│ │ │ ├── OCVPlatformInfo.h
│ │ │ ├── OCVPlatformInfo.m
│ │ │ ├── OCVProgramSource.h
│ │ │ ├── OCVProgramSource.m
│ │ │ ├── OCVQueue.h
│ │ │ └── OCVQueue.m
│ │ ├── Plot/
│ │ │ ├── OCVPlot.h
│ │ │ └── OCVPlot.m
│ │ ├── Reflection/
│ │ │ ├── OCVReflectImage.h
│ │ │ └── OCVReflectImage.m
│ │ ├── Shape/
│ │ │ ├── OCVAffineTransformer.h
│ │ │ ├── OCVAffineTransformer.m
│ │ │ ├── OCVChiHistogramCostExtractor.h
│ │ │ ├── OCVChiHistogramCostExtractor.m
│ │ │ ├── OCVEMDHistogramCostExtractor.h
│ │ │ ├── OCVEMDHistogramCostExtractor.m
│ │ │ ├── OCVEMDL1HistogramCostExtractor.h
│ │ │ ├── OCVEMDL1HistogramCostExtractor.m
│ │ │ ├── OCVHausdorffDistanceExtractor.h
│ │ │ ├── OCVHausdorffDistanceExtractor.m
│ │ │ ├── OCVHistogramCostExtractor.h
│ │ │ ├── OCVHistogramCostExtractor.m
│ │ │ ├── OCVNormHistogramCostExtractor.h
│ │ │ ├── OCVNormHistogramCostExtractor.m
│ │ │ ├── OCVShapeContextDistanceExtractor.h
│ │ │ ├── OCVShapeContextDistanceExtractor.m
│ │ │ ├── OCVShapeDistanceExtractor.h
│ │ │ ├── OCVShapeDistanceExtractor.m
│ │ │ ├── OCVThinPlateSplineShapeTransformer.h
│ │ │ └── OCVThinPlateSplineShapeTransformer.m
│ │ ├── Stitching/
│ │ │ ├── OCVCompressedRectilinearWarper.h
│ │ │ ├── OCVCompressedRectilinearWarper.m
│ │ │ ├── OCVFeaturesFinder.h
│ │ │ ├── OCVFeaturesFinder.m
│ │ │ ├── OCVFisheyeWarper.h
│ │ │ ├── OCVFisheyeWarper.m
│ │ │ ├── OCVMercatorWarper.h
│ │ │ ├── OCVMercatorWarper.m
│ │ │ ├── OCVOrbFeaturesFinder.h
│ │ │ ├── OCVOrbFeaturesFinder.m
│ │ │ ├── OCVPaniniPortraitWarper.h
│ │ │ ├── OCVPaniniPortraitWarper.m
│ │ │ ├── OCVPaniniWarper.h
│ │ │ ├── OCVPaniniWarper.m
│ │ │ ├── OCVPlaneWarper.h
│ │ │ ├── OCVPlaneWarper.m
│ │ │ ├── OCVSphericalWarper.h
│ │ │ ├── OCVSphericalWarper.m
│ │ │ ├── OCVStereographicWarper.h
│ │ │ ├── OCVStereographicWarper.m
│ │ │ ├── OCVSticher.h
│ │ │ ├── OCVSticher.m
│ │ │ ├── OCVTransverseMercatorWarper.h
│ │ │ ├── OCVTransverseMercatorWarper.m
│ │ │ ├── OCVWarperCreator.h
│ │ │ └── OCVWarperCreator.m
│ │ ├── Structure/
│ │ │ ├── OCVRgb.h
│ │ │ ├── OCVRgb.m
│ │ │ ├── OCVRgba.h
│ │ │ └── OCVRgba.m
│ │ ├── Superres/
│ │ │ ├── OCVFrameSource.h
│ │ │ ├── OCVFrameSource.m
│ │ │ ├── OCVSuperResolution.h
│ │ │ └── OCVSuperResolution.m
│ │ ├── Text/
│ │ │ ├── OCVERFilter.h
│ │ │ ├── OCVERFilter.m
│ │ │ ├── OCVERFilterNM1.h
│ │ │ ├── OCVERFilterNM1.m
│ │ │ ├── OCVERFilterNM2.h
│ │ │ ├── OCVERFilterNM2.m
│ │ │ ├── OCVERStat.h
│ │ │ └── OCVERStat.m
│ │ ├── Tiff/
│ │ │ ├── OCVTiffWriter.h
│ │ │ ├── OCVTiffWriter.m
│ │ │ ├── OCVTileTiffWriter.h
│ │ │ └── OCVTileTiffWriter.m
│ │ ├── Tracking/
│ │ │ ├── OCVMultiTracker.h
│ │ │ ├── OCVMultiTracker.m
│ │ │ ├── OCVTracker.h
│ │ │ └── OCVTracker.m
│ │ ├── UI/
│ │ │ ├── OCVHistogramBox.h
│ │ │ ├── OCVHistogramBox.m
│ │ │ ├── OCVHistogramViewer.h
│ │ │ └── OCVHistogramViewer.m
│ │ ├── Utilities/
│ │ │ ├── OCVObject.h
│ │ │ ├── OCVObject.m
│ │ │ ├── OCVPointerObject.h
│ │ │ ├── OCVPointerObject.m
│ │ │ ├── OCVReferenceObject.h
│ │ │ └── OCVReferenceObject.m
│ │ ├── Video/
│ │ │ ├── OCVCamera+Private.h
│ │ │ ├── OCVCamera.h
│ │ │ ├── OCVCamera.mm
│ │ │ ├── OCVPhotoCamera.h
│ │ │ ├── OCVPhotoCamera.mm
│ │ │ ├── OCVVideo.h
│ │ │ ├── OCVVideoCamera.h
│ │ │ └── OCVVideoCamera.mm
│ │ ├── VideoStab/
│ │ │ ├── OCVGaussianMotionFilter.h
│ │ │ ├── OCVGaussianMotionFilter.m
│ │ │ ├── OCVOnePassStabilizer.h
│ │ │ ├── OCVOnePassStabilizer.m
│ │ │ ├── OCVTwoPassStabilizer.h
│ │ │ ├── OCVTwoPassStabilizer.m
│ │ │ ├── OCVVideoCaptureFrameSource.h
│ │ │ ├── OCVVideoCaptureFrameSource.m
│ │ │ ├── OCVVideoFrameSource.h
│ │ │ └── OCVVideoFrameSource.m
│ │ ├── VideoSurveillance/
│ │ │ ├── OCVBackgroundSubtractor.h
│ │ │ ├── OCVBackgroundSubtractor.m
│ │ │ ├── OCVBackgroundSubtractorKNN.h
│ │ │ ├── OCVBackgroundSubtractorKNN.m
│ │ │ ├── OCVBackgroundSubtractorMOG2.h
│ │ │ └── OCVBackgroundSubtractorMOG2.m
│ │ ├── XFeatures2D/
│ │ │ ├── OCVBriefDescriptorExtractor.h
│ │ │ ├── OCVBriefDescriptorExtractor.m
│ │ │ ├── OCVCudaSURF.h
│ │ │ ├── OCVCudaSURF.m
│ │ │ ├── OCVDAISY.h
│ │ │ ├── OCVDAISY.m
│ │ │ ├── OCVFreak.h
│ │ │ ├── OCVFreak.m
│ │ │ ├── OCVLATCH.h
│ │ │ ├── OCVLATCH.m
│ │ │ ├── OCVLUCID.h
│ │ │ ├── OCVLUCID.m
│ │ │ ├── OCVSIFT.h
│ │ │ ├── OCVSIFT.m
│ │ │ ├── OCVSURF.h
│ │ │ ├── OCVSURF.m
│ │ │ ├── OCVStarDetector.h
│ │ │ └── OCVStarDetector.m
│ │ ├── XImgproc/
│ │ │ ├── OCVDTFilter.h
│ │ │ └── OCVDTFilter.m
│ │ └── XPhoto/
│ │ ├── OCVXPhoto.h
│ │ └── OCVXPhoto.m
│ ├── LegoCV.xcodeproj/
│ │ ├── project.pbxproj
│ │ ├── project.xcworkspace/
│ │ │ ├── contents.xcworkspacedata
│ │ │ └── xcshareddata/
│ │ │ └── IDEWorkspaceChecks.plist
│ │ └── xcshareddata/
│ │ └── xcschemes/
│ │ ├── LegoCV.xcscheme
│ │ └── LegoSwiftCV.xcscheme
│ ├── LegoCVTests/
│ │ ├── Info.plist
│ │ └── LegoCVTests.swift
│ ├── LegoSwiftCV/
│ │ ├── Core/
│ │ │ └── Matrix.swift
│ │ ├── Info.plist
│ │ └── LegoSwiftCV.h
│ ├── LegoSwiftCVTests/
│ │ ├── Info.plist
│ │ └── LegoSwiftCVTests.swift
│ └── Playgrounds/
│ └── MatrixOperations.playground/
│ ├── Contents.swift
│ └── contents.xcplayground
├── LegoCV.podspec
└── README.md
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitignore
================================================
# OS X
.DS_Store
## Build generated
ios/
opencv2.framework/
build/
DerivedData
## Various settings
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
xcuserdata
## Other
*.xccheckout
*.moved-aside
*.xcuserstate
*.xcscmblueprint
## Obj-C/Swift specific
*.hmap
*.ipa
*.dSYM.zip
*.dSYM
## Playgrounds
timeline.xctimeline
playground.xcworkspace
# Swift Package Manager
#
# Add this line if you want to avoid checking in source code from Swift Package Manager dependencies.
# Packages/
.build/
# CocoaPods
#
# We recommend against adding the Pods directory to your .gitignore. However
# you should judge for yourself, the pros and cons are mentioned at:
# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
#
# Pods/
# Carthage
#
# Add this line if you want to avoid checking in source code from Carthage dependencies.
# Carthage/Checkouts
Carthage/Build
# fastlane
#
# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the
# screenshots whenever they are needed.
# For more information about the recommended setup visit:
# https://github.com/fastlane/fastlane/blob/master/docs/Gitignore.md
fastlane/report.xml
fastlane/Preview.html
fastlane/screenshots
fastlane/test_output
#
# Code Coverage
#
*.gcda
*.gcno
#
# AppCode
#
.idea/
#
# Dominus
#
dominus.cfg
#
# KZBootstrap
#
KZBootstrapUserMacros.h
#
# R.swift
#
*.generated.swift
================================================
FILE: .gitmodules
================================================
[submodule "opencv"]
path = opencv
url = https://github.com/opencv/opencv.git
================================================
FILE: LICENSE
================================================
By downloading, copying, installing or using the software you agree to this license.
If you do not agree to this license, do not download, install,
copy or use the software.
License Agreement
For Open Source Computer Vision Library
(3-clause BSD License)
Copyright (C) 2000-2016, Intel Corporation, all rights reserved.
Copyright (C) 2009-2011, Willow Garage Inc., all rights reserved.
Copyright (C) 2009-2016, NVIDIA Corporation, all rights reserved.
Copyright (C) 2010-2013, Advanced Micro Devices, Inc., all rights reserved.
Copyright (C) 2015-2016, OpenCV Foundation, all rights reserved.
Copyright (C) 2015-2016, Itseez Inc., all rights reserved.
Copyright (C) 2016-2017, Unified Sense, all rights reserved.
Third party copyrights are property of their respective owners.
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
* Neither the names of the copyright holders nor the names of the contributors
may be used to endorse or promote products derived from this software
without specific prior written permission.
This software is provided by the copyright holders and contributors "as is" and
any express or implied warranties, including, but not limited to, the implied
warranties of merchantability and fitness for a particular purpose are disclaimed.
In no event shall copyright holders or contributors be liable for any direct,
indirect, incidental, special, exemplary, or consequential damages
(including, but not limited to, procurement of substitute goods or services;
loss of use, data, or profits; or business interruption) however caused
and on any theory of liability, whether in contract, strict liability,
or tort (including negligence or otherwise) arising in any way out of
the use of this software, even if advised of the possibility of such damage.
================================================
FILE: LegoCV/FaceDetection/AppDelegate.swift
================================================
//
// AppDelegate.swift
// FaceDetection
//
// Created by Dal Rupnik on 14/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
import UIKit
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
return true
}
func applicationWillResignActive(_ application: UIApplication) {
// Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
// Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game.
}
func applicationDidEnterBackground(_ application: UIApplication) {
// Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
// If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
}
func applicationWillEnterForeground(_ application: UIApplication) {
// Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background.
}
func applicationDidBecomeActive(_ application: UIApplication) {
// Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
}
func applicationWillTerminate(_ application: UIApplication) {
// Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
}
}
================================================
FILE: LegoCV/FaceDetection/Assets.xcassets/AppIcon.appiconset/Contents.json
================================================
{
"images" : [
{
"idiom" : "iphone",
"size" : "29x29",
"scale" : "2x"
},
{
"idiom" : "iphone",
"size" : "29x29",
"scale" : "3x"
},
{
"idiom" : "iphone",
"size" : "40x40",
"scale" : "2x"
},
{
"idiom" : "iphone",
"size" : "40x40",
"scale" : "3x"
},
{
"idiom" : "iphone",
"size" : "60x60",
"scale" : "2x"
},
{
"idiom" : "iphone",
"size" : "60x60",
"scale" : "3x"
},
{
"idiom" : "ipad",
"size" : "29x29",
"scale" : "1x"
},
{
"idiom" : "ipad",
"size" : "29x29",
"scale" : "2x"
},
{
"idiom" : "ipad",
"size" : "40x40",
"scale" : "1x"
},
{
"idiom" : "ipad",
"size" : "40x40",
"scale" : "2x"
},
{
"idiom" : "ipad",
"size" : "76x76",
"scale" : "1x"
},
{
"idiom" : "ipad",
"size" : "76x76",
"scale" : "2x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
================================================
FILE: LegoCV/FaceDetection/Base.lproj/LaunchScreen.storyboard
================================================
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<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">
<dependencies>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="11106"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<scenes>
<!--View Controller-->
<scene sceneID="EHf-IW-A2E">
<objects>
<viewController id="01J-lp-oVM" sceneMemberID="viewController">
<layoutGuides>
<viewControllerLayoutGuide type="top" id="Llm-lL-Icb"/>
<viewControllerLayoutGuide type="bottom" id="xb3-aO-Qok"/>
</layoutGuides>
<view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</view>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="53" y="375"/>
</scene>
</scenes>
</document>
================================================
FILE: LegoCV/FaceDetection/Base.lproj/Main.storyboard
================================================
<?xml version="1.0" encoding="UTF-8"?>
<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">
<device id="retina4_7" orientation="portrait">
<adaptation id="fullscreen"/>
</device>
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="11757"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<scenes>
<!--Live CameraVC-->
<scene sceneID="tne-QT-ifu">
<objects>
<viewController id="BYZ-38-t0r" customClass="LiveCameraVC" customModule="FaceDetection" customModuleProvider="target" sceneMemberID="viewController">
<layoutGuides>
<viewControllerLayoutGuide type="top" id="y3c-jy-aDJ"/>
<viewControllerLayoutGuide type="bottom" id="wfy-db-euE"/>
</layoutGuides>
<view key="view" contentMode="scaleToFill" id="8bC-Xf-vdC">
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="pXO-Z5-B2E">
<rect key="frame" x="0.0" y="20" width="375" height="647"/>
</imageView>
</subviews>
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstAttribute="trailing" secondItem="pXO-Z5-B2E" secondAttribute="trailing" id="AKd-bE-SzF"/>
<constraint firstItem="wfy-db-euE" firstAttribute="top" secondItem="pXO-Z5-B2E" secondAttribute="bottom" id="S8x-2q-rUP"/>
<constraint firstItem="pXO-Z5-B2E" firstAttribute="leading" secondItem="8bC-Xf-vdC" secondAttribute="leading" id="mGQ-r7-FOS"/>
<constraint firstItem="pXO-Z5-B2E" firstAttribute="top" secondItem="y3c-jy-aDJ" secondAttribute="bottom" id="rdg-yv-HlE"/>
</constraints>
</view>
<connections>
<outlet property="cameraView" destination="pXO-Z5-B2E" id="mwQ-Mv-E85"/>
</connections>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="140" y="138.98050974512745"/>
</scene>
</scenes>
</document>
================================================
FILE: LegoCV/FaceDetection/Info.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.0.0</string>
<key>CFBundleVersion</key>
<string>1</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>NSCameraUsageDescription</key>
<string>Face Detection</string>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<key>UIMainStoryboardFile</key>
<string>Main</string>
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>armv7</string>
</array>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UISupportedInterfaceOrientations~ipad</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
</dict>
</plist>
================================================
FILE: LegoCV/FaceDetection/Recognition/FaceDetector.swift
================================================
//
// FaceDetector.swift
// LegoCV
//
// Created by Dal Rupnik on 23/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
import LegoCV
class FaceDetector : NSObject, OCVVideoCameraDelegate {
private var imageView : UIImageView
private var scale : CGFloat
private var faceRects : [OCVRect] = []
private var faceImgs : [OCVMat] = []
private var faceDetector = OCVCascadeClassifier()
var videoCamera : OCVVideoCamera!
init(imageView: UIImageView, scale: CGFloat) {
self.imageView = imageView
self.scale = scale
super.init()
setupCamera()
setupClassifier()
}
func startCapture () {
videoCamera.start()
}
func stopCapture () {
videoCamera.stop()
}
func detectedFaces () -> [CGRect] {
var rects : [CGRect] = []
for faceRect in faceRects {
let rect = CGRect(x: scale * CGFloat(faceRect.origin.x) / 480.0, y: scale * CGFloat(faceRect.origin.y) / 640.0, width: scale * CGFloat(faceRect.size.width) / 480.0, height: scale * CGFloat(faceRect.size.height) / 640.0)
rects.append(rect)
}
return rects
}
func face(with index: Int) -> UIImage? {
guard index < faceImgs.count else {
return nil
}
return faceImgs[index].image()
}
func processImage(_ image: OCVMat) {
let faces = detectFaces(on: image, with: Double(scale))
draw(faces: faces.0, on: image, with: faces.1)
}
private func setupCamera () {
videoCamera = OCVVideoCamera(parentView: imageView)
videoCamera.defaultAVCaptureDevicePosition = .front
videoCamera.defaultAVCaptureSessionPreset = AVCaptureSession.Preset.vga640x480
videoCamera.defaultAVCaptureVideoOrientation = .portrait
videoCamera.defaultFPS = 30
videoCamera.grayscaleMode = false
videoCamera.delegate = self
}
private func setupClassifier () {
if let path = Bundle.main.path(forResource: "haarcascade_frontalface_alt2", ofType: "xml", inDirectory: "data/haarcascades") {
faceDetector.loadPath(path)
}
}
private func detectFaces (on image: OCVMat, with scale: Double) -> ([OCVRect], OCVMat) {
let scaleFactor = 1.1
let minRects = 2
var minSize = OCVSize()
minSize.width = 30
minSize.height = 30
let gray = OCVMat()
let smallImage = OCVMat(rows: Int(round(Double(image.rows) / scale)), cols: Int(round(Double(image.cols) / scale)), type: .cv8U, channels: 1)
OCVImageOperation.convertColor(fromSource: image, toDestination: gray, with: .typeBGR2GRAY)
OCVImageOperation.resize(fromSource: gray, toDestination: smallImage, size: smallImage.size, fx: 0, fy: 0, interpolation: .linear)
OCVImageOperation.equalizeHistogram(fromSource: smallImage, toDestination: smallImage)
return (faceDetector.detectMultiScale(onImage: smallImage, scaleFactor: scaleFactor, minNeighbours: minRects, flags: 0, minSize: minSize).map { $0.rect }, smallImage)
}
private func draw(faces: [OCVRect], on image: OCVMat, with smallImage: OCVMat) {
let colors : [OCVScalar] = [
OCVScalar(r: 0, g: 0, b: 255),
OCVScalar(r: 0, g: 128, b: 255),
OCVScalar(r: 0, g: 255, b: 255),
OCVScalar(r: 0, g: 255, b: 0),
OCVScalar(r: 255, g: 128, b: 0),
OCVScalar(r: 255, g: 255, b: 0),
OCVScalar(r: 255, g: 0, b: 0),
OCVScalar(r: 255, g: 0, b: 255)
]
var faceImages : [OCVMat] = []
var i = 0
for face in faces {
let color = colors[i % colors.count]
var point1 = OCVPoint()
point1.x = Int(CGFloat(face.origin.x) * scale)
point1.y = Int(CGFloat(face.origin.y) * scale)
var point2 = OCVPoint()
point2.x = Int(CGFloat(face.origin.x + face.size.width - 1) * scale)
point2.y = Int(CGFloat(face.origin.y + face.size.height - 1) * scale)
OCVImageOperation.rectangle(onSource: image, from: point1, to: point2, withColor: color, thickness: 1, lineType: 8, shift: 0)
let smallImageROI = smallImage.submatrix(with: face)
faceImages.append(smallImageROI.clone())
i += 1
}
self.faceImgs = faceImages
}
}
================================================
FILE: LegoCV/FaceDetection/Recognition/FaceRecognizer.swift
================================================
//
// FaceRecognizer.swift
// LegoCV
//
// Created by Dal Rupnik on 23/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
import UIKit
class FaceRecognizer: NSObject {
}
================================================
FILE: LegoCV/FaceDetection/View Controllers/FaceRecognitionVC.swift
================================================
//
// FaceRecognitionVC.swift
// LegoCV
//
// Created by Dal Rupnik on 23/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
import UIKit
class FaceRecognitionVC: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
/*
// MARK: - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
// Get the new view controller using segue.destinationViewController.
// Pass the selected object to the new view controller.
}
*/
}
================================================
FILE: LegoCV/FaceDetection/View Controllers/LiveCameraVC.swift
================================================
//
// LiveCameraVC.swift
// LegoCV
//
// Created by Dal Rupnik on 23/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
import UIKit
class LiveCameraVC: UIViewController {
@IBOutlet weak var cameraView : UIImageView!
var faceDetector : FaceDetector!
override func viewDidLoad() {
super.viewDidLoad()
faceDetector = FaceDetector(imageView: cameraView, scale: 2.0)
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
faceDetector.startCapture()
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
faceDetector.stopCapture()
}
}
================================================
FILE: LegoCV/LegoCV/Info.plist
================================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleShortVersionString</key>
<string>1.0.0</string>
<key>CFBundleVersion</key>
<string>$(CURRENT_PROJECT_VERSION)</string>
<key>NSPrincipalClass</key>
<string></string>
</dict>
</plist>
================================================
FILE: LegoCV/LegoCV/LegoCV.h
================================================
//
// LegoCV.h
// LegoCV
//
// Created by Dal Rupnik on 14/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
@import Foundation;
//! Project version number for LegoCV.
FOUNDATION_EXPORT double LegoCVVersionNumber;
//! Project version string for LegoCV.
FOUNDATION_EXPORT const unsigned char LegoCVVersionString[];
// In this header, you should import all the public headers of your framework using statements like #import <LegoCV/PublicHeader.h>
#if __has_include("OCVCore.h")
#import "OCVCore.h"
#endif
#if __has_include("OCVImageProcessing.h")
#import "OCVImageProcessing.h"
#endif
#if __has_include("OCVVideo.h")
#import "OCVVideo.h"
#endif
================================================
FILE: LegoCV/LegoCV/Wrapper/Aruco/OCVCharucoBoard.h
================================================
//
// OCVCharucoBoard.h
// LegoCV
//
// Created by Dal Rupnik on 18/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVObject.h"
@interface OCVCharucoBoard : OCVObject
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/Aruco/OCVCharucoBoard.m
================================================
//
// OCVCharucoBoard.m
// LegoCV
//
// Created by Dal Rupnik on 18/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVCharucoBoard.h"
@implementation OCVCharucoBoard
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/BgSegm/OCVBackgroundSubtractorGMG.h
================================================
//
// OCVBackgroundSubtractorGMG.h
// LegoCV
//
// Created by Dal Rupnik on 18/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVObject.h"
@interface OCVBackgroundSubtractorGMG : OCVObject
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/BgSegm/OCVBackgroundSubtractorGMG.m
================================================
//
// OCVBackgroundSubtractorGMG.m
// LegoCV
//
// Created by Dal Rupnik on 18/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVBackgroundSubtractorGMG.h"
@implementation OCVBackgroundSubtractorGMG
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/BgSegm/OCVBackgroundSubtractorMOG.h
================================================
//
// OCVBackgroundSubtractorMOG.h
// LegoCV
//
// Created by Dal Rupnik on 18/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVObject.h"
@interface OCVBackgroundSubtractorMOG : OCVObject
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/BgSegm/OCVBackgroundSubtractorMOG.m
================================================
//
// OCVBackgroundSubtractorMOG.m
// LegoCV
//
// Created by Dal Rupnik on 18/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVBackgroundSubtractorMOG.h"
@implementation OCVBackgroundSubtractorMOG
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/Core/Algorithms/OCVLDA.h
================================================
//
// OCVLDA.h
// LegoCV
//
// Created by Dal Rupnik on 07/03/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVObject.h"
#import "OCVInputArrayable.h"
#import "OCVMat.h"
NS_ASSUME_NONNULL_BEGIN
/*!
* Discriminant Analysis
*/
@interface OCVLDA : OCVObject
@property (nonatomic, readonly) OCVMat *eigenVectors;
@property (nonatomic, readonly) OCVMat *eigenValues;
- (instancetype)initWithNumberOfComponents:(NSInteger)numberOfComponents;
- (instancetype)initWithSource:(NSArray<OCVInputArrayable> *)source labels:(id<OCVInputArrayable>)labels;
- (instancetype)initWithSource:(NSArray<OCVInputArrayable> *)source labels:(id<OCVInputArrayable>)labels numberOfComponents:(NSInteger)numberOfComponents;
//
// TODO: Serializable implementation
//
- (void)computeWithSource:(NSArray<OCVInputArrayable> *)source labels:(id<OCVInputArrayable>)labels;
- (OCVMat *)projectWithSource:(id<OCVInputArrayable>)source;
- (OCVMat *)reconstructWithSource:(id<OCVInputArrayable>)source;
+ (OCVMat *)subspaceProjectWithW:(id<OCVInputArrayable>)w mean:(id<OCVInputArrayable>)mean source:(id<OCVInputArrayable>)source;
+ (OCVMat *)subspaceReconstructWithW:(id<OCVInputArrayable>)w mean:(id<OCVInputArrayable>)mean source:(id<OCVInputArrayable>)source;
@end
NS_ASSUME_NONNULL_END
================================================
FILE: LegoCV/LegoCV/Wrapper/Core/Algorithms/OCVLDA.mm
================================================
//
// OCVLDA.mm
// LegoCV
//
// Created by Dal Rupnik on 07/03/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVLDA.h"
@implementation OCVLDA
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/Core/Algorithms/OCVPCA.h
================================================
//
// OCVPCA.h
// LegoCV
//
// Created by Dal Rupnik on 06/03/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVObject.h"
#import "OCVInputArrayable.h"
#import "OCVOutputArrayable.h"
#import "OCVMat.h"
/*!
* Reference type: cv::PCA Flags
*/
typedef NS_OPTIONS(NSInteger, OCVPCAFlags) {
OCVPCAFlagDataAsRow = 0, //!< indicates that the input samples are stored as matrix rows
OCVPCAFlagDataAsColumn = 1, //!< indicates that the input samples are stored as matrix columns
OCVPCAFlagUseAvg = 2
};
NS_ASSUME_NONNULL_BEGIN
/*!
* Principal Component Analysis
*/
@interface OCVPCA : OCVObject
@property (nonatomic, readonly) OCVMat* eigenVectors;
@property (nonatomic, readonly) OCVMat* eigenValues;
@property (nonatomic, readonly) OCVMat* mean;
#pragma mark - Initialization
- (instancetype)initWithData:(id<OCVInputArrayable>)data mean:(id<OCVInputArrayable>)mean flags:(OCVPCAFlags)flags maxComponents:(NSInteger)maxComponents;
- (instancetype)initWithData:(id<OCVInputArrayable>)data mean:(id<OCVInputArrayable>)mean flags:(OCVPCAFlags)flags retainedVariance:(double)retainedVariance;
#pragma mark - Public Methods
- (OCVPCA *)performWithData:(id<OCVInputArrayable>)data mean:(id<OCVInputArrayable>)mean flags:(OCVPCAFlags)flags maxComponents:(NSInteger)maxComponents;
- (OCVPCA *)performWithData:(id<OCVInputArrayable>)data mean:(id<OCVInputArrayable>)mean flags:(OCVPCAFlags)flags retainedVariance:(double)retainedVariance;
- (OCVMat *)projectWithVector:(id<OCVInputArrayable>)vector;
- (void)projectWithVector:(id<OCVInputArrayable>)vector toDestination:(id<OCVOutputArrayable>)destination;
- (OCVMat *)backProjectWithVector:(id<OCVInputArrayable>)vector;
- (void)backProjectWithVector:(id<OCVInputArrayable>)vector toDestination:(id<OCVOutputArrayable>)destination;
//
// TODO: Implement OCV FileStorage and OCV FileNode, for serialization
//
- (void)writeToPath:(NSString *)path;
- (void)loadFrompath:(NSString *)path;
@end
NS_ASSUME_NONNULL_END
================================================
FILE: LegoCV/LegoCV/Wrapper/Core/Algorithms/OCVPCA.mm
================================================
//
// OCVPCA.mm
// LegoCV
//
// Created by Dal Rupnik on 06/03/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVPCA.h"
@implementation OCVPCA
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/Core/Algorithms/OCVRandomGenerator.h
================================================
//
// OCVRandomGenerator.h
// LegoCV
//
// Created by Dal Rupnik on 04/03/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVObject.h"
#import "OCVInputArrayable.h"
#import "OCVOutputArrayable.h"
#import "OCVInputOutputArrayable.h"
#import "OCVGeometry.h"
#import "OCVTypes.h"
typedef NS_ENUM(NSInteger, OCVRandomType) {
OCVRandomTypeUniform = 0,
OCVRandomTypeNormal = 1,
};
/*!
* cv::RNG
*/
@interface OCVRandomGenerator : OCVObject
@property (nonatomic, assign) unsigned long long state;
#pragma mark - Initialization
- (instancetype)initWithState:(unsigned long long)state;
#pragma mark - Public Methods
- (char)nextChar;
- (unsigned char)nextUnsignedChar;
- (short)nextShort;
- (unsigned short)nextUnsignedShort;
- (int)nextInt;
- (unsigned int)nextUnsignedInt;
- (unsigned long long)nextUnsignedLong;
- (float)nextFloat;
- (double)nextDouble;
- (int)uniformWithLower:(int)lower upper:(int)upper;
- (float)uniformFloatWithLower:(float)lower upper:(float)upper;
- (double)uniformDoubleWithLower:(double)lower upper:(double)upper;
- (void)fillSource:(id<OCVInputOutputArrayable>)source type:(OCVRandomType)type distributionA:(id<OCVInputArrayable>)distributionA distributionB:(id<OCVInputArrayable>)distributionB;
- (void)fillSource:(id<OCVInputOutputArrayable>)source type:(OCVRandomType)type distributionA:(id<OCVInputArrayable>)distributionA distributionB:(id<OCVInputArrayable>)distributionB saturateRange:(BOOL)saturateRange;
- (double)gaussianForSigma:(double)sigma;
/*!
* cv::randShuffle()
*
* @note: While OpenCV provides a static method here for randShuffle, this is an instance method, since it requires random generator object.
*/
- (void)randShuffleToDestination:(id<OCVInputOutputArrayable>)destination;
- (void)randShuffleToDestination:(id<OCVInputOutputArrayable>)destination iterationFactor:(double)iterationFactor;
#pragma mark - Class Methods
/*!
* cv::theRNG()
*/
+ (instancetype)defaultGenerator;
/*!
* cv::setRNGSeed()
*/
+ (void)setSeed:(NSInteger)seed;
/*!
* cv::randu()
*/
+ (void)randUniformToDestination:(id<OCVInputOutputArrayable>)destination withLowBoundary:(id<OCVInputArrayable>)lowBoundary withHighBoundary:(id<OCVInputArrayable>)highBoundary;
/*!
* cv::randn()
*/
+ (void)randNormallyToDestination:(id<OCVInputOutputArrayable>)destination mean:(id<OCVInputArrayable>)mean standardDeviation:(id<OCVInputArrayable>)standardDeviation;
@end
/*!
* cv::RNG_MT19937
*/
@interface OCVMersenneTwisterRandomGenerator : OCVRandomGenerator
- (void)seedWithState:(unsigned long long)state;
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/Core/Algorithms/OCVRandomGenerator.mm
================================================
//
// OCVRandomGenerator.mm
// LegoCV
//
// Created by Dal Rupnik on 04/03/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVRandomGenerator.h"
@implementation OCVRandomGenerator
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/Core/Algorithms/OCVSVD.h
================================================
//
// OCVSVD.h
// LegoCV
//
// Created by Dal Rupnik on 06/03/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVObject.h"
#import "OCVInputArrayable.h"
#import "OCVOutputArrayable.h"
#import "OCVMat.h"
/*!
* Reference type: cv::PCA Flags
*/
typedef NS_OPTIONS(NSInteger, OCVSVDFlags) {
OCVSVDModifyA = 0,
OCVSVDNoUV = 1,
OCVSVDFullUV = 4
};
NS_ASSUME_NONNULL_BEGIN
/*!
* Singular Value Decomposition
*/
@interface OCVSVD : OCVObject
@property (nonatomic, strong) OCVMat* u;
@property (nonatomic, strong) OCVMat* w;
@property (nonatomic, strong) OCVMat* vt;
- (instancetype)initWithSource:(id<OCVInputArrayable>)source;
- (instancetype)initWithSource:(id<OCVInputArrayable>)source flags:(OCVSVDFlags)flags;
- (OCVSVD *)performWithSource:(id<OCVInputArrayable>)source;
- (OCVSVD *)performWithSource:(id<OCVInputArrayable>)source flags:(OCVSVDFlags)flags;
+ (void)computeWithSource:(id<OCVInputArrayable>)source w:(id<OCVInputArrayable>)w u:(id<OCVOutputArrayable>)u vt:(id<OCVOutputArrayable>)vt;
+ (void)computeWithSource:(id<OCVInputArrayable>)source w:(id<OCVInputArrayable>)w u:(id<OCVOutputArrayable>)u vt:(id<OCVOutputArrayable>)vt flags:(OCVSVDFlags)flags;
+ (void)computeWithSource:(id<OCVInputArrayable>)source w:(id<OCVOutputArrayable>)w;
+ (void)computeWithSource:(id<OCVInputArrayable>)source w:(id<OCVOutputArrayable>)w flags:(OCVSVDFlags)flags;
+ (void)backSubstitutionWithW:(id<OCVInputArrayable>)w u:(id<OCVInputArrayable>)u vt:(id<OCVInputArrayable>)vt rightHandSide:(id<OCVInputArrayable>)rightHandSide toDestination:(id<OCVOutputArrayable>)destination;
+ (void)solveZWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination;
+ (void)backSubstitutionWithRightHandSide:(id<OCVInputArrayable>)rightHandSide toDestination:(id<OCVOutputArrayable>)destination;
@end
NS_ASSUME_NONNULL_END
================================================
FILE: LegoCV/LegoCV/Wrapper/Core/Algorithms/OCVSVD.mm
================================================
//
// OCVSVD.mm
// LegoCV
//
// Created by Dal Rupnik on 06/03/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVSVD.h"
@implementation OCVSVD
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/Core/Base/OCVAlgorithm.h
================================================
//
// OCVAlgorithm.h
// LegoCV
//
// Created by Dal Rupnik on 04/03/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVObject.h"
@interface OCVAlgorithm : OCVObject
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/Core/Base/OCVAlgorithm.m
================================================
//
// OCVAlgorithm.m
// LegoCV
//
// Created by Dal Rupnik on 04/03/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVAlgorithm.h"
@implementation OCVAlgorithm
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/Core/Base/OCVArrayables.h
================================================
//
// OCVArrayables.h
// LegoCV
//
// Created by Dal Rupnik on 18/03/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#ifndef OCVArrayables_h
#define OCVArrayables_h
#import "OCVInputArrayable.h"
#import "OCVOutputArrayable.h"
#import "OCVInputOutputArrayable.h"
#endif /* OCVData_h */
================================================
FILE: LegoCV/LegoCV/Wrapper/Core/Base/OCVComplex.h
================================================
//
// OCVComplex.h
// LegoCV
//
// Created by Dal Rupnik on 16/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface OCVComplex : NSObject
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/Core/Base/OCVComplex.m
================================================
//
// OCVComplex.m
// LegoCV
//
// Created by Dal Rupnik on 16/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVComplex.h"
@implementation OCVComplex
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/Core/Base/OCVEdges.h
================================================
//
// OCVEdgs.h
// LegoCV
//
// Created by Dal Rupnik on 04/03/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#ifndef OCVEdges_h
#define OCVEdges_h
typedef struct OCVEdges {
NSInteger top, left, bottom, right;
} OCVEdges;
#endif /* OCVEdges_h */
================================================
FILE: LegoCV/LegoCV/Wrapper/Core/Base/OCVFormatter.h
================================================
//
// OCVFormatter.h
// LegoCV
//
// Created by Dal Rupnik on 04/03/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVObject.h"
@interface OCVFormatter : OCVObject
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/Core/Base/OCVFormatter.m
================================================
//
// OCVFormatter.m
// LegoCV
//
// Created by Dal Rupnik on 04/03/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVFormatter.h"
@implementation OCVFormatter
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/Core/Base/OCVGeometry.h
================================================
//
// OCVGeometry.h
// LegoCV
//
// Created by Dal Rupnik on 30/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#ifndef OCVGeometry_h
#define OCVGeometry_h
#import "OCVScalar.h"
#import "OCVPoint.h"
#import "OCVSize.h"
#import "OCVRect.h"
#endif
================================================
FILE: LegoCV/LegoCV/Wrapper/Core/Base/OCVInputArray.h
================================================
//
// OCVInputArray.h
// LegoCV
//
// Created by Dal Rupnik on 24/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVReferenceObject.h"
#import "OCVGeometry.h"
typedef NS_ENUM(NSInteger, OCVInputArrayType) {
OCVInputArrayTypeMat = 65536,
OCVInputArrayTypeExpression = 393216
};
@class OCVMat;
@interface OCVInputArray : OCVReferenceObject
#pragma mark - Public Properties
@property (nonatomic, readonly) OCVInputArrayType type;
@property (nonatomic, readonly) OCVSize size;
@property (nonatomic, readonly) NSInteger channels;
@property (nonatomic, readonly) NSInteger depth;
@property (nonatomic, readonly) NSInteger dims;
@property (nonatomic, readonly) BOOL isEmpty;
@property (nonatomic, readonly) BOOL isMat;
#pragma mark - Initialization
- (void)setup;
#pragma mark - Public Methods
- (NSInteger)channelsWithIndex:(NSInteger)index;
- (NSInteger)depthWithIndex:(NSInteger)index;
- (NSInteger)dimsWithIndex:(NSInteger)index;
- (OCVMat *)mat;
- (OCVMat *)matWithIndex:(NSInteger)index;
#pragma mark - Static Factory Methods
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/Core/Base/OCVInputArray.mm
================================================
//
// OCVInputArray.mm
// LegoCV
//
// Created by Dal Rupnik on 24/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVInputArray+Private.h"
#import "OCVInputArray.h"
#import "OCVMatDataAllocator+Private.h"
#import "OCVMat.h"
@interface OCVInputArray () {
cv::_InputArray *_arrayReference;
}
@end
@implementation OCVInputArray
- (cv::_InputArray *)arrayReference {
return _arrayReference;
}
- (void)setArrayReference:(cv::_InputArray *)arrayReference {
_arrayReference = arrayReference;
}
- (cv::_InputArray *)_input {
[self setup];
return self.arrayReference;
}
- (NSInteger)channels {
return [self channelsWithIndex:-1];
}
- (NSInteger)depth {
return [self depthWithIndex:-1];
}
- (NSInteger)dims {
return [self dimsWithIndex:-1];
}
#pragma mark - Initialization
- (instancetype)init {
[NSException raise:@"InitNotImplemented" format:@"Direct initialization not supported."];
return nil;
}
- (void)dealloc {
if (_arrayReference != NULL) {
free(_arrayReference);
}
_arrayReference = NULL;
}
#pragma mark - Public Methods
- (NSInteger)channelsWithIndex:(NSInteger)index {
return self._input->channels((int)index);
}
- (NSInteger)depthWithIndex:(NSInteger)index {
return self._input->depth((int)index);
}
- (NSInteger)dimsWithIndex:(NSInteger)index {
return self._input->dims((int)index);
}
- (OCVMat *)mat {
return [self matWithIndex:-1];
}
- (OCVMat *)matWithIndex:(NSInteger)index {
cv::Mat mat = self._input->getMat((int)index);
return [[OCVMat alloc] initWithMatInstance:&mat];
}
#pragma mark - Protected Methods
- (void)setup {
if ([self.object isKindOfClass:[OCVMatDataAllocator class]]) {
cv::Mat *mat = [self.object source];
_arrayReference = new cv::_InputArray(*mat);
}
}
#pragma mark - Factory Methods
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/Core/Base/OCVInputArrayable.h
================================================
//
// OCVInputArrayable.h
// LegoCV
//
// Created by Dal Rupnik on 24/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVInputArray.h"
@protocol OCVInputArrayable <NSObject>
@property (nonatomic, readonly) OCVInputArray *input;
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/Core/Base/OCVInputOutputArray.h
================================================
//
// OCVInputOutputArray.h
// LegoCV
//
// Created by Dal Rupnik on 24/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVOutputArray.h"
@interface OCVInputOutputArray : OCVOutputArray
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/Core/Base/OCVInputOutputArray.mm
================================================
//
// OCVInputOutputArray.m
// LegoCV
//
// Created by Dal Rupnik on 24/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVMatDataAllocator+Private.h"
#import "OCVInputOutputArray.h"
#import "OCVInputOutputArray+Private.h"
#import "OCVInputArray+Private.h"
@implementation OCVInputOutputArray
- (cv::_InputOutputArray *)_inputOutput {
[self setup];
return (cv::_InputOutputArray *)self.arrayReference;
}
- (void)setup {
if ([self.object isKindOfClass:[OCVMatDataAllocator class]]) {
cv::Mat *mat = [self.object source];
self.arrayReference = new cv::_InputOutputArray(*mat);
}
}
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/Core/Base/OCVInputOutputArrayable.h
================================================
//
// OCVInputOutputArrayable.h
// LegoCV
//
// Created by Dal Rupnik on 24/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVInputOutputArray.h"
@protocol OCVInputOutputArrayable <NSObject>
@property (nonatomic, readonly) OCVInputOutputArray *inputOutput;
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/Core/Base/OCVOutputArray.h
================================================
//
// OCVOutputArray.h
// LegoCV
//
// Created by Dal Rupnik on 24/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVInputArray.h"
@interface OCVOutputArray : OCVInputArray
@property (nonatomic, readonly) BOOL isFixedSize;
@property (nonatomic, readonly) BOOL isFixedType;
@property (nonatomic, readonly) BOOL isNeeded;
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/Core/Base/OCVOutputArray.mm
================================================
//
// OCVOutputArray.m
// LegoCV
//
// Created by Dal Rupnik on 24/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVMatDataAllocator+Private.h"
#import "OCVOutputArray.h"
#import "OCVInputArray+Private.h"
@implementation OCVOutputArray
- (cv::_OutputArray *)_output {
[self setup];
return (cv::_OutputArray *)self.arrayReference;
}
- (void)setup {
if ([self.object isKindOfClass:[OCVMatDataAllocator class]]) {
cv::Mat *mat = [self.object source];
self.arrayReference = new cv::_OutputArray(*mat);
}
}
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/Core/Base/OCVOutputArrayable.h
================================================
//
// OCVOutputArrayable.h
// LegoCV
//
// Created by Dal Rupnik on 24/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVOutputArray.h"
@protocol OCVOutputArrayable <NSObject>
@property (nonatomic, readonly) OCVOutputArray *output;
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/Core/Base/OCVPoint.h
================================================
//
// OCVPoint.h
// LegoCV
//
// Created by Dal Rupnik on 24/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import <Foundation/Foundation.h>
/*!
* Reference type: cv::Point, cv::Point2i, cv::Point_<int>
*/
typedef struct OCVPoint
{
NSInteger x;
NSInteger y;
}
OCVPoint;
/*!
* Reference type: cv::Point2f, cv::Point_<float>
*/
typedef struct OCVPoint2f {
float x;
float y;
} OCVPoint2f;
================================================
FILE: LegoCV/LegoCV/Wrapper/Core/Base/OCVRect.h
================================================
//
// OCVRect.h
// LegoCV
//
// Created by Dal Rupnik on 22/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "OCVPoint.h"
#import "OCVSize.h"
typedef struct OCVRect
{
OCVPoint origin;
OCVSize size;
}
OCVRect;
/*!
* Objective-C class immutable wrapper for OCVRect struct
*/
@interface OCVRectValue : NSObject
@property (nonatomic, readonly) OCVRect rect;
- (instancetype)initWithRect:(OCVRect)rect;
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/Core/Base/OCVRect.m
================================================
//
// OCVRect.m
// LegoCV
//
// Created by Dal Rupnik on 24/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVRect.h"
@interface OCVRectValue ()
@property (nonatomic, readwrite, assign) OCVRect rect;
@end
@implementation OCVRectValue
- (instancetype)initWithRect:(OCVRect)rect {
self = [super init];
if (self) {
self.rect = rect;
}
return self;
}
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/Core/Base/OCVScalar.h
================================================
//
// OCVScalar.h
// LegoCV
//
// Created by Dal Rupnik on 30/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import <Foundation/Foundation.h>
typedef struct OCVScalar {
double value[4];
}
OCVScalar;
OCVScalar OCVScalarRGB(double r, double g, double b) CF_SWIFT_NAME(OCVScalar.init(r:g:b:));
================================================
FILE: LegoCV/LegoCV/Wrapper/Core/Base/OCVScalar.m
================================================
//
// OCVScalar.m
// LegoCV
//
// Created by Dal Rupnik on 30/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVScalar.h"
OCVScalar OCVScalarRGB(double r, double g, double b) {
OCVScalar scalar;
scalar.value[0] = r;
scalar.value[1] = g;
scalar.value[2] = b;
scalar.value[3] = 0.0;
return scalar;
}
================================================
FILE: LegoCV/LegoCV/Wrapper/Core/Base/OCVSize.h
================================================
//
// OCVSize.h
// LegoCV
//
// Created by Dal Rupnik on 16/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import <Foundation/Foundation.h>
typedef struct OCVSize
{
NSInteger width;
NSInteger height;
}
OCVSize;
================================================
FILE: LegoCV/LegoCV/Wrapper/Core/Base/OCVTypes.h
================================================
//
// OCVTypes.h
// LegoCV
//
// Created by Dal Rupnik on 16/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVEdges.h"
typedef NS_ENUM(NSInteger, OCVDepthType) {
OCVDepthTypeDefault = -1,
OCVDepthTypeCv8U = 0,
OCVDepthTypeCv8S = 1,
OCVDepthTypeCv16U = 2,
OCVDepthTypeCv16S = 3,
OCVDepthTypeCv32S = 4,
OCVDepthTypeCv32F = 5,
OCVDepthTypeCv64F = 6
};
#pragma mark - Types from base.hpp
/*!
* Reference type: cv::DecompTypes
*/
typedef NS_ENUM(NSInteger, OCVDecompositionType) {
OCVDecompositionTypeLU = 0,
OCVDecompositionTypeSVD = 1,
OCVDecompositionTypeEIG = 2,
OCVDecompositionTypeCholesky = 3,
OCVDecompositionTypeQR = 4,
OCVDecompositionTypeNormal = 16
};
/*!
* Reference type: cv::BorderTypes
*/
typedef NS_ENUM(NSInteger, OCVBorderType) {
OCVBorderTypeConstant = 0, //!< `iiiiii|abcdefgh|iiiiiii` with some specified `i`
OCVBorderTypeReplicate = 1, //!< `aaaaaa|abcdefgh|hhhhhhh`
OCVBorderTypeReflect = 2, //!< `fedcba|abcdefgh|hgfedcb`
OCVBorderTypeWrap = 3, //!< `cdefgh|abcdefgh|abcdefg`
OCVBorderTypeReflect101 = 4, //!< `gfedcb|abcdefgh|gfedcba`
OCVBorderTypeTransparent = 5, //!< `uvwxyz|absdefgh|ijklmno`
OCVBorderTypeDefault = OCVBorderTypeReflect101, //!< same as OCVBorderTypeReflect101
OCVBorderTypeIsolated = 16 //!< do not look outside of ROI
};
/*!
* Reference type: cv::NormTypes
*/
typedef NS_ENUM(NSInteger, OCVNormType) {
OCVNormTypeINF = 1,
OCVNormTypeL1 = 2,
OCVNormTypeL2 = 4,
OCVNormTypeL2SQR = 5,
OCVNormTypeHamming = 6,
OCVNormTypeHamming2 = 7,
OCVNormTypeMask = 7,
OCVNormTypeRelative = 8, //!< flag
OCVNormTypeMinMax = 32 //!< flag
};
/*!
* Reference type: cv::CmpTypes
*/
typedef NS_ENUM(NSInteger, OCVCompareType) {
OCVCompareTypeEqual = 0, //!< src1 is equal to src2.
OCVCompareTypeGreater = 1, //!< src1 is greater than src2.
OCVCompareTypeGreaterOrEqual = 2, //!< src1 is greater than or equal to src2.
OCVCompareTypeLess = 3, //!< src1 is less than src2.
OCVCompareTypeLessOrEqual = 4, //!< src1 is less than or equal to src2.
OCVCompareTypeNotEqual = 5 //!< src1 is unequal to src2.
};
/*!
* Reference type: cv::GemmFlags
*/
typedef NS_OPTIONS(NSInteger, OCVGemmFlags) {
OCVGemmFlag1T = 1, //!< transposes src1
OCVGemmFlag2T = 2, //!< transposes src2
OCVGemmFlag3T = 4 //!< transposes src3
};
/*!
* Reference type: cv::DftFlags
*/
typedef NS_OPTIONS(NSInteger, OCVTransformFlags) {
OCVTransformInverse = 1,
OCVTransformScale = 2,
OCVTransformRows = 4,
OCVTransformComplexOutput = 16,
OCVTransformRealOutput = 32,
};
#pragma mark - Types from core.hpp
/*!
* Reference type: cv::KmeansFlags
*/
typedef NS_OPTIONS(NSInteger, OCVKMeansTypes) {
OCVKMeansTypeRandomCenters = 0,
OCVKMeansPPCenters = 2,
OCVKMeansUseInitialLabels = 1
};
/*!
* Reference type: cv::LineTypes
*/
typedef NS_ENUM(NSInteger, OCVLineType) {
OCVLineTypeFilled = -1,
OCVLineTypeLine4 = 4, //!< 4-connected line
OCVLineTypeLine8 = 8, //!< 8-connected line
OCVLineTypeLineAA = 16 //!< antialiased line
};
/*!
* Reference type: cv::HersheyFonts
*/
typedef NS_ENUM(NSInteger, OCVHersheyFont) {
OCVHersheyFontSimplex = 0, //!< normal size sans-serif font
OCVHersheyFontPlain = 1, //!< small size sans-serif font
OCVHersheyFontDuplex = 2, //!< normal size sans-serif font (more complex than FONT_HERSHEY_SIMPLEX)
OCVHersheyFontComplex = 3, //!< normal size serif font
OCVHersheyFontTriplex = 4, //!< normal size serif font (more complex than FONT_HERSHEY_COMPLEX)
OCVHersheyFontComplexSmall = 5, //!< smaller version of FONT_HERSHEY_COMPLEX
OCVHersheyFontScriptSimplex = 6, //!< hand-writing style font
OCVHersheyFontScriptComplex = 7, //!< more complex variant of FONT_HERSHEY_SCRIPT_SIMPLEX
OCVHersheyFontItalic = 16 //!< flag for italic font
};
/*!
* Reference type: cv::ReduceTypes
*/
typedef NS_ENUM(NSInteger, OCVReduceType) {
OCVReduceTypeSum = 0, //!< the output is the sum of all rows/columns of the matrix.
OCVReduceTypeAvg = 1, //!< the output is the mean vector of all rows/columns of the matrix.
OCVReduceTypeMax = 2, //!< the output is the maximum (column/row-wise) of all rows/columns of the matrix.
OCVReduceTypeMin = 3 //!< the output is the minimum (column/row-wise) of all rows/columns of the matrix.
};
/*!
* Reference type: core.hpp cv::flip() function codes
*/
typedef NS_ENUM(NSInteger, OCVFlipCode) {
OCVFlipCodeXAxis = 0,
OCVFlipCodeYAxis = 1,
OCVFlipCodeBoth = -1
};
/*!
* Reference type: cv::RotateFlags
*/
typedef NS_OPTIONS(NSInteger, OCVRotationTypes) {
OCVRotationType90Clockwise = 0, //Rotate 90 degrees clockwise
OCVRotationType180 = 1, //Rotate 180 degrees clockwise
OCVRotationType90CounterClockwise = 2, //Rotate 270 degrees clockwise
};
/*!
* Reference type: cv::SortFlags
*/
typedef NS_OPTIONS(NSInteger, OCVSortTypes) {
OCVSortTypeEveryRow = 0, //!< each matrix row is sorted independently
OCVSortTypeEveryColumn = 1, //!< each matrix column is sorted
//!< independently; this flag and the previous one are
//!< mutually exclusive.
OCVSortTypeAscending = 0, //!< each matrix row is sorted in the ascending
//!< order.
OCVSortTypeDescending = 16 //!< each matrix row is sorted in the
//!< descending order; this flag and the previous one are also
//!< mutually exclusive.
};
/*!
* Reference type: cv::CovarFlags
*/
typedef NS_OPTIONS(NSInteger, OCVCovarTypes) {
OCVCovarTypeScrambled = 0,
OCVCovarTypeNormal = 1,
OCVCovarTypeUseAvg = 2,
OCVCovarTypeScale = 4,
OCVCovarTypeRows = 8,
OCVCovarTypeCols = 16
};
================================================
FILE: LegoCV/LegoCV/Wrapper/Core/Base/OCVVector.h
================================================
//
// OCVVector.h
// LegoCV
//
// Created by Dal Rupnik on 04/03/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVObject.h"
/*!
* Custom OpenCV vector of data (wraps std::vector)
*/
@interface OCVVector : OCVObject
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/Core/Base/OCVVector.m
================================================
//
// OCVVector.m
// LegoCV
//
// Created by Dal Rupnik on 04/03/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVVector.h"
@implementation OCVVector
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/Core/Mat/OCVMat.h
================================================
//
// OCVMat.h
// LegoCV
//
// Created by Dal Rupnik on 16/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVMatDataAllocator.h"
#import "OCVTypes.h"
#import "OCVGeometry.h"
#import "OCVMatExpr.h"
#import "OCVInputArrayable.h"
#import "OCVOutputArrayable.h"
#import "OCVInputOutputArrayable.h"
NS_ASSUME_NONNULL_BEGIN
/*!
* OCVMat is a simple Objective-C wrapper around cv::Mat instance.
*/
@interface OCVMat : OCVMatDataAllocator <NSCopying, OCVInputArrayable, OCVOutputArrayable, OCVInputOutputArrayable>
#pragma mark - Public Properties
@property (nonatomic, readonly) NSInteger rows;
@property (nonatomic, readonly) NSInteger cols;
@property (nonatomic, readonly) NSInteger dims;
@property (nonatomic, readonly) BOOL isSubmatrix;
@property (nonatomic, readonly) BOOL isContinuous;
@property (nonatomic, readonly) BOOL isEmpty;
@property (nonatomic, readonly) NSInteger total;
@property (nonatomic, readonly) NSInteger elemSize;
@property (nonatomic, readonly) NSInteger elemSize1;
@property (nonatomic, readonly) OCVDepthType type;
@property (nonatomic, readonly) NSInteger channels;
@property (nonatomic, readonly) OCVSize size;
#pragma mark - Initialization
- (instancetype)initWithRows:(NSInteger)rows cols:(NSInteger)cols;
- (instancetype)initWithRows:(NSInteger)rows cols:(NSInteger)cols type:(OCVDepthType)type channels:(NSInteger)channels;
- (instancetype)initWithSize:(OCVSize)size type:(OCVDepthType)type channels:(NSInteger)channels;
/*!
* Creates a new deep copy of the matrix
*/
- (instancetype)initWithMat:(OCVMat *)mat;
#pragma mark - Public Methods
/*!
* Creates a deep copy of the OCVMat underlying matrix, same as [self copy], as supported by NSCopying.
*/
- (OCVMat *)clone;
/*!
* Returns OCVMat with submatrix (data is not copied and remains in original matrix)
*/
- (OCVMat *)submatrixWithRect:(OCVRect)rect;
#pragma mark - Operations
- (OCVMat *)reshapeWithChannels:(NSInteger)channels;
- (OCVMat *)reshapeWithChannels:(NSInteger)channels rows:(NSInteger)rows;
- (OCVMat *)transpose;
- (OCVMat *)inverse;
- (OCVMat *)inverseWithMethod:(OCVDecompositionType)method;
- (OCVMat *)multiplyWithArray:(id<OCVInputArrayable>)inputArray;
- (OCVMat *)multiplyWithArray:(id<OCVInputArrayable>)inputArray scale:(double)scale;
- (OCVMat *)crossWithArray:(id<OCVInputArrayable>)inputArray;
- (double)dotWithArray:(id<OCVInputArrayable>)inputArray;
#pragma mark - Public Factory Methods
+ (instancetype)zerosWithRows:(NSInteger)rows cols:(NSInteger)cols type:(OCVDepthType)type channels:(NSInteger)channels;
+ (instancetype)zerosWithSize:(OCVSize)size type:(OCVDepthType)type channels:(NSInteger)channels;
+ (instancetype)onesWithRows:(NSInteger)rows cols:(NSInteger)cols type:(OCVDepthType)type channels:(NSInteger)channels;
+ (instancetype)onesWithSize:(OCVSize)size type:(OCVDepthType)type channels:(NSInteger)channels;
@end
NS_ASSUME_NONNULL_END
#pragma mark - iOS Extensions
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
@interface OCVMat (UIKit)
- (instancetype)initWithImage:(UIImage *)image;
- (UIImage *)image;
@end
NS_ASSUME_NONNULL_END
#import <CoreGraphics/CoreGraphics.h>
NS_ASSUME_NONNULL_BEGIN
@interface OCVMat (CoreGraphics)
- (instancetype)initWithImageRef:(CGImageRef)imageRef;
- (instancetype)initWithCGSize:(CGSize)size;
- (instancetype)initWithCGSize:(CGSize)size type:(OCVDepthType)type channels:(NSInteger)channels;
/*!
* Construct image reference and returns it
*/
- (CGImageRef)imageRef;
NS_ASSUME_NONNULL_END
@end
#import <CoreVideo/CoreVideo.h>
NS_ASSUME_NONNULL_BEGIN
@interface OCVMat (CoreVideo)
- (instancetype)initWithPixelBuffer:(CVPixelBufferRef)buffer;
@end
NS_ASSUME_NONNULL_END
================================================
FILE: LegoCV/LegoCV/Wrapper/Core/Mat/OCVMat.mm
================================================
//
// OCVMat.mm
// LegoCV
//
// Created by Dal Rupnik on 16/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVGeometry+Private.h"
#import "OCVMatDataAllocator+Private.h"
#import "OCVInputArray+Private.h"
#import "OCVOutputArray.h"
#import "OCVInputOutputArray.h"
#import "OCVMat.h"
@interface OCVMat ()
// A reference to output array proxy, to guarantee a single one is passed.
@property (nonatomic, strong) OCVInputOutputArray* inputOutput;
@end
@implementation OCVMat
#pragma mark - Private Properties
#pragma mark - Public Properties
- (BOOL)isSubmatrix {
return self.source->isSubmatrix();
}
- (NSInteger)rows {
return self.source->rows;
}
- (NSInteger)cols {
return self.source->cols;
}
- (NSInteger)channels {
return self.source->channels();
}
- (OCVDepthType)type {
return (OCVDepthType)self.source->depth();
}
- (OCVSize)size {
return convertSize(self.source->size());
}
- (NSString *)description {
return [NSString stringWithFormat:@"OCVMat: [%ld, %ld], channels: %ld, type: %ld]", (long)self.rows, (long)self.cols, (long)self.channels, (long)self.type];
}
#pragma mark - Initialization
- (instancetype)init {
return [super initWithMatInstance:new cv::Mat()];
}
- (instancetype)initWithSize:(OCVSize)size type:(OCVDepthType)type channels:(NSInteger)channels {
return [self initWithRows:size.height cols:size.width type:type channels:channels];
}
- (instancetype)initWithRows:(NSInteger)rows cols:(NSInteger)cols {
return [self initWithRows:rows cols:cols type:OCVDepthTypeCv8U channels:4];
}
- (instancetype)initWithRows:(NSInteger)rows cols:(NSInteger)cols type:(OCVDepthType)type channels:(NSInteger)channels {
// Convert type to OpenCV type
int cvType = (int)CV_MAKETYPE(type, channels);
return [super initWithMatInstance:new cv::Mat((int)rows, (int)cols, cvType)];
}
#pragma mark - Convenience Initialization
- (instancetype)initWithMat:(OCVMat *)mat {
cv::Mat *matSource = new cv::Mat(mat.source->clone());
return [self initWithMatInstance:matSource];
}
- (instancetype)initWithPixelBuffer:(CVPixelBufferRef)buffer {
cv::Mat mat = [self.class matFromBuffer:buffer];
return [self initWithMatInstance:&mat];
}
- (instancetype)initWithImage:(UIImage *)image {
cv::Mat mat = [self.class matFromImage:image];
return [self initWithMatInstance:&mat];
}
- (instancetype)initWithImageRef:(CGImageRef)imageRef {
cv::Mat mat = [self.class matFromImageRef:imageRef];
return [self initWithMatInstance:&mat];
}
- (instancetype)initWithCGSize:(CGSize)size {
return [self initWithCGSize:size type:OCVDepthTypeCv8U channels:4];
}
- (instancetype)initWithCGSize:(CGSize)size type:(OCVDepthType)type channels:(NSInteger)channels {
return [self initWithRows:(NSInteger)size.height cols:(NSInteger)size.width type:type channels:channels];
}
#pragma mark - NSCopying
- (instancetype)copyWithZone:(NSZone *)zone {
return [[[self class] alloc] initWithMat:self];
}
#pragma mark - Public Methods
- (OCVMat *)clone {
cv::Mat *mat = new cv::Mat(self.source->clone());
return [[OCVMat alloc] initWithMatInstance:mat];
}
- (OCVMat *)submatrixWithRect:(OCVRect)rect {
cv::Mat sourceMat = *self.source;
cv::Mat mat = sourceMat(convertRect(rect));
return [[OCVMat alloc] initWithMatInstance:new cv::Mat(mat)];
}
- (CGImageRef)imageRef {
if (self.source == NULL) {
return nil;
}
return [self.class imageRefFromMat:*(self.source)];
}
- (UIImage *)image {
CGImageRef imageRef = [self imageRef];
return [UIImage imageWithCGImage:imageRef];
}
- (OCVMat *)reshapeWithChannels:(NSInteger)channels {
return [self reshapeWithChannels:channels rows:0];
}
- (OCVMat *)reshapeWithChannels:(NSInteger)channels rows:(NSInteger)rows {
cv::Mat mat = self.source->reshape((int)channels, (int)rows);
return [[OCVMat alloc] initWithMatInstance:new cv::Mat(mat)];
}
- (OCVMat *)transpose {
cv::Mat mat = self.source->t();
return [[OCVMat alloc] initWithMatInstance:new cv::Mat(mat)];
}
- (OCVMat *)inverse {
return [self inverseWithMethod:OCVDecompositionTypeLU];
}
- (OCVMat *)inverseWithMethod:(OCVDecompositionType)method {
cv::Mat mat = self.source->inv((int)method);
return [[OCVMat alloc] initWithMatInstance:new cv::Mat(mat)];
}
- (OCVMat *)multiplyWithArray:(id<OCVInputArrayable>)inputArray {
return [self multiplyWithArray:inputArray scale:1];
}
- (OCVMat *)multiplyWithArray:(id<OCVInputArrayable>)inputArray scale:(double)scale {
cv::Mat mat = self.source->mul(*inputArray.input._input, scale);
return [[OCVMat alloc] initWithMatInstance:new cv::Mat(mat)];
}
- (OCVMat *)crossWithArray:(id<OCVInputArrayable>)inputArray {
cv::Mat mat = self.source->cross(*inputArray.input._input);
return [[OCVMat alloc] initWithMatInstance:new cv::Mat(mat)];
}
- (double)dotWithArray:(id<OCVInputArrayable>)inputArray {
return self.source->dot(*inputArray.input._input);
}
#pragma mark - OCVInputOutputArrayable
- (OCVInputOutputArray *)inputOutput {
if (!_inputOutput) {
_inputOutput = [[OCVInputOutputArray alloc] initWithObject:self];
}
return _inputOutput;
}
#pragma mark - OCVInputArrayable
- (OCVInputArray *)input {
return self.inputOutput;
}
#pragma mark - OCVOutputArrayable
- (OCVOutputArray *)output {
return self.inputOutput;
}
#pragma mark - Public Factory Methods
+ (instancetype)zerosWithSize:(OCVSize)size type:(OCVDepthType)type channels:(NSInteger)channels {
return [self zerosWithRows:size.height cols:size.width type:type channels:channels];
}
+ (instancetype)zerosWithRows:(NSInteger)rows cols:(NSInteger)cols type:(OCVDepthType)type channels:(NSInteger)channels {
int cvType = (int)CV_MAKETYPE(type, channels);
cv::Mat mat = cv::Mat::zeros((int)rows, (int)cols, cvType);
return [[OCVMat alloc] initWithMatInstance:new cv::Mat(mat)];
}
+ (instancetype)onesWithSize:(OCVSize)size type:(OCVDepthType)type channels:(NSInteger)channels {
return [self onesWithRows:size.height cols:size.width type:type channels:channels];
}
+ (instancetype)onesWithRows:(NSInteger)rows cols:(NSInteger)cols type:(OCVDepthType)type channels:(NSInteger)channels {
int cvType = (int)CV_MAKETYPE(type, channels);
cv::Mat mat = cv::Mat::ones((int)rows, (int)cols, cvType);
return [[OCVMat alloc] initWithMatInstance:new cv::Mat(mat)];
}
#pragma mark - Private Utility Methods
+ (cv::Mat)matFromImageRef:(CGImageRef)imageRef {
CGColorSpaceRef colorSpace = CGImageGetColorSpace(imageRef);
size_t cols = CGImageGetWidth(imageRef);
size_t rows = CGImageGetHeight(imageRef);
cv::Mat cvMat((int)rows, (int)cols, CV_8UC4);
CGContextRef contextRef = CGBitmapContextCreate(
cvMat.data, // Pointer to data
cols, // Width of bitmap
rows, // Height of bitmap
8, // Bits per component
cvMat.step[0], // Bytes per row
colorSpace, // Colorspace
kCGImageAlphaNoneSkipLast|kCGBitmapByteOrderDefault // Bitmap info flags
);
CGContextDrawImage(contextRef, CGRectMake(0, 0, cols, rows), imageRef);
CGContextRelease(contextRef);
CGColorSpaceRelease(colorSpace);
return cvMat;
}
+ (cv::Mat)matFromImage:(UIImage *)image {
CGColorSpaceRef colorSpace = CGImageGetColorSpace(image.CGImage);
CGFloat cols = image.size.width;
CGFloat rows = image.size.height;
cv::Mat cvMat(rows, cols, CV_8UC4);
CGContextRef contextRef = CGBitmapContextCreate(
cvMat.data, // Pointer to data
cols, // Width of bitmap
rows, // Height of bitmap
8, // Bits per component
cvMat.step[0], // Bytes per row
colorSpace, // Colorspace
kCGImageAlphaNoneSkipLast|kCGBitmapByteOrderDefault // Bitmap info flags
);
CGContextDrawImage(contextRef, CGRectMake(0, 0, cols, rows), image.CGImage);
CGContextRelease(contextRef);
CGColorSpaceRelease(colorSpace);
return cvMat;
}
+ (cv::Mat)matFromBuffer:(CVPixelBufferRef)buffer {
size_t cols = CVPixelBufferGetWidth(buffer);
size_t rows = CVPixelBufferGetHeight(buffer);
cv::Mat cvMat((int)rows, (int)cols, CV_8UC4); // 8 bits per component, 4 channels (color channels + alpha)
CVPixelBufferLockBaseAddress(buffer, 0);
void *baseAddress = CVPixelBufferGetBaseAddress(buffer);
size_t dataSize = CVPixelBufferGetDataSize(buffer);
size_t targetDataSize = rows * cols * 4;
if (dataSize >= targetDataSize) {
std::memcpy(cvMat.data, baseAddress, targetDataSize);
}
CVPixelBufferUnlockBaseAddress(buffer, 0);
return cvMat;
}
+ (CGImageRef)imageRefFromMat:(cv::Mat)cvMat {
NSData *data = [NSData dataWithBytes:cvMat.data length:cvMat.elemSize()*cvMat.total()];
CGColorSpaceRef colorSpace;
CGBitmapInfo bitmapInfo;
if (cvMat.elemSize() == 1) {
colorSpace = CGColorSpaceCreateDeviceGray();
bitmapInfo = kCGImageAlphaNone | kCGBitmapByteOrderDefault;
}
else {
colorSpace = CGColorSpaceCreateDeviceRGB();
bitmapInfo = kCGImageAlphaLast | kCGBitmapByteOrderDefault;
}
CGDataProviderRef provider = CGDataProviderCreateWithCFData((__bridge CFDataRef)data);
CGImageRef imageRef = CGImageCreate(
cvMat.cols, //width
cvMat.rows, //height
8, //bits per component
8 * cvMat.elemSize(), //bits per pixel
cvMat.step[0], //bytesPerRow
colorSpace, //colorspace
bitmapInfo, // bitmap info
provider, //CGDataProviderRef
NULL, //decode
false, //should interpolate
kCGRenderingIntentDefault //intent
);
CGDataProviderRelease(provider);
CGColorSpaceRelease(colorSpace);
return imageRef;
}
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/Core/Mat/OCVMatDataAllocator.h
================================================
//
// OCVMatDataAllocator.h
// LegoCV
//
// Created by Dal Rupnik on 24/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVObject.h"
@interface OCVMatDataAllocator : OCVObject
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/Core/Mat/OCVMatDataAllocator.mm
================================================
//
// OCVMatDataAllocator.mm
// LegoCV
//
// Created by Dal Rupnik on 24/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import <opencv2/core.hpp>
#import "OCVMatDataAllocator.h"
@interface OCVMatDataAllocator () {
cv::Mat *source;
}
@end
@implementation OCVMatDataAllocator
- (cv::Mat *)source {
return source;
}
- (instancetype)initWithMatInstance:(cv::Mat *)mat {
self = [super init];
if (self) {
self->source = mat;
}
return self;
}
- (void)dealloc {
if (source) {
free(source);
}
source = NULL;
}
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/Core/Mat/OCVMatExpr.h
================================================
//
// OCVMatExpr.h
// LegoCV
//
// Created by Dal Rupnik on 16/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface OCVMatExpr : NSObject
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/Core/Mat/OCVMatExpr.mm
================================================
//
// OCVMatExpr.m
// LegoCV
//
// Created by Dal Rupnik on 16/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVMatExpr.h"
@implementation OCVMatExpr
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/Core/Mat/OCVUMat.h
================================================
//
// OCVUMat.h
// LegoCV
//
// Created by Dal Rupnik on 04/03/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVObject.h"
@interface OCVUMat : OCVObject
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/Core/Mat/OCVUMat.m
================================================
//
// OCVUMat.m
// LegoCV
//
// Created by Dal Rupnik on 04/03/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVUMat.h"
@implementation OCVUMat
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/Core/OCVCore.h
================================================
//
// OCVCore.h
// LegoCV
//
// Created by Dal Rupnik on 23/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#ifndef OCVCore_h
#define OCVCore_h
#import "OCVMat.h"
#import "OCVOperation.h"
#import "OCVInputArrayable.h"
#import "OCVOutputArrayable.h"
#import "OCVInputOutputArray.h"
#import "OCVInputOutputArrayable.h"
#import "OCVCascadeClassifier.h"
#endif /* OCVCore_h */
================================================
FILE: LegoCV/LegoCV/Wrapper/Core/Operations/OCVMinimumMaximum.h
================================================
//
// OCVMinimumMaximum.h
// LegoCV
//
// Created by Dal Rupnik on 04/03/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVGeometry.h"
#import "OCVObject.h"
@interface OCVMinimumMaximumLocation : OCVObject
@property (nonatomic, assign) double minimumValue;
@property (nonatomic, assign) double maximumValue;
@property (nonatomic, assign) OCVPoint minimumLocation;
@property (nonatomic, assign) OCVPoint maximumLocation;
@end
@interface OCVMinimumMaximumIndex : OCVObject
@property (nonatomic, assign) double minimumValue;
@property (nonatomic, assign) double maximumValue;
@property (nonatomic, assign) NSInteger minimumIndex;
@property (nonatomic, assign) NSInteger maximumIndex;
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/Core/Operations/OCVMinimumMaximum.m
================================================
//
// OCVMinimumMaximum.m
// LegoCV
//
// Created by Dal Rupnik on 04/03/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVMinimumMaximum.h"
================================================
FILE: LegoCV/LegoCV/Wrapper/Core/Operations/OCVOperation+Bitwise.h
================================================
//
// OCVOperation+Bitwise.h
// LegoCV
//
// Created by Dal Rupnik on 04/03/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVObject.h"
#import "OCVInputArrayable.h"
#import "OCVOutputArrayable.h"
#import "OCVInputOutputArrayable.h"
#import "OCVGeometry.h"
#import "OCVTypes.h"
#import "OCVOperation.h"
NS_ASSUME_NONNULL_BEGIN
/*!
* Wraps bitwise operations defined in core.hpp
*/
@interface OCVOperation (Bitwise)
/*!
* cv::bitwise_and()
*/
+ (void)bitwiseAndWithSource:(id<OCVInputArrayable>)source1 withSource:(id<OCVInputArrayable>)source2 toDestination:(id<OCVOutputArrayable>)destination;
+ (void)bitwiseAndWithSource:(id<OCVInputArrayable>)source1 withSource:(id<OCVInputArrayable>)source2 toDestination:(id<OCVOutputArrayable>)destination withMask:(id<OCVInputArrayable>)mask;
/*!
* cv::bitwise_or()
*/
+ (void)bitwiseOrWithSource:(id<OCVInputArrayable>)source1 withSource:(id<OCVInputArrayable>)source2 toDestination:(id<OCVOutputArrayable>)destination;
+ (void)bitwiseOrWithSource:(id<OCVInputArrayable>)source1 withSource:(id<OCVInputArrayable>)source2 toDestination:(id<OCVOutputArrayable>)destination withMask:(id<OCVInputArrayable>)mask;
/*!
* cv::bitwise_xor()
*/
+ (void)bitwiseXorWithSource:(id<OCVInputArrayable>)source1 withSource:(id<OCVInputArrayable>)source2 toDestination:(id<OCVOutputArrayable>)destination;
+ (void)bitwiseXorWithSource:(id<OCVInputArrayable>)source1 withSource:(id<OCVInputArrayable>)source2 toDestination:(id<OCVOutputArrayable>)destination withMask:(id<OCVInputArrayable>)mask;
/*!
* cv::bitwise_not()
*/
+ (void)bitwiseNotWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination;
+ (void)bitwiseNotWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination withMask:(id<OCVInputArrayable>)mask;
@end
NS_ASSUME_NONNULL_END
================================================
FILE: LegoCV/LegoCV/Wrapper/Core/Operations/OCVOperation+Bitwise.mm
================================================
//
// OCVOperation+Bitwise.mm
// LegoCV
//
// Created by Dal Rupnik on 04/03/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVOperation+Bitwise.h"
================================================
FILE: LegoCV/LegoCV/Wrapper/Core/Operations/OCVOperation+Transform.h
================================================
//
// OCVOperation+Transform.h
// LegoCV
//
// Created by Dal Rupnik on 04/03/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVObject.h"
#import "OCVInputArrayable.h"
#import "OCVOutputArrayable.h"
#import "OCVInputOutputArrayable.h"
#import "OCVGeometry.h"
#import "OCVTypes.h"
#import "OCVOperation.h"
NS_ASSUME_NONNULL_BEGIN
/*!
* Wraps transform operations defined in core.hpp such as DFT and DCT
*/
@interface OCVOperation (Transform)
/*!
* cv::dft()
*/
+ (BOOL)dftWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destinatio;
+ (BOOL)dftWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination flags:(OCVTransformFlags)flags;
+ (BOOL)dftWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination flags:(OCVTransformFlags)flags nonZeroRows:(NSInteger)nonZeroRows;
/*!
* cv::idft()
*/
+ (BOOL)idftWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destinatio;
+ (BOOL)idftWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination flags:(OCVTransformFlags)flags;
+ (BOOL)idftWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination flags:(OCVTransformFlags)flags nonZeroRows:(NSInteger)nonZeroRows;
/*!
* cv::dct()
*/
+ (BOOL)dctWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destinatio;
+ (BOOL)dctWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination flags:(OCVTransformFlags)flags;
+ (BOOL)dctWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination flags:(OCVTransformFlags)flags nonZeroRows:(NSInteger)nonZeroRows;
/*!
* cv::idct()
*/
+ (BOOL)idctWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destinatio;
+ (BOOL)idctWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination flags:(OCVTransformFlags)flags;
+ (BOOL)idctWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination flags:(OCVTransformFlags)flags nonZeroRows:(NSInteger)nonZeroRows;
/*!
* cv::mulSpectrums()
*/
+ (BOOL)multiplySpectrumsWithSource:(id<OCVInputArrayable>)source1 withSource:(id<OCVInputArrayable>)source2 toDestination:(id<OCVOutputArrayable>)destinatio;
+ (BOOL)multiplySpectrumsWithSource:(id<OCVInputArrayable>)source1 withSource:(id<OCVInputArrayable>)source2 toDestination:(id<OCVOutputArrayable>)destination flags:(OCVTransformFlags)flags;
+ (BOOL)multiplySpectrumsWithSource:(id<OCVInputArrayable>)source1 withSource:(id<OCVInputArrayable>)source2 toDestination:(id<OCVOutputArrayable>)destination flags:(OCVTransformFlags)flags conjugateSecond:(BOOL)conjugateSecond;
/*!
* cv::getOptimalDFTSize()
*/
+ (NSInteger)optimalDFTSizeForVectorSize:(NSInteger)vectorSize;
@end
NS_ASSUME_NONNULL_END
================================================
FILE: LegoCV/LegoCV/Wrapper/Core/Operations/OCVOperation+Transform.mm
================================================
//
// OCVOperation+Transform.mm
// LegoCV
//
// Created by Dal Rupnik on 04/03/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVOperation+Transform.h"
================================================
FILE: LegoCV/LegoCV/Wrapper/Core/Operations/OCVOperation.h
================================================
//
// OCVOperation.h
// LegoCV
//
// Created by Dal Rupnik on 23/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVObject.h"
#import "OCVInputArrayable.h"
#import "OCVOutputArrayable.h"
#import "OCVInputOutputArrayable.h"
#import "OCVGeometry.h"
#import "OCVTypes.h"
#import "OCVVector.h"
#import "OCVUMat.h"
#import "OCVMinimumMaximum.h"
#import "OCVTermCriteria.h"
NS_ASSUME_NONNULL_BEGIN
/*!
* Wraps operations defined in core.hpp
*/
@interface OCVOperation : OCVObject
+ (void)swapMat:(OCVMat *)a toMat:(OCVMat *)b;
+ (void)swapUMat:(OCVUMat *)a toUMat:(OCVUMat *)b;
+ (NSInteger)borderInterpolateWithPixel:(NSInteger)pixel ofLength:(NSInteger)length withBorderType:(OCVBorderType)borderType;
/*!
* cv::copyMakeBorder()
*/
+ (OCVScalar)copyMakeBorderFromSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination withTop:(NSInteger)top withBottom:(NSInteger)bottom withLeft:(NSInteger)left withRight:(NSInteger)right withBorderType:(OCVBorderType)borderType;
/*!
* cv::copyMakeBorder() - Convenience method with custom struct
*/
+ (OCVScalar)copyMakeBorderFromSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination withEdges:(OCVEdges)edges withBorderType:(OCVBorderType)borderType;
#pragma mark - Basic operations
/*!
* cv::add()
*/
+ (void)addSource:(id<OCVInputArrayable>)source1 toSource:(id<OCVInputArrayable>)source2 toDestination:(id<OCVOutputArrayable>)destination;
+ (void)addSource:(id<OCVInputArrayable>)source1 toSource:(id<OCVInputArrayable>)source2 toDestination:(id<OCVOutputArrayable>)destination withMask:(id<OCVInputArrayable>)mask;
+ (void)addSource:(id<OCVInputArrayable>)source1 toSource:(id<OCVInputArrayable>)source2 toDestination:(id<OCVOutputArrayable>)destination withMask:(id<OCVInputArrayable>)mask ofDepthType:(NSInteger)depthType;
/*!
* cv::subtract()
*/
+ (void)subtractSource:(id<OCVInputArrayable>)source1 fromSource:(id<OCVInputArrayable>)source2 toDestination:(id<OCVOutputArrayable>)destination;
+ (void)subtractSource:(id<OCVInputArrayable>)source1 fromSource:(id<OCVInputArrayable>)source2 toDestination:(id<OCVOutputArrayable>)destination withMask:(id<OCVInputArrayable>)mask;
+ (void)subtractSource:(id<OCVInputArrayable>)source1 fromSource:(id<OCVInputArrayable>)source2 toDestination:(id<OCVOutputArrayable>)destination withMask:(id<OCVInputArrayable>)mask ofDepthType:(NSInteger)depthType;
/*!
* cv::multiply()
*/
+ (void)multiplySource:(id<OCVInputArrayable>)source1 withSource:(id<OCVInputArrayable>)source2 toDestination:(id<OCVOutputArrayable>)destination;
+ (void)multiplySource:(id<OCVInputArrayable>)source1 withSource:(id<OCVInputArrayable>)source2 toDestination:(id<OCVOutputArrayable>)destination withScale:(double)scale;
+ (void)multiplySource:(id<OCVInputArrayable>)source1 withSource:(id<OCVInputArrayable>)source2 toDestination:(id<OCVOutputArrayable>)destination withScale:(double)scale ofDepthType:(NSInteger)depthType;
/*!
* cv::divide()
*/
+ (void)divideSource:(id<OCVInputArrayable>)source1 withSource:(id<OCVInputArrayable>)source2 toDestination:(id<OCVOutputArrayable>)destination;
+ (void)divideSource:(id<OCVInputArrayable>)source1 withSource:(id<OCVInputArrayable>)source2 toDestination:(id<OCVOutputArrayable>)destination withScale:(double)scale;
+ (void)divideSource:(id<OCVInputArrayable>)source1 withSource:(id<OCVInputArrayable>)source2 toDestination:(id<OCVOutputArrayable>)destination withScale:(double)scale ofDepthType:(NSInteger)depthType;
+ (void)divideScale:(double)scale withSource:(id<OCVInputArrayable>)source2 toDestination:(id<OCVOutputArrayable>)destination;
+ (void)divideScale:(double)scale withSource:(id<OCVInputArrayable>)source2 toDestination:(id<OCVOutputArrayable>)destination ofDepthType:(NSInteger)depthType;
/*!
* cv::scaleAdd()
*/
+ (void)scaleAddSource:(id<OCVInputArrayable>)source1 withAlpha:(double)alpha withSource:(id<OCVInputArrayable>)source2 toDestination:(id<OCVOutputArrayable>)destination;
/*!
* cv::addWeighted()
*/
+ (void)addWeightedSource:(id<OCVInputArrayable>)source1 withAlpha:(double)alpha withSource:(id<OCVInputArrayable>)source2 withBeta:(double)beta withGamma:(double)gamma toDestination:(id<OCVOutputArrayable>)destination;
+ (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;
/*!
* cv::convertScaleAbs()
*/
+ (void)convertScaleAbsoluteWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination;
+ (void)convertScaleAbsoluteWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination withAlpha:(double)alpha;
+ (void)convertScaleAbsoluteWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination withAlpha:(double)alpha withBeta:(double)beta;
/*!
* cv::convertFp16()
*/
+ (void)convertFp16Source:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination;
/*!
* cv::LUT()
*/
+ (void)lookupTableTransformWithSource:(id<OCVInputArrayable>)source withLookupTable:(id<OCVInputArrayable>)lookupTable toDestination:(id<OCVOutputArrayable>)destination;
/*!
* cv::sum()
*/
+ (OCVScalar)sumOfSource:(id<OCVInputArrayable>)source;
/*!
* cv::countNonZero()
*/
+ (NSInteger)countNonZeroInSource:(id<OCVInputArrayable>)source;
/*!
* cv::findNonZero()
*/
+ (void)findNonZeroInSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination;
/*!
* cv::mean()
*/
+ (OCVScalar)meanOfSource:(id<OCVInputArrayable>)source;
+ (OCVScalar)meanOfSource:(id<OCVInputArrayable>)source withMask:(id<OCVInputArrayable>)mask;
/*!
* cv::meanStdDev()
*/
+ (void)meanStandardDeviationOfSource:(id<OCVInputArrayable>)source withMean:(id<OCVOutputArrayable>)mean withStandardDeviation:(id<OCVOutputArrayable>)standardDeviation;
+ (void)meanStandardDeviationOfSource:(id<OCVInputArrayable>)source withMean:(id<OCVOutputArrayable>)mean withStandardDeviation:(id<OCVOutputArrayable>)standardDeviation withMask:(id<OCVInputArrayable>)mask;
/*!
* cv::norm()
*/
+ (double)normOfSource:(id<OCVInputArrayable>)source;
+ (double)normOfSource:(id<OCVInputArrayable>)source withType:(OCVNormType)normType;
+ (double)normOfSource:(id<OCVInputArrayable>)source withType:(OCVNormType)normType withMask:(id<OCVInputArrayable>)mask;
/*!
* cv::PSNR()
*/
+ (double)PSNROfSource:(id<OCVInputArrayable>)source1 withSource:(id<OCVInputArrayable>)source2;
/*!
* cv::batchDistance()
*/
+ (void)batchDistanceOfSource:(id<OCVInputArrayable>)source1 toSource:(id<OCVInputArrayable>)source2 toDestination:(id<OCVOutputArrayable>)destination ofDepthType:(NSInteger)depthType toIndex:(id<OCVOutputArrayable>)index;
+ (void)batchDistanceOfSource:(id<OCVInputArrayable>)source1 toSource:(id<OCVInputArrayable>)source2 toDestination:(id<OCVOutputArrayable>)destination ofDepthType:(NSInteger)depthType toIndex:(id<OCVOutputArrayable>)index withNormType:(OCVNormType)normType;
+ (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;
+ (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;
+ (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;
+ (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;
/*!
* cv::normalize()
*/
+ (void)normalizeWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVInputOutputArrayable>)destination;
+ (void)normalizeWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVInputOutputArrayable>)destination withAlpha:(double)alpha;
+ (void)normalizeWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVInputOutputArrayable>)destination withAlpha:(double)alpha withBeta:(double)beta;
+ (void)normalizeWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVInputOutputArrayable>)destination withAlpha:(double)alpha withBeta:(double)beta withNormType:(OCVNormType)normType;
+ (void)normalizeWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVInputOutputArrayable>)destination withAlpha:(double)alpha withBeta:(double)beta withNormType:(OCVNormType)normType ofDepthType:(NSInteger)depthType;
+ (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;
/*!
* cv::minMaxLoc()
*/
+ (void)minimumMaximumLocationInSource:(id<OCVInputArrayable>)source withMinValue:(double *)minValue withMaxValue:(double *)maxValue withMinLocation:(OCVPoint *)minLocation withMaxLocation:(OCVPoint *)maxLocation withMask:(id<OCVInputArrayable>)mask;
// Convenience of LegoCV
+ (OCVMinimumMaximumLocation *)minimumMaximumLocationInSource:(id<OCVInputArrayable>)source;
+ (OCVMinimumMaximumLocation *)minimumMaximumLocationInSource:(id<OCVInputArrayable>)source withMask:(id<OCVInputArrayable>)mask;
/*!
* cv::minMaxIdx()
*/
+ (void)minimumMaximumIndexInSource:(id<OCVInputArrayable>)source withMinValue:(double *)minValue withMaxValue:(double *)maxValue withMaxValue:(double *)maxValue withMinIndex:(NSInteger *)minIndex withMaxIndex:(NSInteger *)maxIndex withMask:(id<OCVInputArrayable>)mask;
// Convenience of LegoCV
+ (OCVMinimumMaximumIndex *)minimumMaximumIndexInSource:(id<OCVInputArrayable>)source;
+ (OCVMinimumMaximumIndex *)minimumMaximumIndexInSource:(id<OCVInputArrayable>)source withMask:(id<OCVInputArrayable>)mask;
/*!
* cv::reduce()
*/
+ (void)reduceWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination withDimenstion:(NSInteger)dimension withReduceType:(OCVReduceType)reduceType;
+ (void)reduceWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination withDimenstion:(NSInteger)dimension withReduceType:(OCVReduceType)reduceType ofDepthType:(NSInteger)depthType;
/*!
* cv::merge()
*/
+ (void)mergeWithSource:(OCVMat *)source withCount:(NSInteger)count toDestination:(id<OCVOutputArrayable>)destination;
+ (void)mergeWithSource:(NSArray<OCVInputArrayable> *)source toDestination:(id<OCVOutputArrayable>)destination;
/*!
* cv::split()
*/
+ (void)splitWithMat:(OCVMat *)source toMat:(OCVMat *)destination;
+ (void)splitWithSource:(id<OCVInputArrayable>)source toDestination:(NSArray<OCVInputOutputArrayable> *)destination;
/*!
* cv::mixChannels()
*
* TODO: Maybe implement an options class as a parameter instead of passing pointers and also a Swift compatible replacement for std::vector.
*/
+ (void)mixChannelsWithSource:(OCVMat *)mat withNumberOfSources:(NSInteger)numberOfSources toMat:(OCVMat *)destination withNumberOfDestinations:(NSInteger)numberOfDestinations fromTo:(NSInteger *)fromTo withNumberOfPairs:(NSInteger)pairs;
+ (void)mixChannelsWithSource:(NSArray <OCVInputArrayable> *)source toDestination:(NSArray<OCVInputOutputArrayable> *)destination fromTo:(NSInteger *)fromTo withNumberOfPairs:(NSInteger)pairs;
+ (void)mixChannelsWithSource:(NSArray <OCVInputArrayable> *)source toDestination:(NSArray<OCVInputOutputArrayable> *)destination fromToIndexes:(OCVVector *)fromToIndexes;
/*!
* cv::extractChannel()
*/
+ (void)extractChannelFromSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination atIndexOfChannel:(NSInteger)indexOfChannel;
/*!
* cv::insertChannel()
*/
+ (void)insertChannelFromSource:(id<OCVInputArrayable>)source toDestination:(id<OCVInputOutputArrayable>)destination atIndexOfChannel:(NSInteger)indexOfChannel;
/*!
* cv::flip()
*/
+ (void)flipWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination withFlipCode:(OCVFlipCode)flipCode;
/*!
* cv::rotate()
*/
+ (void)rotateWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination withTypes:(OCVRotationTypes)types;
/*!
* cv::repeat()
*/
+ (void)repeatWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination withNumberOfYAxis:(NSInteger)ny withNumberOfXAxis:(NSInteger)nx;
+ (OCVMat *)repeatWithSource:(OCVMat *)source withNumberOfYAxis:(NSInteger)ny withNumberOfXAxis:(NSInteger)nx;
/*!
* cv::hconcat()
*/
+ (void)horizontalConcatenationWithSource:(OCVMat *)mat withNumberOfSources:(NSInteger)numberOfSources toDestination:(id<OCVOutputArrayable>)destination;
+ (void)horizontalConcatenationWithSource:(id<OCVInputArrayable>)source1 withSource:(id<OCVInputArrayable>)source2 toDestination:(id<OCVOutputArrayable>)destination;
+ (void)horizontalConcatenationWithSource:(NSArray<OCVInputArrayable> *)source toDestination:(id<OCVOutputArrayable>)destination;
/*!
* cv::vconcat()
*/
+ (void)verticalConcatenationWithSource:(OCVMat *)mat withNumberOfSources:(NSInteger)numberOfSources toDestination:(id<OCVOutputArrayable>)destination;
+ (void)verticalConcatenationWithSource:(id<OCVInputArrayable>)source1 withSource:(id<OCVInputArrayable>)source2 toDestination:(id<OCVOutputArrayable>)destination;
+ (void)verticalConcatenationWithSource:(NSArray<OCVInputArrayable> *)source toDestination:(id<OCVOutputArrayable>)destination;
#pragma mark - Other operations
/*!
* cv::absdiff()
*/
+ (void)absoluteDifferenceWithSource:(id<OCVInputArrayable>)source1 withSource:(id<OCVInputArrayable>)source2 toDestination:(id<OCVOutputArrayable>)destination;
/*!
* cv::inRange()
*/
+ (void)absoluteDifferenceWithSource:(id<OCVInputArrayable>)source1 withLowerBoundary:(id<OCVInputArrayable>)lowerBoundary withUpperBoundary:(id<OCVInputArrayable>)upperBoundary toDestination:(id<OCVOutputArrayable>)destination;
/*!
* cv::compare()
*/
+ (void)compareSource:(id<OCVInputArrayable>)source1 withSource:(id<OCVInputArrayable>)source2 toDestination:(id<OCVOutputArrayable>)destination withType:(OCVCompareType)type;
/*!
* cv::min()
*
* @note: OpenCV has separate methods for Mat and UMat classes, but this is handled in the implementation.
*/
+ (void)minWithSource:(id<OCVInputArrayable>)source1 withSource:(id<OCVInputArrayable>)source2 toDestination:(id<OCVOutputArrayable>)destination;
/*!
* cv::max()
*
* @note: OpenCV has separate methods for Mat and UMat classes, but this is handled in the implementation.
*/
+ (void)maxWithSource:(id<OCVInputArrayable>)source1 withSource:(id<OCVInputArrayable>)source2 toDestination:(id<OCVOutputArrayable>)destination;
/*!
* cv::sqrt()
*/
+ (void)sqrtWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination;
/*!
* cv::pow()
*/
+ (void)powWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination withPower:(double)power;
/*!
* cv::exp()
*/
+ (void)expWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination;
/*!
* cv::log()
*/
+ (void)logWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination;
/*!
* cv::polarToCart()
*/
+ (void)polarToCartWithMagnitude:(id<OCVInputArrayable>)magintude withAngle:(id<OCVInputArrayable>)angle toX:(id<OCVOutputArrayable>)x toY:(id<OCVOutputArrayable>)y;
+ (void)polarToCartWithMagnitude:(id<OCVInputArrayable>)magintude withAngle:(id<OCVInputArrayable>)angle toX:(id<OCVOutputArrayable>)x toY:(id<OCVOutputArrayable>)y withAngleInDegrees:(BOOL)angleInDegrees;
/*!
* cv::cartToPolar()
*/
+ (void)cartToPolarWithX:(id<OCVInputArrayable>)x withY:(id<OCVInputArrayable>)y toMagnitude:(id<OCVOutputArrayable>)magnitude toAngle:(id<OCVOutputArrayable>)angle;
+ (void)cartToPolarWithX:(id<OCVInputArrayable>)x withY:(id<OCVInputArrayable>)y toMagnitude:(id<OCVOutputArrayable>)magnitude toAngle:(id<OCVOutputArrayable>)angle withAngleInDegrees:(BOOL)angleInDegrees;
/*!
* cv::phase()
*/
+ (void)phaseWithX:(id<OCVInputArrayable>)x withY:(id<OCVInputArrayable>)y toAngle:(id<OCVOutputArrayable>)angle;
+ (void)phaseWithX:(id<OCVInputArrayable>)x withY:(id<OCVInputArrayable>)y toAngle:(id<OCVOutputArrayable>)angle withAngleInDegrees:(BOOL)angleInDegrees;
/*!
* cv::magnitude()
*/
+ (void)magnitudeWithX:(id<OCVInputArrayable>)x withY:(id<OCVInputArrayable>)y toMagnitude:(id<OCVOutputArrayable>)magnitude;
/*!
* cv::checkRange()
*
* TODO: Should we add a result wrapper class?
*/
+ (BOOL)checkRangeInSource:(id<OCVInputArrayable>)source;
+ (BOOL)checkRangeInSource:(id<OCVInputArrayable>)source quiet:(BOOL)quiet;
+ (BOOL)checkRangeInSource:(id<OCVInputArrayable>)source quiet:(BOOL)quiet withPosition:(OCVPoint *)position;
+ (BOOL)checkRangeInSource:(id<OCVInputArrayable>)source quiet:(BOOL)quiet withPosition:(OCVPoint *)position withMinValue:(double)minValue;
+ (BOOL)checkRangeInSource:(id<OCVInputArrayable>)source quiet:(BOOL)quiet withPosition:(OCVPoint *)position withMinValue:(double)minValue withMaxValue:(double)maxValue;
/*!
* cv::magnitude()
*/
+ (void)patchNansInSource:(id<OCVInputOutputArrayable>)source;
+ (void)patchNansInSource:(id<OCVInputOutputArrayable>)source withValue:(double)value;
/*!
* cv::gemm()
*/
+ (void)gemmWithSource:(id<OCVInputArrayable>)source1 withSource:(id<OCVInputArrayable>)source2 withAlpha:(double)alpha withSource:(id<OCVInputArrayable>)source3 withBeta:(double)beta toDestination:(id<OCVOutputArrayable>)destination;
+ (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;
/*!
* cv::mulTransposed()
*/
+ (void)multiplyTransposeWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination withOrdering:(BOOL)ordering;
+ (void)multiplyTransposeWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination withOrdering:(BOOL)ordering withDelta:(id<OCVInputArrayable>)delta;
+ (void)multiplyTransposeWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination withOrdering:(BOOL)ordering withDelta:(id<OCVInputArrayable>)delta withScale:(double)scale;
+ (void)multiplyTransposeWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination withOrdering:(BOOL)ordering withDelta:(id<OCVInputArrayable>)delta withScale:(double)scale ofDepthType:(NSInteger)depthType;
/*!
* cv::transpose()
*/
+ (void)transposeWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination;
/*!
* cv::transform()
*/
+ (void)transformWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination withTransformation:(id<OCVInputArrayable>)transformation;
/*!
* cv::perspectiveTransform()
*/
+ (void)perspectiveTransformWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination withTransformation:(id<OCVInputArrayable>)transformation;
/*!
* cv::completeSymm()
*/
+ (void)completeSymmOfSource:(id<OCVInputOutputArrayable>)source;
+ (void)completeSymmOfSource:(id<OCVInputOutputArrayable>)source withLowerToUpper:(BOOL)lowerToUpper;
/*!
* cv::setIdentity()
*/
+ (void)setIdentityOfSource:(id<OCVInputOutputArrayable>)source;
+ (void)setIdentityOfSource:(id<OCVInputOutputArrayable>)source withScalar:(OCVScalar)scalar;
/*!
* cv::determinant()
*/
+ (double)determinantOfSource:(id<OCVInputArrayable>)source;
/*!
* cv::trace()
*/
+ (OCVScalar)traceOfSource:(id<OCVInputArrayable>)source;
/*!
* cv::invert()
*/
+ (void)invertSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination;
+ (void)invertSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination withType:(OCVDecompositionType)type;
/*!
* cv::solve()
*/
+ (void)solveSource:(id<OCVInputArrayable>)source1 withSource:(id<OCVInputArrayable>)source2 toDestination:(id<OCVOutputArrayable>)destination;
+ (void)solveSource:(id<OCVInputArrayable>)source1 withSource:(id<OCVInputArrayable>)source2 toDestination:(id<OCVOutputArrayable>)destination withType:(OCVDecompositionType)type;
/*!
* cv::sort()
*/
+ (void)sortSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination withTypes:(OCVSortTypes)types;
/*!
* cv::sortIdx()
*/
+ (void)sortIndexSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination withTypes:(OCVSortTypes)types;
/*!
* cv::solveCubic()
*/
+ (NSInteger)solveCubicWithCoefficients:(id<OCVInputArrayable>)coefficients toRoots:(id<OCVOutputArrayable>)roots;
/*!
* cv::solvePoly()
*/
+ (double)solvePolyWithCoefficients:(id<OCVInputArrayable>)coefficients toRoots:(id<OCVOutputArrayable>)roots;
+ (double)solvePolyWithCoefficients:(id<OCVInputArrayable>)coefficients toRoots:(id<OCVOutputArrayable>)roots maxIterations:(NSInteger)maxIterations;
/*!
* cv::eigen()
*/
+ (BOOL)eigenWithSource:(id<OCVInputArrayable>)source toEigenValues:(id<OCVOutputArrayable>)eigenValues;
+ (BOOL)eigenWithSource:(id<OCVInputArrayable>)source toEigenValues:(id<OCVOutputArrayable>)eigenValues withEigenVectors:(id<OCVOutputArrayable>)eigenValues;
/*!
* cv::calcCovarMatrix()
*/
+ (void)calcCovarMatrixWithSamples:(OCVMat *)samples numberOfSamples:(NSInteger)numberOfSamples covar:(OCVMat *)covar mean:(OCVMat *)mean flags:(OCVCovarTypes)flags;
+ (void)calcCovarMatrixWithSamples:(OCVMat *)samples numberOfSamples:(NSInteger)numberOfSamples covar:(OCVMat *)covar mean:(OCVMat *)mean flags:(OCVCovarTypes)flags depthType:(OCVDepthType)depthType;
+ (void)calcCovarMatrixWithSamples:(id<OCVInputArrayable>)samples toCovar:(id<OCVOutputArrayable>)covar mean:(id<OCVInputOutputArrayable>)mean flags:(OCVCovarTypes)flags;
+ (void)calcCovarMatrixWithSamples:(id<OCVInputArrayable>)samples toCovar:(id<OCVOutputArrayable>)covar mean:(id<OCVInputOutputArrayable>)mean flags:(OCVCovarTypes)flags depthType:(OCVDepthType)depthType;
/*!
TODO: Check if those methods should even be implemented on operation, but rather on specific PCA and SV classes?
CV_EXPORTS_W void PCACompute(InputArray data, InputOutputArray mean, OutputArray eigenvectors, double retainedVariance);
CV_EXPORTS_W void PCAProject(InputArray data, InputArray mean, InputArray eigenvectors, OutputArray result);
CV_EXPORTS_W void PCABackProject(InputArray data, InputArray mean, InputArray eigenvectors, OutputArray result);
CV_EXPORTS_W void SVDecomp( InputArray src, OutputArray w, OutputArray u, OutputArray vt, int flags = 0 );
CV_EXPORTS_W void SVBackSubst( InputArray w, InputArray u, InputArray vt, nputArray rhs, OutputArray dst );
*/
/*!
* cv::Mahalanobis()
*/
+ (double)mahalanobisWithVector:(id<OCVInputArrayable>)vector1 vector2:(id<OCVInputArrayable>)vector2 inverseCovar:(id<OCVInputArrayable>)inverseCovar;
/*!
* cv::kmeans()
*/
+ (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;
@end
NS_ASSUME_NONNULL_END
================================================
FILE: LegoCV/LegoCV/Wrapper/Core/Operations/OCVOperation.mm
================================================
//
// OCVOperation.m
// LegoCV
//
// Created by Dal Rupnik on 23/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import <opencv2/core.hpp>
#import <opencv2/imgproc.hpp>
#import "OCVGeometry+Private.h"
#import "OCVInputArray+Private.h"
#import "OCVOutputArray+Private.h"
#import "OCVInputOutputArray+Private.h"
#import "OCVMatDataAllocator+Private.h"
#import "OCVOperation.h"
@implementation OCVOperation
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/Core/Operations/OCVTermCriteria.h
================================================
//
// OCVTermCriteria.h
// LegoCV
//
// Created by Dal Rupnik on 04/03/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVObject.h"
@interface OCVTermCriteria : OCVObject
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/Core/Operations/OCVTermCriteria.m
================================================
//
// OCVTermCriteria.m
// LegoCV
//
// Created by Dal Rupnik on 04/03/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVTermCriteria.h"
@implementation OCVTermCriteria
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/Core/Persistence/OCVFileNode.h
================================================
//
// OCVFileNode.h
// LegoCV
//
// Created by Dal Rupnik on 07/03/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVObject.h"
#import "OCVFileStorageFormatDescriptor.h"
@class OCVMat;
typedef NS_ENUM(NSInteger, OCVFileNodeType) {
OCVFileNodeTypeNone = 0, //!< empty node
OCVFileNodeTypeInteger = 1, //!< an integer
OCVFileNodeTypeReal = 2, //!< floating-point number
OCVFileNodeTypeString = 3, //!< text string in UTF-8 encoding
OCVFileNodeTypeReference = 4, //!< integer of size size_t. Typically used for storing complex dynamic structures where some elements reference the others
OCVFileNodeTypeSequence = 5, //!< sequence
OCVFileNodeTypeMap = 6, //!< mapping
OCVFileNodeTypeTypeMask = 7,
OCVFileNodeTypeFlow = 8, //!< compact representation of a sequence or mapping. Used only by YAML writer
OCVFileNodeTypeUser = 16, //!< a registered object (e.g. a matrix)
OCVFileNodeTypeEmpty = 32, //!< empty structure (sequence or mapping)
OCVFileNodeTypeNamed = 64 //!< the node has a name (i.e. it is element of a mapping)};
};
NS_ASSUME_NONNULL_BEGIN
@interface OCVFileNode : OCVObject
@property (nonatomic, readonly) OCVFileNodeType type;
@property (nonatomic, readonly) BOOL isEmpty;
@property (nullable, nonatomic, readonly) NSString* name;
@property (nonatomic, readonly) NSInteger size;
- (instancetype)initWithNode:(OCVFileNode *)node;
//
// MARK: Subscript
//
/*!
* Only available if type == map
*/
- (nullable OCVFileNode *)objectAtIndexedSubscript:(NSString *)idx;
/*!
* Only available if type == sequence
*/
- (nullable OCVFileNode *)objectAtIndex:(NSInteger)index;
//
// TODO: Add File Node Iterator??
//
#pragma mark - Read methods
- (NSData *)readRawWithFormat:(NSString *)format;
- (NSData *)readRawWithDescriptor:(OCVFileStorageFormatDescriptor *)descriptor;
//
// Following methods mimic Foundation NSNumber API.
//
- (nullable id)objectValue;
- (int)intValue;
- (NSInteger)integerValue;
- (float)floatValue;
- (double)doubleValue;
- (nullable NSString *)stringValue;
- (nullable OCVMat *)matValue;
@end
NS_ASSUME_NONNULL_END
================================================
FILE: LegoCV/LegoCV/Wrapper/Core/Persistence/OCVFileNode.mm
================================================
//
// OCVFileNode.mm
// LegoCV
//
// Created by Dal Rupnik on 07/03/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVFileNode.h"
@implementation OCVFileNode
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/Core/Persistence/OCVFileStorage.h
================================================
//
// OCVFileStorage.h
// LegoCV
//
// Created by Dal Rupnik on 07/03/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVObject.h"
#import "OCVSerializable.h"
#import "OCVInputArrayable.h"
#import "OCVFileNode.h"
/*!
* Reference type: cv::FileStorage Mode
*/
typedef NS_OPTIONS(NSInteger, OCVFileStorageModes) {
OCVFileStorageModeRead = 0, //!< value, open the file for reading
OCVFileStorageModeWrite = 1, //!< value, open the file for writing
OCVFileStorageModeAppend = 2, //!< value, open the file for appending
OCVFileStorageModeMemory = 4, //!< flag, read data from source or write data to the internal buffer (which is
OCVFileStorageModeFormatMask = (7<<3), //!< mask for format flags
OCVFileStorageModeFormatAuto = 0, //!< flag, auto format
OCVFileStorageModeFormatXML = (1<<3), //!< flag, XML format
OCVFileStorageModeFormatYAML = (2<<3), //!< flag, YAML format
OCVFileStorageModeFormatJSON = (3<<3), //!< flag, JSON format
OCVFileStorageModeBase64 = 64, //!< flag, write rawdata in Base64 by default. (consider using OCVFileStorageModeWriteBase64)
OCVFileStorageModeWriteBase64 = OCVFileStorageModeBase64 | OCVFileStorageModeWrite, //!< flag, enable both Write and Base64
};
NS_ASSUME_NONNULL_BEGIN
/*!
* cv::FileStorage
*/
@interface OCVFileStorage : OCVObject
#pragma mark - Public Properties
@property (nonatomic, readonly) NSInteger state;
@property (nonatomic, readonly) BOOL isOpened;
@property (nullable, nonatomic, readonly) NSString *elementName;
#pragma mark - Initialization
- (instancetype)initWithPath:(NSString *)path mode:(OCVFileStorageModes)mode;
- (instancetype)initWithPath:(NSString *)path mode:(OCVFileStorageModes)mode encoding:(NSStringEncoding)encoding;
#pragma mark - Public Methods
- (void)openWithPath:(NSString *)path mode:(OCVFileStorageModes)mode;
- (void)openWithPath:(NSString *)path mode:(OCVFileStorageModes)mode encoding:(NSStringEncoding)encoding;
- (nullable OCVFileNode *)firstTopLevelNode;
- (nullable OCVFileNode *)root;
- (nullable OCVFileNode *)rootWithStreamIndex:(NSInteger)streamIndex;
//
// MARK: Subscript
//
- (nullable OCVFileNode *)objectAtIndexedSubscript:(NSString *)idx;
// Should do nothing, only allows access.
//- (void)setObject:(id)obj atIndexedSubscript:(NSString *)idx;
#pragma mark - Write Methods
- (void)writeRawWithFormat:(NSString *)format data:(NSData *)data;
- (void)writeRawWithFormat:(NSString *)format data:(void *)data length:(NSInteger)length;
- (void)writeRawWithDescriptor:(OCVFileStorageFormatDescriptor *)descriptor data:(NSData *)data;
- (void)writeRawWithDescriptor:(OCVFileStorageFormatDescriptor *)descriptor data:(void *)data length:(NSInteger)length;
- (void)writeObject:(id<OCVSerializable>)object withName:(NSString *)name;
- (void)writeDouble:(double)value withName:(NSString *)name;
- (void)writeString:(NSString *)string withName:(NSString *)name;
- (void)writeSource:(id<OCVInputArrayable>)source withName:(NSString *)name;
- (void)writeComment:(NSString *)comment;
- (void)writeComment:(NSString *)comment append:(BOOL)append;
- (void)writeInt:(int)value;
- (void)writeInteger:(NSInteger)value;
- (void)writeFloat:(float)value;
- (void)writeDouble:(double)value;
- (void)writeString:(NSString *)value;
#pragma mark - Class Methods
+ (NSString *)defaultObjectNameForFilename:(NSString *)filename;
@end
NS_ASSUME_NONNULL_END
================================================
FILE: LegoCV/LegoCV/Wrapper/Core/Persistence/OCVFileStorage.mm
================================================
//
// OCVFileStorage.mm
// LegoCV
//
// Created by Dal Rupnik on 07/03/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVFileStorage.h"
@implementation OCVFileStorage
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/Core/Persistence/OCVFileStorageFormatDescriptor.h
================================================
//
// OCVFileStorageFormatDescriptor.h
// LegoCV
//
// Created by Dal Rupnik on 07/03/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVObject.h"
typedef NS_ENUM(NSInteger, OCVFileStorageFormatType) {
OCVFileStorageFormatType8BitUnsigned,
OCVFileStorageFormatType8BitSigned,
OCVFileStorageFormatType16BitUnsigned,
OCVFileStorageFormatType16BitSigned,
OCVFileStorageFormatType32BitSigned,
OCVFileStorageFormatTypeSinglePrecisionFloat,
OCVFileStorageFormatTypeDoublePrecisionFloat,
OCVFileStorageFormatType32BitPointer
};
NS_ASSUME_NONNULL_BEGIN
/*!
* See @format_spec in OpenCV
*
* Describes format of the array being written.
*/
@interface OCVFileStorageFormatDescriptor : OCVObject
/*!
* Converted format for OpenCV
*/
@property (nonatomic, readonly) NSString *format;
- (void)addFormatOfType:(OCVFileStorageFormatType)type;
- (void)addFormatOfType:(OCVFileStorageFormatType)type withCount:(NSInteger)count;
@end
NS_ASSUME_NONNULL_END
================================================
FILE: LegoCV/LegoCV/Wrapper/Core/Persistence/OCVFileStorageFormatDescriptor.m
================================================
//
// OCVFileStorageFormatDescriptor.m
// LegoCV
//
// Created by Dal Rupnik on 07/03/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVFileStorageFormatDescriptor.h"
NSString* NSStringFromFileStorageFormatType(OCVFileStorageFormatType type) {
switch (type) {
case OCVFileStorageFormatType8BitUnsigned:
return @"u";
case OCVFileStorageFormatType8BitSigned:
return @"c";
case OCVFileStorageFormatType16BitUnsigned:
return @"w";
case OCVFileStorageFormatType16BitSigned:
return @"s";
case OCVFileStorageFormatType32BitSigned:
return @"i";
case OCVFileStorageFormatTypeSinglePrecisionFloat:
return @"f";
case OCVFileStorageFormatTypeDoublePrecisionFloat:
return @"d";
case OCVFileStorageFormatType32BitPointer:
return @"r";
default:
return @"";
}
}
@interface OCVFileStorageFormatDescriptor ()
@property (nonatomic, strong) NSMutableString *formatStore;
@end
@implementation OCVFileStorageFormatDescriptor
#pragma mark - Properties
- (NSMutableString *)formatStore {
if (!_formatStore) {
_formatStore = [[NSMutableString alloc] init];
}
return _formatStore;
}
- (NSString *)format {
return [self.formatStore copy];
}
#pragma mark - Public Methods
- (void)addFormatOfType:(OCVFileStorageFormatType)type {
[self.formatStore appendString:NSStringFromFileStorageFormatType(type)];
}
- (void)addFormatOfType:(OCVFileStorageFormatType)type withCount:(NSInteger)count {
if (count > 1) {
[self.formatStore appendFormat:@"%ldd", (long)count];
}
[self.formatStore appendString:NSStringFromFileStorageFormatType(type)];
}
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/Core/Persistence/OCVPersistence.h
================================================
//
// OCVPersistence.h
// LegoCV
//
// Created by Dal Rupnik on 07/03/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#ifndef OCVPersistence_h
#define OCVPersistence_h
#import "OCVFileStorage.h"
#import "OCVFileNode.h"
#import "OCVSerializable.h"
#endif /* OCVPersistence_h */
================================================
FILE: LegoCV/LegoCV/Wrapper/Core/Persistence/OCVSerializable.h
================================================
//
// OCVSerializable.h
// LegoCV
//
// Created by Dal Rupnik on 07/03/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#ifndef OCVSerializable_h
#define OCVSerializable_h
#import <Foundation/Foundation.h>
@protocol OCVSerializable <NSObject>
@end
#endif /* OCVSerializable_h */
================================================
FILE: LegoCV/LegoCV/Wrapper/Core/Private/OCVGeometry+Private.h
================================================
//
// OCVGeometry+Private.h
// LegoCV
//
// Created by Dal Rupnik on 30/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#ifndef OCVGeometry_Private_h
#define OCVGeometry_Private_h
#import "OCVPoint+Private.h"
#import "OCVSize+Private.h"
#import "OCVRect+Private.h"
#endif /* OCVGeometry_Private_h */
================================================
FILE: LegoCV/LegoCV/Wrapper/Core/Private/OCVInputArray+Private.h
================================================
//
// OCVInputArray+Private.h
// LegoCV
//
// Created by Dal Rupnik on 24/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVInputArray.h"
#import <opencv2/core/mat.hpp>
@interface OCVInputArray (OpenCV)
@property (nonatomic, assign) cv::_InputArray *arrayReference;
@property (nonatomic, readonly) cv::_InputArray *_input;
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/Core/Private/OCVInputOutputArray+Private.h
================================================
//
// OCVInputOutputArray+Private.h
// LegoCV
//
// Created by Dal Rupnik on 24/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVInputOutputArray.h"
#import <opencv2/core/mat.hpp>
@interface OCVInputOutputArray (OpenCV)
@property (nonatomic, readonly) cv::_InputOutputArray *_inputOutput;
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/Core/Private/OCVMatDataAllocator+Private.h
================================================
//
// OCVMatDataAllocator+Private.h
// LegoCV
//
// Created by Dal Rupnik on 24/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
//
// MARK: Unavailable in Swift, convenience for OpenCV, should be private
//
#import "OCVMatDataAllocator.h"
#import <opencv2/core/mat.hpp>
@interface OCVMatDataAllocator (OpenCV)
@property (nonatomic, readonly) cv::Mat *source;
- (instancetype)initWithMatInstance:(cv::Mat *)mat;
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/Core/Private/OCVOutputArray+Private.h
================================================
//
// OCVOutputArray+Private.h
// LegoCV
//
// Created by Dal Rupnik on 24/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVOutputArray.h"
#import <opencv2/core/mat.hpp>
@interface OCVOutputArray (OpenCV)
@property (nonatomic, readonly) cv::_OutputArray *_output;
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/Core/Private/OCVPoint+Private.h
================================================
//
// OCVPoint+Private.h
// LegoCV
//
// Created by Dal Rupnik on 30/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVPoint.h"
#import <opencv2/core.hpp>
cv::Point convertPoint(OCVPoint point);
OCVPoint convertPoint(cv::Point point);
================================================
FILE: LegoCV/LegoCV/Wrapper/Core/Private/OCVPoint+Private.mm
================================================
//
// OCVPoint+Private.m
// LegoCV
//
// Created by Dal Rupnik on 30/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVPoint+Private.h"
cv::Point convertPoint(OCVPoint point) {
cv::Point finalPoint;
finalPoint.x = (int)point.x;
finalPoint.y = (int)point.y;
return finalPoint;
}
OCVPoint convertPoint(cv::Point point) {
OCVPoint finalPoint;
finalPoint.x = point.x;
finalPoint.y = point.y;
return finalPoint;
}
================================================
FILE: LegoCV/LegoCV/Wrapper/Core/Private/OCVRect+Private.h
================================================
//
// OCVRect+Private.h
// LegoCV
//
// Created by Dal Rupnik on 24/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVRect.h"
#import <opencv2/core.hpp>
cv::Rect convertRect(OCVRect rect);
OCVRect convertRect(cv::Rect rect);
================================================
FILE: LegoCV/LegoCV/Wrapper/Core/Private/OCVRect+Private.mm
================================================
//
// OCVRect+Private.m
// LegoCV
//
// Created by Dal Rupnik on 30/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVRect+Private.h"
#import <opencv2/core.hpp>
cv::Rect convertRect(OCVRect rect) {
cv::Rect finalRect;
finalRect.x = (int)rect.origin.x;
finalRect.y = (int)rect.origin.y;
finalRect.width = (int)rect.size.width;
finalRect.height = (int)rect.size.height;
return finalRect;
}
OCVRect convertRect(cv::Rect rect) {
OCVRect finalRect;
finalRect.origin.x = rect.x;
finalRect.origin.y = rect.y;
finalRect.size.width = rect.width;
finalRect.size.height = rect.height;
return finalRect;
}
================================================
FILE: LegoCV/LegoCV/Wrapper/Core/Private/OCVSize+Private.h
================================================
//
// OCVSize+Private.h
// LegoCV
//
// Created by Dal Rupnik on 24/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVSize.h"
#import <opencv2/core.hpp>
cv::Size convertSize(OCVSize size);
OCVSize convertSize(cv::Size size);
================================================
FILE: LegoCV/LegoCV/Wrapper/Core/Private/OCVSize+Private.mm
================================================
//
// OCVSize+Private.m
// LegoCV
//
// Created by Dal Rupnik on 30/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVSize+Private.h"
#import <opencv2/core.hpp>
cv::Size convertSize(OCVSize size) {
cv::Size finalSize;
finalSize.width = (int)size.width;
finalSize.height = (int)size.height;
return finalSize;
}
OCVSize convertSize(cv::Size size) {
OCVSize finalSize;
finalSize.width = size.width;
finalSize.height = size.height;
return finalSize;
}
================================================
FILE: LegoCV/LegoCV/Wrapper/Cuda/OCVGPUMat.h
================================================
//
// OCVGPUMat.h
// LegoCV
//
// Created by Dal Rupnik on 18/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVObject.h"
@interface OCVGPUMat : OCVObject
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/Cuda/OCVGPUMat.m
================================================
//
// OCVGPUMat.m
// LegoCV
//
// Created by Dal Rupnik on 18/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVGPUMat.h"
@implementation OCVGPUMat
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/CvEnum/OCVStorageOperationType.h
================================================
//
// OCVStorageOperationType.h
// LegoCV
//
// Created by Dal Rupnik on 18/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVObject.h"
@interface OCVStorageOperationType : OCVObject
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/CvEnum/OCVStorageOperationType.m
================================================
//
// OCVStorageOperationType.m
// LegoCV
//
// Created by Dal Rupnik on 18/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVStorageOperationType.h"
@implementation OCVStorageOperationType
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/Cvb/OCVBlob.h
================================================
//
// OCVBlob.h
// LegoCV
//
// Created by Dal Rupnik on 18/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVObject.h"
@interface OCVBlob : OCVObject
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/Cvb/OCVBlob.m
================================================
//
// OCVBlob.m
// LegoCV
//
// Created by Dal Rupnik on 18/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVBlob.h"
@implementation OCVBlob
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/Dnn/OCVImporter.h
================================================
//
// OCVImporter.h
// LegoCV
//
// Created by Dal Rupnik on 18/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVObject.h"
@interface OCVImporter : OCVObject
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/Dnn/OCVImporter.m
================================================
//
// OCVImporter.m
// LegoCV
//
// Created by Dal Rupnik on 18/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVImporter.h"
@implementation OCVImporter
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/Dnn/OCVNet.h
================================================
//
// OCVNet.h
// LegoCV
//
// Created by Dal Rupnik on 18/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVObject.h"
@interface OCVNet : OCVObject
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/Dnn/OCVNet.m
================================================
//
// OCVNet.m
// LegoCV
//
// Created by Dal Rupnik on 18/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVNet.h"
@implementation OCVNet
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/Face/OCVEigenFaceRecognizer.h
================================================
//
// OCVEigenFaceRecognizer.h
// LegoCV
//
// Created by Dal Rupnik on 18/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVObject.h"
@interface OCVEigenFaceRecognizer : OCVObject
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/Face/OCVEigenFaceRecognizer.m
================================================
//
// OCVEigenFaceRecognizer.m
// LegoCV
//
// Created by Dal Rupnik on 18/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVEigenFaceRecognizer.h"
@implementation OCVEigenFaceRecognizer
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/Face/OCVFaceRecognizer.h
================================================
//
// OCVFaceRecognizer.h
// LegoCV
//
// Created by Dal Rupnik on 18/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVObject.h"
@interface OCVFaceRecognizer : OCVObject
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/Face/OCVFaceRecognizer.m
================================================
//
// OCVFaceRecognizer.m
// LegoCV
//
// Created by Dal Rupnik on 18/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVFaceRecognizer.h"
@implementation OCVFaceRecognizer
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/Face/OCVFisherFaceRecognizer.h
================================================
//
// OCVFisherFaceRecognizer.h
// LegoCV
//
// Created by Dal Rupnik on 18/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVObject.h"
@interface OCVFisherFaceRecognizer : OCVObject
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/Face/OCVFisherFaceRecognizer.m
================================================
//
// OCVFisherFaceRecognizer.m
// LegoCV
//
// Created by Dal Rupnik on 18/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVFisherFaceRecognizer.h"
@implementation OCVFisherFaceRecognizer
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/Face/OCVLBPHFaceRecognizer.h
================================================
//
// OCVLBPHFaceRecognizer.h
// LegoCV
//
// Created by Dal Rupnik on 18/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVObject.h"
@interface OCVLBPHFaceRecognizer : OCVObject
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/Face/OCVLBPHFaceRecognizer.m
================================================
//
// OCVLBPHFaceRecognizer.m
// LegoCV
//
// Created by Dal Rupnik on 18/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVLBPHFaceRecognizer.h"
@implementation OCVLBPHFaceRecognizer
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/Features2D/OCVFeature2D.h
================================================
//
// OCVFeature2D.h
// LegoCV
//
// Created by Dal Rupnik on 18/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVObject.h"
@interface OCVFeature2D : OCVObject
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/Features2D/OCVFeature2D.m
================================================
//
// OCVFeature2D.m
// LegoCV
//
// Created by Dal Rupnik on 18/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVFeature2D.h"
@implementation OCVFeature2D
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/Flann/OCVIndex.h
================================================
//
// OCVIndex.h
// LegoCV
//
// Created by Dal Rupnik on 18/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVObject.h"
@interface OCVIndex : OCVObject
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/Flann/OCVIndex.m
================================================
//
// OCVIndex.m
// LegoCV
//
// Created by Dal Rupnik on 18/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVIndex.h"
@implementation OCVIndex
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/Fuzzy/OCVFuzzyInvoke.h
================================================
//
// OCVFuzzyInvoke.h
// LegoCV
//
// Created by Dal Rupnik on 18/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVObject.h"
@interface OCVFuzzyInvoke : OCVObject
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/Fuzzy/OCVFuzzyInvoke.m
================================================
//
// OCVFuzzyInvoke.m
// LegoCV
//
// Created by Dal Rupnik on 18/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVFuzzyInvoke.h"
@implementation OCVFuzzyInvoke
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/Geodetic/OCVGeodeticCoordinate.h
================================================
//
// OCVGeodeticCoordinate.h
// LegoCV
//
// Created by Dal Rupnik on 18/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVObject.h"
@interface OCVGeodeticCoordinate : OCVObject
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/Geodetic/OCVGeodeticCoordinate.m
================================================
//
// OCVGeodeticCoordinate.m
// LegoCV
//
// Created by Dal Rupnik on 18/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVGeodeticCoordinate.h"
@implementation OCVGeodeticCoordinate
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/ImageProcessing/OCVColorConversionType.h
================================================
//
// OCVColorConversionType.h
// LegoCV
//
// Created by Dal Rupnik on 23/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#ifndef OCVColorConversionType_h
#define OCVColorConversionType_h
/*!
* Reference type: cv::ColorConversionCodes
*/
typedef NS_ENUM(NSInteger, OCVColorConversionType) {
OCVColorConversionTypeBGR2BGRA = 0,
OCVColorConversionTypeRGB2RGBA = OCVColorConversionTypeBGR2BGRA,
OCVColorConversionTypeBGRA2BGR = 1,
OCVColorConversionTypeRGBA2RGB = OCVColorConversionTypeBGRA2BGR,
OCVColorConversionTypeBGR2RGBA = 2,
OCVColorConversionTypeRGB2BGRA = OCVColorConversionTypeBGR2RGBA,
OCVColorConversionTypeRGBA2BGR = 3,
OCVColorConversionTypeBGRA2RGB = OCVColorConversionTypeRGBA2BGR,
OCVColorConversionTypeBGR2RGB = 4,
OCVColorConversionTypeRGB2BGR = OCVColorConversionTypeBGR2RGB,
OCVColorConversionTypeBGRA2RGBA = 5,
OCVColorConversionTypeRGBA2BGRA = OCVColorConversionTypeBGRA2RGBA,
OCVColorConversionTypeBGR2GRAY = 6,
OCVColorConversionTypeRGB2GRAY = 7,
OCVColorConversionTypeGRAY2BGR = 8,
OCVColorConversionTypeGRAY2RGB = OCVColorConversionTypeGRAY2BGR,
OCVColorConversionTypeGRAY2BGRA = 9,
OCVColorConversionTypeGRAY2RGBA = OCVColorConversionTypeGRAY2BGRA,
OCVColorConversionTypeBGRA2GRAY = 10,
OCVColorConversionTypeRGBA2GRAY = 11,
OCVColorConversionTypeBGR2BGR565 = 12,
OCVColorConversionTypeRGB2BGR565 = 13,
OCVColorConversionTypeBGR5652BGR = 14,
OCVColorConversionTypeBGR5652RGB = 15,
OCVColorConversionTypeBGRA2BGR565 = 16,
OCVColorConversionTypeRGBA2BGR565 = 17,
OCVColorConversionTypeBGR5652BGRA = 18,
OCVColorConversionTypeBGR5652RGBA = 19,
OCVColorConversionTypeGRAY2BGR565 = 20,
OCVColorConversionTypeBGR5652GRAY = 21,
OCVColorConversionTypeBGR2BGR555 = 22,
OCVColorConversionTypeRGB2BGR555 = 23,
OCVColorConversionTypeBGR5552BGR = 24,
OCVColorConversionTypeBGR5552RGB = 25,
OCVColorConversionTypeBGRA2BGR555 = 26,
OCVColorConversionTypeRGBA2BGR555 = 27,
OCVColorConversionTypeBGR5552BGRA = 28,
OCVColorConversionTypeBGR5552RGBA = 29,
OCVColorConversionTypeGRAY2BGR555 = 30,
OCVColorConversionTypeBGR5552GRAY = 31,
OCVColorConversionTypeBGR2XYZ = 32,
OCVColorConversionTypeRGB2XYZ = 33,
OCVColorConversionTypeXYZ2BGR = 34,
OCVColorConversionTypeXYZ2RGB = 35,
OCVColorConversionTypeBGR2YCrCb = 36,
OCVColorConversionTypeRGB2YCrCb = 37,
OCVColorConversionTypeYCrCb2BGR = 38,
OCVColorConversionTypeYCrCb2RGB = 39,
OCVColorConversionTypeBGR2HSV = 40,
OCVColorConversionTypeRGB2HSV = 41,
OCVColorConversionTypeBGR2Lab = 44,
OCVColorConversionTypeRGB2Lab = 45,
OCVColorConversionTypeBayerBG2BGR = 46,
OCVColorConversionTypeBayerGB2BGR = 47,
OCVColorConversionTypeBayerRG2BGR = 48,
OCVColorConversionTypeBayerGR2BGR = 49,
OCVColorConversionTypeBayerBG2RGB = OCVColorConversionTypeBayerRG2BGR,
OCVColorConversionTypeBayerGB2RGB = OCVColorConversionTypeBayerGR2BGR,
OCVColorConversionTypeBayerRG2RGB = OCVColorConversionTypeBayerBG2BGR,
OCVColorConversionTypeBayerGR2RGB = OCVColorConversionTypeBayerGB2BGR,
OCVColorConversionTypeBGR2Luv = 50,
OCVColorConversionTypeRGB2Luv = 51,
OCVColorConversionTypeBGR2HLS = 52,
OCVColorConversionTypeRGB2HLS = 53,
OCVColorConversionTypeHSV2BGR = 54,
OCVColorConversionTypeHSV2RGB = 55,
OCVColorConversionTypeLab2BGR = 56,
OCVColorConversionTypeLab2RGB = 57,
OCVColorConversionTypeLuv2BGR = 58,
OCVColorConversionTypeLuv2RGB = 59,
OCVColorConversionTypeHLS2BGR = 60,
OCVColorConversionTypeHLS2RGB = 61,
OCVColorConversionTypeBayerBG2BGRVng = 62,
OCVColorConversionTypeBayerGB2BGRVng = 63,
OCVColorConversionTypeBayerRG2BGRVng = 64,
OCVColorConversionTypeBayerGR2BGRVng = 65,
OCVColorConversionTypeBayerBG2RGBVng = OCVColorConversionTypeBayerRG2BGRVng,
OCVColorConversionTypeBayerGB2RGBVng = OCVColorConversionTypeBayerGR2BGRVng,
OCVColorConversionTypeBayerRG2RGBVng = OCVColorConversionTypeBayerBG2BGRVng,
OCVColorConversionTypeBayerGR2RGBVng = OCVColorConversionTypeBayerGB2BGRVng,
OCVColorConversionTypeBGR2HSVFull = 66,
OCVColorConversionTypeRGB2HSVFull = 67,
OCVColorConversionTypeBGR2HLSFull = 68,
OCVColorConversionTypeRGB2HLSFull = 69,
OCVColorConversionTypeHSV2BGRFull = 70,
OCVColorConversionTypeHSV2RGBFull = 71,
OCVColorConversionTypeHLS2BGRFull = 72,
OCVColorConversionTypeHLS2RGBFull = 73,
OCVColorConversionTypeLBGR2Lab = 74,
OCVColorConversionTypeLRGB2Lab = 75,
OCVColorConversionTypeLBGR2Luv = 76,
OCVColorConversionTypeLRGB2Luv = 77,
OCVColorConversionTypeLab2LBGR = 78,
OCVColorConversionTypeLab2LRGB = 79,
OCVColorConversionTypeLuv2LBGR = 80,
OCVColorConversionTypeLuv2LRGB = 81,
OCVColorConversionTypeBGR2YUV = 82,
OCVColorConversionTypeRGB2YUV = 83,
OCVColorConversionTypeYUV2BGR = 84,
OCVColorConversionTypeYUV2RGB = 85,
OCVColorConversionTypeBayerBG2GRAY = 86,
OCVColorConversionTypeBayerGB2GRAY = 87,
OCVColorConversionTypeBayerRG2GRAY = 88,
OCVColorConversionTypeBayerGR2GRAY = 89,
//YUV 4:2:0 formats family
OCVColorConversionTypeYUV2RGB_NV12 = 90,
OCVColorConversionTypeYUV2BGR_NV12 = 91,
OCVColorConversionTypeYUV2RGB_NV21 = 92,
OCVColorConversionTypeYUV2BGR_NV21 = 93,
OCVColorConversionTypeYUV420sp2RGB = OCVColorConversionTypeYUV2RGB_NV21,
OCVColorConversionTypeYUV420sp2BGR = OCVColorConversionTypeYUV2BGR_NV21,
OCVColorConversionTypeYUV2RGBA_NV12 = 94,
OCVColorConversionTypeYUV2BGRA_NV12 = 95,
OCVColorConversionTypeYUV2RGBA_NV21 = 96,
OCVColorConversionTypeYUV2BGRA_NV21 = 97,
OCVColorConversionTypeYUV420sp2RGBA = OCVColorConversionTypeYUV2RGBA_NV21,
OCVColorConversionTypeYUV420sp2BGRA = OCVColorConversionTypeYUV2BGRA_NV21,
OCVColorConversionTypeYUV2RGB_YV12 = 98,
OCVColorConversionTypeYUV2BGR_YV12 = 99,
OCVColorConversionTypeYUV2RGB_IYUV = 100,
OCVColorConversionTypeYUV2BGR_IYUV = 101,
OCVColorConversionTypeYUV2RGB_I420 = OCVColorConversionTypeYUV2RGB_IYUV,
OCVColorConversionTypeYUV2BGR_I420 = OCVColorConversionTypeYUV2BGR_IYUV,
OCVColorConversionTypeYUV420p2RGB = OCVColorConversionTypeYUV2RGB_YV12,
OCVColorConversionTypeYUV420p2BGR = OCVColorConversionTypeYUV2BGR_YV12,
OCVColorConversionTypeYUV2RGBA_YV12 = 102,
OCVColorConversionTypeYUV2BGRA_YV12 = 103,
OCVColorConversionTypeYUV2RGBA_IYUV = 104,
OCVColorConversionTypeYUV2BGRA_IYUV = 105,
OCVColorConversionTypeYUV2RGBA_I420 = OCVColorConversionTypeYUV2RGBA_IYUV,
OCVColorConversionTypeYUV2BGRA_I420 = OCVColorConversionTypeYUV2BGRA_IYUV,
OCVColorConversionTypeYUV420p2RGBA = OCVColorConversionTypeYUV2RGBA_YV12,
OCVColorConversionTypeYUV420p2BGRA = OCVColorConversionTypeYUV2BGRA_YV12,
OCVColorConversionTypeYUV2GRAY_420 = 106,
OCVColorConversionTypeYUV2GRAY_NV21 = OCVColorConversionTypeYUV2GRAY_420,
OCVColorConversionTypeYUV2GRAY_NV12 = OCVColorConversionTypeYUV2GRAY_420,
OCVColorConversionTypeYUV2GRAY_YV12 = OCVColorConversionTypeYUV2GRAY_420,
OCVColorConversionTypeYUV2GRAY_IYUV = OCVColorConversionTypeYUV2GRAY_420,
OCVColorConversionTypeYUV2GRAY_I420 = OCVColorConversionTypeYUV2GRAY_420,
OCVColorConversionTypeYUV420sp2GRAY = OCVColorConversionTypeYUV2GRAY_420,
OCVColorConversionTypeYUV420p2GRAY = OCVColorConversionTypeYUV2GRAY_420,
//YUV 4:2:2 formats family
OCVColorConversionTypeYUV2RGB_UYVY = 107,
OCVColorConversionTypeYUV2BGR_UYVY = 108,
//OCVColorConversionTypeYUV2RGB_VYUY = 109,
//OCVColorConversionTypeYUV2BGR_VYUY = 110,
OCVColorConversionTypeYUV2RGB_Y422 = OCVColorConversionTypeYUV2RGB_UYVY,
OCVColorConversionTypeYUV2BGR_Y422 = OCVColorConversionTypeYUV2BGR_UYVY,
OCVColorConversionTypeYUV2RGB_UYNV = OCVColorConversionTypeYUV2RGB_UYVY,
OCVColorConversionTypeYUV2BGR_UYNV = OCVColorConversionTypeYUV2BGR_UYVY,
OCVColorConversionTypeYUV2RGBA_UYVY = 111,
OCVColorConversionTypeYUV2BGRA_UYVY = 112,
//OCVColorConversionTypeYUV2RGBA_VYUY = 113,
//OCVColorConversionTypeYUV2BGRA_VYUY = 114,
OCVColorConversionTypeYUV2RGBA_Y422 = OCVColorConversionTypeYUV2RGBA_UYVY,
OCVColorConversionTypeYUV2BGRA_Y422 = OCVColorConversionTypeYUV2BGRA_UYVY,
OCVColorConversionTypeYUV2RGBA_UYNV = OCVColorConversionTypeYUV2RGBA_UYVY,
OCVColorConversionTypeYUV2BGRA_UYNV = OCVColorConversionTypeYUV2BGRA_UYVY,
OCVColorConversionTypeYUV2RGB_YUY2 = 115,
OCVColorConversionTypeYUV2BGR_YUY2 = 116,
OCVColorConversionTypeYUV2RGB_YVYU = 117,
OCVColorConversionTypeYUV2BGR_YVYU = 118,
OCVColorConversionTypeYUV2RGB_YUYV = OCVColorConversionTypeYUV2RGB_YUY2,
OCVColorConversionTypeYUV2BGR_YUYV = OCVColorConversionTypeYUV2BGR_YUY2,
OCVColorConversionTypeYUV2RGB_YUNV = OCVColorConversionTypeYUV2RGB_YUY2,
OCVColorConversionTypeYUV2BGR_YUNV = OCVColorConversionTypeYUV2BGR_YUY2,
OCVColorConversionTypeYUV2RGBA_YUY2 = 119,
OCVColorConversionTypeYUV2BGRA_YUY2 = 120,
OCVColorConversionTypeYUV2RGBA_YVYU = 121,
OCVColorConversionTypeYUV2BGRA_YVYU = 122,
OCVColorConversionTypeYUV2RGBA_YUYV = OCVColorConversionTypeYUV2RGBA_YUY2,
OCVColorConversionTypeYUV2BGRA_YUYV = OCVColorConversionTypeYUV2BGRA_YUY2,
OCVColorConversionTypeYUV2RGBA_YUNV = OCVColorConversionTypeYUV2RGBA_YUY2,
OCVColorConversionTypeYUV2BGRA_YUNV = OCVColorConversionTypeYUV2BGRA_YUY2,
OCVColorConversionTypeYUV2GRAY_UYVY = 123,
OCVColorConversionTypeYUV2GRAY_YUY2 = 124,
//OCVColorConversionTypeYUV2GRAY_VYUY = OCVColorConversionTypeYUV2GRAY_UYVY,
OCVColorConversionTypeYUV2GRAY_Y422 = OCVColorConversionTypeYUV2GRAY_UYVY,
OCVColorConversionTypeYUV2GRAY_UYNV = OCVColorConversionTypeYUV2GRAY_UYVY,
OCVColorConversionTypeYUV2GRAY_YVYU = OCVColorConversionTypeYUV2GRAY_YUY2,
OCVColorConversionTypeYUV2GRAY_YUYV = OCVColorConversionTypeYUV2GRAY_YUY2,
OCVColorConversionTypeYUV2GRAY_YUNV = OCVColorConversionTypeYUV2GRAY_YUY2,
// alpha premultiplication
OCVColorConversionTypeRGBA2mRGBA = 125,
OCVColorConversionTypemRGBA2RGBA = 126,
OCVColorConversionTypeRGB2YUV_I420 = 127,
OCVColorConversionTypeBGR2YUV_I420 = 128,
OCVColorConversionTypeRGB2YUV_IYUV = OCVColorConversionTypeRGB2YUV_I420,
OCVColorConversionTypeBGR2YUV_IYUV = OCVColorConversionTypeBGR2YUV_I420,
OCVColorConversionTypeRGBA2YUV_I420 = 129,
OCVColorConversionTypeBGRA2YUV_I420 = 130,
OCVColorConversionTypeRGBA2YUV_IYUV = OCVColorConversionTypeRGBA2YUV_I420,
OCVColorConversionTypeBGRA2YUV_IYUV = OCVColorConversionTypeBGRA2YUV_I420,
OCVColorConversionTypeRGB2YUV_YV12 = 131,
OCVColorConversionTypeBGR2YUV_YV12 = 132,
OCVColorConversionTypeRGBA2YUV_YV12 = 133,
OCVColorConversionTypeBGRA2YUV_YV12 = 134,
OCVColorConversionTypeColorConversionMax = 135
};
#endif /* OCVColorConversionType_h */
================================================
FILE: LegoCV/LegoCV/Wrapper/ImageProcessing/OCVContrastLimitedAdaptiveHistogramEqualization.h
================================================
//
// OCVContrastLimitedAdaptiveHistogramEqualization.h
// LegoCV
//
// Created by Dal Rupnik on 18/03/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVGeometry.h"
#import "OCVAlgorithm.h"
#import "OCVArrayables.h"
/*!
* Reference type: cv::CLAHE
*/
@interface OCVContrastLimitedAdaptiveHistogramEqualization : OCVAlgorithm
@property (nonatomic, assign) double clipLimit;
@property (nonatomic, assign) OCVSize tileGridSize;
- (void)applyWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination;
- (void)collectGarbage;
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/ImageProcessing/OCVContrastLimitedAdaptiveHistogramEqualization.m
================================================
//
// OCVContrastLimitedAdaptiveHistogramEqualization.m
// LegoCV
//
// Created by Dal Rupnik on 18/03/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVContrastLimitedAdaptiveHistogramEqualization.h"
@implementation OCVContrastLimitedAdaptiveHistogramEqualization
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/ImageProcessing/OCVGeneralizedHough.h
================================================
//
// OCVGeneralizedHough.h
// LegoCV
//
// Created by Dal Rupnik on 18/03/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVGeometry.h"
#import "OCVArrayables.h"
#import "OCVAlgorithm.h"
/*!
* Reference type: cv::GeneralizedHough
*/
@interface OCVGeneralizedHough : OCVAlgorithm
@property (nonatomic, assign) NSInteger cannyLowThreshold;
@property (nonatomic, assign) NSInteger cannyHighThreshold;
@property (nonatomic, assign) double minimumDistance;
@property (nonatomic, assign) double dp;
@property (nonatomic, assign) NSInteger maxBufferSize;
- (void)setTemplateWithTemplate:(id<OCVInputArrayable>)template;
- (void)setTemplateWithTemplate:(id<OCVInputArrayable>)template withTemplateCenter:(OCVPoint)templateCenter;
- (void)detectOnImage:(id<OCVInputArrayable>)image toPositions:(id<OCVOutputArrayable>)positions;
- (void)detectOnImage:(id<OCVInputArrayable>)image toPositions:(id<OCVOutputArrayable>)positions withVotes:(id<OCVOutputArrayable>)votes;
- (void)detectEdges:(id<OCVInputArrayable>)edges withDx:(id<OCVInputArrayable>)dx withDy:(id<OCVInputArrayable>)dy toPositions:(id<OCVOutputArrayable>)positions;
- (void)detectEdges:(id<OCVInputArrayable>)edges withDx:(id<OCVInputArrayable>)dx withDy:(id<OCVInputArrayable>)dy toPositions:(id<OCVOutputArrayable>)positions withVotes:(id<OCVOutputArrayable>)votes;
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/ImageProcessing/OCVGeneralizedHough.m
================================================
//
// OCVGeneralizedHough.m
// LegoCV
//
// Created by Dal Rupnik on 18/03/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVGeneralizedHough.h"
@implementation OCVGeneralizedHough
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/ImageProcessing/OCVGeneralizedHoughBallard.h
================================================
//
// OCVGeneralizedHoughBallard.h
// LegoCV
//
// Created by Dal Rupnik on 18/03/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVGeneralizedHough.h"
/*!
* Reference type: cv::GeneralizedHoughBallard
*/
@interface OCVGeneralizedHoughBallard : OCVGeneralizedHough
@property (nonatomic, assign) NSInteger levels;
@property (nonatomic, assign) NSInteger voteThreshold;
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/ImageProcessing/OCVGeneralizedHoughBallard.m
================================================
//
// OCVGeneralizedHoughBallard.m
// LegoCV
//
// Created by Dal Rupnik on 18/03/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVGeneralizedHoughBallard.h"
@implementation OCVGeneralizedHoughBallard
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/ImageProcessing/OCVGeneralizedHoughGuil.h
================================================
//
// OCVGeneralizedHoughGuil.h
// LegoCV
//
// Created by Dal Rupnik on 18/03/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVGeneralizedHough.h"
/*!
* Reference type: cv::GeneralizedHoughGuil
*/
@interface OCVGeneralizedHoughGuil : OCVGeneralizedHough
@property (nonatomic, assign) double xi;
@property (nonatomic, assign) NSInteger levels;
@property (nonatomic, assign) double angleEpsilon;
@property (nonatomic, assign) double minAngle;
@property (nonatomic, assign) double maxAngle;
@property (nonatomic, assign) double angleStep;
@property (nonatomic, assign) NSInteger angleThreshold;
@property (nonatomic, assign) double maxScale;
@property (nonatomic, assign) double scaleStep;
@property (nonatomic, assign) NSInteger scaleThreshold;
@property (nonatomic, assign) NSInteger positionThreshold;
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/ImageProcessing/OCVGeneralizedHoughGuil.m
================================================
//
// OCVGeneralizedHoughGuil.m
// LegoCV
//
// Created by Dal Rupnik on 18/03/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVGeneralizedHoughGuil.h"
@implementation OCVGeneralizedHoughGuil
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/ImageProcessing/OCVImage.h
================================================
//
// OCVImage.h
// LegoCV
//
// Created by Dal Rupnik on 16/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface OCVImage : NSObject
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/ImageProcessing/OCVImage.m
================================================
//
// OCVImage.m
// LegoCV
//
// Created by Dal Rupnik on 16/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVImage.h"
@implementation OCVImage
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/ImageProcessing/OCVImageOperation.h
================================================
//
// OCVImageOperation.h
// LegoCV
//
// Created by Dal Rupnik on 04/03/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVTypes.h"
#import "OCVImageTypes.h"
#import "OCVObject.h"
#import "OCVArrayables.h"
#import "OCVGeometry.h"
#import "OCVColorConversionType.h"
#import "OCVInterpolationType.h"
/*!
* Common Image Operations as defined in imgproc.hpp
*/
@interface OCVImageOperation : OCVObject
/*!
* Reference type: cv::getGaussianKernel()
*/
+ (OCVMat *)gaussianKernelForApertureSize:(NSInteger)size sigma:(double)sigma;
+ (OCVMat *)gaussianKernelForApertureSize:(NSInteger)size sigma:(double)sigma coefficientDepthType:(OCVDepthType)depthType;
/*!
* Reference type: cv::getDerivKernels()
*/
+ (void)derivKernelsWithKx:(id<OCVOutputArrayable>)kx ky:(id<OCVOutputArrayable>)ky dx:(NSInteger)dx dy:(NSInteger)dy apertureSize:(NSInteger)size;
+ (void)derivKernelsWithKx:(id<OCVOutputArrayable>)kx ky:(id<OCVOutputArrayable>)ky dx:(NSInteger)dx dy:(NSInteger)dy apertureSize:(NSInteger)size normalize:(BOOL)normalize;
+ (void)derivKernelsWithKx:(id<OCVOutputArrayable>)kx ky:(id<OCVOutputArrayable>)ky dx:(NSInteger)dx dy:(NSInteger)dy apertureSize:(NSInteger)size normalize:(BOOL)normalize coefficientDepthType:(OCVDepthType)depthType;
/*!
* Reference type: cv::getGaborKernel()
*/
+ (OCVMat *)gaborKernelForSize:(OCVSize)size sigma:(double)sigma theta:(double)theta waveLength:(double)lambd gamma:(double)gamma;
+ (OCVMat *)gaborKernelForSize:(OCVSize)size sigma:(double)sigma theta:(double)theta waveLength:(double)lambd gamma:(double)gamma phaseOffset:(double)phaseOffset;
+ (OCVMat *)gaborKernelForSize:(OCVSize)size sigma:(double)sigma theta:(double)theta waveLength:(double)lambd gamma:(double)gamma phaseOffset:(double)phaseOffset coefficientDepthType:(OCVDepthType)depthType;
/*!
* Reference type: cv::morphologyDefaultBorderValue()
*/
+ (OCVScalar)morphologyDefaultBorderValue;
/*!
* Reference type: cv::getStructuringElement()
*/
+ (OCVMat *)structuringElementWithShape:(OCVMorphShape)shape size:(OCVSize)size;
+ (OCVMat *)structuringElementWithShape:(OCVMorphShape)shape size:(OCVSize)size anchorPoint:(OCVPoint)anchorPoint;
/*!
* Reference type: cv::medianBlur()
*/
+ (void)medianBlurWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination size:(NSInteger)size;
/*!
* Reference type: cv::GaussianBlur()
*/
+ (void)gaussianBlurWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination size:(NSInteger)size sigmaX:(double)sigmaX;
+ (void)gaussianBlurWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination size:(NSInteger)size sigmaX:(double)sigmaX sigmaY:(double)sigmaY;
+ (void)gaussianBlurWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination size:(NSInteger)size sigmaX:(double)sigmaX sigmaY:(double)sigmaY borderType:(OCVBorderType)borderType;
/*!
* Reference type: cv::bilateralFilter()
*/
+ (void)bilateralFilterWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination diameter:(NSInteger)diameter sigmaColor:(double)sigmaColor sigmaSpace:(double)sigmaSpace;
+ (void)bilateralFilterWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination diameter:(NSInteger)diameter sigmaColor:(double)sigmaColor sigmaSpace:(double)sigmaSpace borderType:(OCVBorderType)borderType;
/*!
* Reference type: cv::boxFilter()
*/
+ (void)boxFilterWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination depth:(NSInteger)depth size:(NSInteger)size;
+ (void)boxFilterWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination depth:(NSInteger)depth size:(NSInteger)size anchorPoint:(OCVPoint)anchorPoint;
+ (void)boxFilterWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination depth:(NSInteger)depth size:(NSInteger)size anchorPoint:(OCVPoint)anchorPoint normalize:(BOOL)normalize;
+ (void)boxFilterWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination depth:(NSInteger)depth size:(NSInteger)size anchorPoint:(OCVPoint)anchorPoint normalize:(BOOL)normalize borderType:(OCVBorderType)borderType;
/*!
* Reference type: cv::sqrBoxFilter()
*/
+ (void)squareBoxFilterWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination depth:(NSInteger)depth size:(NSInteger)size;
+ (void)squareBoxFilterWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination depth:(NSInteger)depth size:(NSInteger)size anchorPoint:(OCVPoint)anchorPoint;
+ (void)squareBoxFilterWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination depth:(NSInteger)depth size:(NSInteger)size anchorPoint:(OCVPoint)anchorPoint normalize:(BOOL)normalize;
+ (void)squareBoxFilterWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination depth:(NSInteger)depth size:(NSInteger)size anchorPoint:(OCVPoint)anchorPoint normalize:(BOOL)normalize borderType:(OCVBorderType)borderType;
/*!
* Reference type: cv::blur()
*/
+ (void)blurWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination size:(NSInteger)size;
+ (void)blurWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination size:(NSInteger)size anchorPoint:(OCVPoint)anchorPoint;
+ (void)blurWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination size:(NSInteger)size anchorPoint:(OCVPoint)anchorPoint borderType:(OCVBorderType)borderType;
/*!
* Reference type: cv::filter2D()
*/
+ (void)filter2DWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination depth:(NSInteger)depth kernel:(id<OCVInputArrayable>)kernel;
+ (void)filter2DWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination depth:(NSInteger)depth kernel:(id<OCVInputArrayable>)kernel anchorPoint:(OCVPoint)anchorPoint;
+ (void)filter2DWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination depth:(NSInteger)depth kernel:(id<OCVInputArrayable>)kernel anchorPoint:(OCVPoint)anchorPoint delta:(double)delta;
+ (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;
/*!
* Reference type: cv::sepFilter2D()
*/
+ (void)separableFilter2DWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination depth:(NSInteger)depth kernelX:(id<OCVInputArrayable>)kernelX kernelY:(id<OCVInputArrayable>)kernelY;
+ (void)separableFilter2DWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination depth:(NSInteger)depth kernelX:(id<OCVInputArrayable>)kernelX kernelY:(id<OCVInputArrayable>)kernelY anchorPoint:(OCVPoint)anchorPoint;
+ (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;
+ (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;
/*!
* Reference type: cv::Sobel()
*/
+ (void)sobelWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination depth:(NSInteger)depth dx:(NSInteger)dx dy:(NSInteger)dy;
+ (void)sobelWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination depth:(NSInteger)depth dx:(NSInteger)dx dy:(NSInteger)dy size:(NSInteger)size;
+ (void)sobelWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination depth:(NSInteger)depth dx:(NSInteger)dx dy:(NSInteger)dy size:(NSInteger)size scale:(double)scale;
+ (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;
+ (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;
/*!
* Reference type: cv::spatialGradient()
*/
+ (void)spatialGradientWithSource:(id<OCVInputArrayable>)source dx:(id<OCVOutputArrayable>)dx dy:(id<OCVOutputArrayable>)dy;
+ (void)spatialGradientWithSource:(id<OCVInputArrayable>)source dx:(id<OCVOutputArrayable>)dx dy:(id<OCVOutputArrayable>)dy size:(NSInteger)size;
+ (void)spatialGradientWithSource:(id<OCVInputArrayable>)source dx:(id<OCVOutputArrayable>)dx dy:(id<OCVOutputArrayable>)dy size:(NSInteger)size borderType:(OCVBorderType)borderType;
/*!
* Reference type: cv::Scharr()
*/
+ (void)scharrWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination depth:(NSInteger)depth dx:(NSInteger)dx dy:(NSInteger)dy;
+ (void)scharrWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination depth:(NSInteger)depth dx:(NSInteger)dx dy:(NSInteger)dy scale:(double)scale;
+ (void)scharrWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination depth:(NSInteger)depth dx:(NSInteger)dx dy:(NSInteger)dy scale:(double)scale delta:(double)delta;
+ (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;
/*!
* Reference type: cv::Laplacian()
*/
+ (void)laplacianWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination depth:(NSInteger)depth;
+ (void)laplacianWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination depth:(NSInteger)depth size:(NSInteger)size;
+ (void)laplacianWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination depth:(NSInteger)depth size:(NSInteger)size scale:(double)scale;
+ (void)laplacianWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination depth:(NSInteger)depth size:(NSInteger)size scale:(double)scale delta:(double)delta;
+ (void)laplacianWithSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination depth:(NSInteger)depth size:(NSInteger)size scale:(double)scale delta:(double)delta borderType:(OCVBorderType)borderType;
+ (void)convertColorFromSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination withType:(OCVColorConversionType)type;
+ (void)convertColorFromSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination withType:(OCVColorConversionType)type withDestinationCn:(NSInteger)destinationCn;
+ (void)resizeFromSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination size:(OCVSize)size fx:(double)fx fy:(double)fy interpolation:(OCVInterpolationType)interpolation;
+ (void)equalizeHistogramFromSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination;
+ (void)rectangleOnSource:(id<OCVInputOutputArrayable>)source fromPoint:(OCVPoint)point1 toPoint:(OCVPoint)point2 withColor:(OCVScalar)color thickness:(NSInteger)thickness lineType:(NSInteger)lineType shift:(NSInteger)shift;
+ (void)rectangleOnSource:(id<OCVInputOutputArrayable>)source fromRect:(OCVRect)rect withColor:(OCVScalar)color thickness:(NSInteger)thickness lineType:(NSInteger)lineType shift:(NSInteger)shift;
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/ImageProcessing/OCVImageOperation.mm
================================================
//
// OCVImageOperation.m
// LegoCV
//
// Created by Dal Rupnik on 04/03/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import <opencv2/core.hpp>
#import <opencv2/imgproc.hpp>
#import "OCVGeometry+Private.h"
#import "OCVInputArray+Private.h"
#import "OCVOutputArray+Private.h"
#import "OCVInputOutputArray+Private.h"
#import "OCVMatDataAllocator+Private.h"
#import "OCVImageOperation.h"
@implementation OCVImageOperation
+ (void)convertColorFromSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination withType:(OCVColorConversionType)type {
[self convertColorFromSource:source toDestination:destination withType:type withDestinationCn:0];
}
+ (void)convertColorFromSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination withType:(OCVColorConversionType)type withDestinationCn:(NSInteger)destinationCn {
cv::cvtColor(*source.input._input, *destination.output._output, (int)type, (int)destinationCn);
}
+ (void)equalizeHistogramFromSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination {
cv::equalizeHist(*source.input._input, *destination.output._output);
}
+ (void)resizeFromSource:(id<OCVInputArrayable>)source toDestination:(id<OCVOutputArrayable>)destination size:(OCVSize)size fx:(double)fx fy:(double)fy interpolation:(OCVInterpolationType)interpolation {
cv::resize(*source.input._input, *destination.output._output, convertSize(size), fx, fy, (int)interpolation);
}
#pragma mark - Drawing
+ (void)rectangleOnSource:(id<OCVInputOutputArrayable>)source fromPoint:(OCVPoint)point1 toPoint:(OCVPoint)point2 withColor:(OCVScalar)color thickness:(NSInteger)thickness lineType:(NSInteger)lineType shift:(NSInteger)shift {
#warning FIX THIS
//cv::rectangle(*source.inputOutput._inputOutput, convertPoint(point1), convertPoint(point2), convertScalar(color), (int)thickness, (int)lineType, (int)shift);
}
+ (void)rectangleOnSource:(id<OCVInputOutputArrayable>)source fromRect:(OCVRect)rect withColor:(OCVScalar)color thickness:(NSInteger)thickness lineType:(NSInteger)lineType shift:(NSInteger)shift {
OCVPoint point1;
point1.x = rect.origin.x;
point1.y = rect.origin.y;
OCVPoint point2;
point2.x = rect.origin.x + rect.size.width;
point2.y = rect.origin.y + rect.size.height;
#warning FIX THIS
//cv::rectangle(*source.inputOutput._inputOutput, convertPoint(point1), convertPoint(point2), convertScalar(color), (int)thickness, (int)lineType, (int)shift);
}
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/ImageProcessing/OCVImageProcessing.h
================================================
//
// OCVImageProcessing.h
// LegoCV
//
// Created by Dal Rupnik on 07/03/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#ifndef OCVImageProcessing_h
#define OCVImageProcessing_h
#import "OCVImageOperation.h"
#endif /* OCVImageProcessing_h */
================================================
FILE: LegoCV/LegoCV/Wrapper/ImageProcessing/OCVImageTypes.h
================================================
//
// OCVImageTypes.h
// LegoCV
//
// Created by Dal Rupnik on 18/03/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#ifndef OCVImageTypes_h
#define OCVImageTypes_h
/*!
* Reference type: cv::MorphTypes
*/
typedef NS_ENUM(NSInteger, OCVMorphType) {
OCVMorphTypeErode = 0,
OCVMorphTypeDilate = 1,
OCVMorphTypeOpen = 2,
OCVMorphTypeClose = 3,
OCVMorphTypeGradient = 4,
OCVMorphTypeTopHat = 5,
OCVMorphTypeBlackHat = 6,
OCVMorphTypeHitOrMiss = 7
};
/*!
* Reference type: cv::MorphShapes
*/
typedef NS_ENUM(NSInteger, OCVMorphShape) {
OCVMorphShapeRect = 0,
OCVMorphShapeCross = 1,
OCVMorphShapeEllipse = 2
};
/*!
* Reference type: cv::DistanceTypes
*/
typedef NS_ENUM(NSInteger, OCVDistanceType) {
OCVDistanceTypeUser = -1, //!< User defined distance
OCVDistanceTypeL1 = 1, //!< distance = |x1-x2| + |y1-y2|
OCVDistanceTypeL2 = 2, //!< the simple euclidean distance
OCVDistanceTypeC = 3, //!< distance = max(|x1-x2|,|y1-y2|)
OCVDistanceTypeL12 = 4, //!< L1-L2 metric: distance = 2(sqrt(1+x*x/2) - 1))
OCVDistanceTypeFair = 5, //!< distance = c^2(|x|/c-log(1+|x|/c)), c = 1.3998
OCVDistanceTypeWelsch = 6, //!< distance = c^2/2(1-exp(-(x/c)^2)), c = 2.9846
OCVDistanceTypeHubar = 7 //!< distance = |x|<c ? x^2/2 : c(|x|-c/2), c=1.345
};
/*!
* Reference type: cv::DistanceTransformMasks
*/
typedef NS_OPTIONS(NSInteger, OCVDistanceTransformMasks) {
OCVDistanceTransformMask3 = 3, //!< mask=3
OCVDistanceTransformMask5 = 5, //!< mask=5
OCVDistanceTransformMaskPrecise = 0 //!<
};
/*!
* Reference type: cv::ThresholdTypes
*/
typedef NS_ENUM(NSInteger, OCVThresholdType) {
OCVThresholdTypeBinary = 0,
OCVThresholdTypeBinaryInverse = 1,
OCVThresholdTypeTruncate = 2,
OCVThresholdTypeToZero = 3,
OCVThresholdTypeToZeroInverse = 4,
OCVThresholdTypeMask = 7,
OCVThresholdTypeOtsu = 8, //!< flag, use Otsu algorithm to choose the optimal threshold value
OCVThresholdTypeTriangle = 16 //!< flag, use Triangle algorithm to choose the optimal threshold value
};
/*!
* Reference type: cv::AdaptiveThresholdTypes
*/
typedef NS_ENUM(NSInteger, OCVAdaptiveThresholdType) {
OCVAdaptiveThresholdTypeMeanC = 0,
OCVAdaptiveThresholdTypeGaussianC = 1
};
/*!
* Reference type: cv::UndistortTypes
*/
typedef NS_ENUM(NSInteger, OCVUndistortType) {
OCVUndistortTypeProjectionSphericalOrthogonal = 0,
OCVUndistortTypeProjectionSphericalEqualRectangle = 1
};
/*!
* Reference type: cv::GrabCutClasses
*/
typedef NS_ENUM(NSInteger, OCVGrabCutClassType) {
OCVGrabCutClassTypeBackground = 0, //!< an obvious background pixels
OCVGrabCutClassTypeForeground = 1, //!< an obvious foreground (object) pixel
OCVGrabCutClassTypePossibleBackground = 2, //!< a possible background pixel
OCVGrabCutClassTypePossibleForeground = 3 //!< a possible foreground pixel
};
/*!
* Reference type: cv::GrabCutModes
*/
typedef NS_ENUM(NSInteger, OCVGrabCutMode) {
OCVGrabCutModeInitWithRect = 0,
OCVGrabCutModeInitWithMask = 1,
OCVGrabCutModeEval = 2
};
/*!
* Reference type: cv::DistanceTransformLabelTypes
*/
typedef NS_ENUM(NSInteger, OCVDistanceTransformLabelType) {
OCVDistanceTransformLabelTypeConnectedComponent = 0,
OCVDistanceTransformLabelTypePixel = 1
};
/*!
* Reference type: cv::FloodFillFlags
*/
typedef NS_OPTIONS(NSInteger, OCVFloodFillFlags) {
OCVFloodFillFlagFixedRange = 1 << 16,
OCVFloodFillFlagsMaskOnly = 1 << 17
};
/*!
* Reference type: cv::ConnectedComponentsTypes
*/
typedef NS_ENUM(NSInteger, OCVConnectedComponentType) {
OCVConnectedComponentTypeLeft = 0, //!< The leftmost (x) coordinate which is the inclusive start of the bounding
//!< box in the horizontal direction.
OCVConnectedComponentTypeTop = 1, //!< The topmost (y) coordinate which is the inclusive start of the bounding
//!< box in the vertical direction.
OCVConnectedComponentTypeWidth = 2, //!< The horizontal size of the bounding box
OCVConnectedComponentTypeHeight = 3, //!< The vertical size of the bounding box
OCVConnectedComponentTypeArea = 4, //!< The total area (in pixels) of the connected component
OCVConnectedComponentTypeMax = 5
};
/*!
* Reference type: cv::ConnectedComponentsAlgorithmsTypes
*/
typedef NS_ENUM(NSInteger, OCVConnectedComponentAlgorithmType) {
OCVConnectedComponentAlgorithmTypeWu = 0, //!< SAUF algorithm for 8-way connectivity, SAUF algorithm for 4-way connectivity
OCVConnectedComponentAlgorithmTypeDefault = -1, //!< BBDT algortihm for 8-way connectivity, SAUF algorithm for 4-way connectivity
OCVConnectedComponentAlgorithmTypeGrana = 1 //!< BBDT algorithm for 8-way connectivity, SAUF algorithm for 4-way connectivity
};
/*!
* Reference type: cv::RetrievalModes
*/
typedef NS_ENUM(NSInteger, OCVRetrievalMode) {
OCVRetrievalModeExternal = 0,
OCVRetrievalModeList = 1,
OCVRetrievalModeConnectedComponent = 2,
OCVRetrievalModeTree = 3,
OCVRetrievalModeFloodFill = 4
};
/*!
* Reference type: cv::ContourApproximationModes
*/
typedef NS_ENUM(NSInteger, OCVContourApproximationMode) {
OCVContourApproximationModeNone = 1,
/** compresses horizontal, vertical, and diagonal segments and leaves only their end points.
For example, an up-right rectangular contour is encoded with 4 points. */
OCVContourApproximationModeSimple = 2,
/** applies one of the flavors of the Teh-Chin chain approximation algorithm @cite TehChin89 */
OCVContourApproximationModeTC89L1 = 3,
/** applies one of the flavors of the Teh-Chin chain approximation algorithm @cite TehChin89 */
OCVContourApproximationModeC89KCOS = 4
};
/*!
* Reference type: cv::HoughModes
*/
typedef NS_ENUM(NSInteger, OCVHoughMode) {
OCVHoughModeStandard = 0,
OCVHoughModeProbabilistic = 1,
OCVHoughModeMultiScale = 2,
OCVHoughModeGradient = 3
};
/*!
* Reference type: cv::LineSegmentDetectorModes
*/
typedef NS_ENUM(NSInteger, OCVLineSegmentDetectorMode) {
OCVLineSegmentDetectorModeNone = 0, //!< No refinement applied
OCVLineSegmentDetectorModeStandard = 1, //!< Standard refinement is applied. E.g. breaking arches into smaller straighter line approximations.
OCVLineSegmentDetectorModeAdvanced = 2 //!< Advanced refinement. Number of false alarms is calculated, lines are
//!< refined through increase of precision, decrement in size, etc.
};
/*!
* Reference type: cv::HistCompMethods
*/
typedef NS_ENUM(NSInteger, OCVHistogramComparisonMethodType) {
OCVHistogramComparisonMethodTypeCorrelation = 0,
OCVHistogramComparisonMethodTypeChiSquare = 1,
OCVHistogramComparisonMethodTypeIntersection = 2,
OCVHistogramComparisonMethodTypeBhattacharyya = 3,
OCVHistogramComparisonMethodTypeHellinger = OCVHistogramComparisonMethodTypeBhattacharyya,
OCVHistogramComparisonMethodTypeChiSquareAlternative = 4,
OCVHistogramComparisonMethodTypeKullbackLeibler = 5
};
/*!
* Reference type: cv::RectanglesIntersectTypes
*/
typedef NS_ENUM(NSInteger, OCVRectangleIntersectType) {
OCVRectangleIntersectTypeNone = 0, //!< No intersection
OCVRectangleIntersectTypePartial = 1, //!< There is a partial intersection
OCVRectangleIntersectTypeFull = 2 //!< One of the rectangle is fully enclosed in the other
};
#endif /* OCVImageTypes_h */
================================================
FILE: LegoCV/LegoCV/Wrapper/ImageProcessing/OCVInterpolationType.h
================================================
//
// OCVInterpolationType.h
// LegoCV
//
// Created by Dal Rupnik on 24/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#ifndef OCVInterpolationType_h
#define OCVInterpolationType_h
/*!
* Reference type: cv::InterpolationFlags
*/
typedef NS_OPTIONS(NSInteger, OCVInterpolationType) {
OCVInterpolationTypeNearest = 0,
OCVInterpolationTypeLinear = 1,
OCVInterpolationTypeCubic = 2,
OCVInterpolationTypeArea = 3,
OCVInterpolationTypeLanczos4 = 4,
OCVInterpolationTypeMax = 7,
OCVInterpolationTypeWarpFillOutliers = 8,
OCVInterpolationTypeWarpInverseMap = 9
};
/*!
* Reference type: cv::InterpolationMasks
*/
typedef NS_OPTIONS(NSInteger, OCVInterpolationMasks) {
OCVInterpolationMaskBits = 5,
OCVInterpolationMaskBits2 = OCVInterpolationMaskBits * 2,
OCVInterpolationMaskTabSize = 1 << OCVInterpolationMaskBits,
OCVInterpolationMaskTabSize2 = OCVInterpolationMaskTabSize * OCVInterpolationMaskTabSize
};
#endif /* OCVInterpolationType_h */
================================================
FILE: LegoCV/LegoCV/Wrapper/ImageProcessing/OCVLineSegmentDetector.h
================================================
//
// OCVLineSegmentDetector.h
// LegoCV
//
// Created by Dal Rupnik on 18/03/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVObject.h"
#import "OCVImageTypes.h"
#import "OCVGeometry.h"
#import "OCVArrayables.h"
#import "OCVAlgorithm.h"
@interface OCVLineSegmentDetectorOptions : OCVObject
@property (nonatomic, assign) OCVLineSegmentDetectorMode mode;
@property (nonatomic, assign) double scale;
@property (nonatomic, assign) double sigmaScale;
@property (nonatomic, assign) double quantization;
@property (nonatomic, assign) double gradientAngleTolerance;
@property (nonatomic, assign) double logEps;
@property (nonatomic, assign) double minimalDensity;
@property (nonatomic, assign) NSInteger numberOfBins;
+ (instancetype)defaultOptions;
@end
@interface OCVLineSegmentDetector : OCVAlgorithm
- (instancetype)initWitOptions:(OCVLineSegmentDetectorOptions *)options;
- (void)detectOnImage:(id<OCVInputArrayable>)image toLines:(id<OCVOutputArrayable>)lines;
- (void)detectOnImage:(id<OCVInputArrayable>)image toLines:(id<OCVOutputArrayable>)lines widthRegions:(id<OCVOutputArrayable>)widthRegions;
- (void)detectOnImage:(id<OCVInputArrayable>)image toLines:(id<OCVOutputArrayable>)lines widthRegions:(id<OCVOutputArrayable>)widthRegions precisions:(id<OCVOutputArrayable>)precisions;
- (void)detectOnImage:(id<OCVInputArrayable>)image toLines:(id<OCVOutputArrayable>)lines widthRegions:(id<OCVOutputArrayable>)widthRegions precisions:(id<OCVOutputArrayable>)precisions falseAlarms:(id<OCVOutputArrayable>)falseAlarms;
- (void)drawSegmentsOnImage:(id<OCVInputOutputArrayable>)image lines:(id<OCVInputArrayable>)lines;
- (NSInteger)compareSegmentsInSize:(OCVSize)size lines1:(id<OCVInputArrayable>)lines1 lines2:(id<OCVInputArrayable>)lines2;
- (NSInteger)compareSegmentsInSize:(OCVSize)size lines1:(id<OCVInputArrayable>)lines1 lines2:(id<OCVInputArrayable>)lines2 onImage:(id<OCVInputOutputArrayable>)image;
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/ImageProcessing/OCVLineSegmentDetector.m
================================================
//
// OCVLineSegmentDetector.m
// LegoCV
//
// Created by Dal Rupnik on 18/03/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVLineSegmentDetector.h"
@implementation OCVLineSegmentDetector
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/ImageProcessing/OCVSubdiv2D.h
================================================
//
// OCVSubdiv2D.h
// LegoCV
//
// Created by Dal Rupnik on 18/03/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVObject.h"
#import "OCVGeometry.h"
/*!
* Reference type: cv::Subdiv2D::Point location cases
*/
typedef NS_ENUM(NSInteger, OCVSubdiv2DPointLocationType) {
OCVSubdiv2DPointLocationTypeError = -2, //!< Point location error
OCVSubdiv2DPointLocationTypeOutsideRect = -1, //!< Point outside the subdivision bounding rect
OCVSubdiv2DPointLocationTypeInside = 0, //!< Point inside some facet
OCVSubdiv2DPointLocationTypeVertex = 1, //!< Point coincides with one of the subdivision vertices
OCVSubdiv2DPointLocationTypeOnEdge = 2 //!< Point on some edge
};
/*!
* Reference type: cv::Subdiv2D::Edge type navigation
*/
typedef NS_ENUM(NSInteger, OCVSubdiv2DEdgeType) {
OCVSubdiv2DEdgeTypeNextAroundOrg = 0x00,
OCVSubdiv2DEdgeTypeNextAroundDst = 0x22,
OCVSubdiv2DEdgeTypePreviousAroundOrg = 0x11,
OCVSubdiv2DEdgeTypePreviousAroundDst = 0x33,
OCVSubdiv2DEdgeTypeNextAroundLeft = 0x13,
OCVSubdiv2DEdgeTypeNextAroundRight = 0x31,
OCVSubdiv2DEdgeTypePreviousAroundLeft = 0x20,
OCVSubdiv2DEdgeTypePreviousAroundRight = 0x02
};
typedef NS_ENUM(NSInteger, OCVSubdiv2DRotationType) {
OCVSubdiv2DRotationTypeInputEdge = 0,
OCVSubdiv2DRotationTypeRotatedEdge = 1,
OCVSubdiv2DRotationTypeReversedEdge = 2,
OCVSubdiv2DRotationTypeReversedRotatedEdge = 3
};
//
// MARK: Utility classes and structs to improve API design
//
/*!
* Used with locating point methods
*/
typedef struct OCVSubdiv2DLocateResult {
OCVSubdiv2DEdgeType edgeType;
NSInteger edge;
NSInteger vertex;
} OCVSubdiv2DLocateResult;
typedef struct OCVSubdiv2DNearestResult {
OCVPoint2f nearestPoint;
NSInteger vertex;
} OCVSubdiv2DNearestResult;
typedef struct OCVSubdiv2DVertexResult {
OCVPoint2f vertex;
NSInteger firstEdge;
} OCVSubdiv2DVertexResult;
typedef struct OCVSubdiv2DEdgePointResult {
NSInteger edge;
OCVPoint2f point;
} OCVSubdiv2DEdgePointResult;
NS_ASSUME_NONNULL_BEGIN
@interface OCVVoronoiFacetResult : OCVObject
//
// TODO: Implement type here, array of arrays of OCVPoint2f
//
@property (nonatomic, strong) NSArray <NSArray *> * facets;
//
// TODO: Implement type here, array of OCVPoint2f
//
@property (nonatomic, strong) NSArray* facetCenters;
@end
/*!
* Reference type: cv::Subdiv2D
*/
@interface OCVSubdiv2D : OCVObject
//
// TODO: Implement type here, an array of Vec4f elements
//
@property (nonatomic, readonly) NSArray* edges;
//
// TODO: Implement Swift wrapper, numbers are all integers
//
@property (nonatomic, readonly) NSArray<NSNumber *>* leadingEdges;
//
// TODO: Implement type here, an array of Vec6f elements
//
@property (nonatomic, readonly) NSArray* triangles;
- (instancetype)initWithRect:(OCVRect)rect;
- (void)setupDelaunayWithRect:(OCVRect)rect;
- (NSInteger)insertPoint:(OCVPoint2f)point;
/*!
* Inserts vector of OCVPoint2f structs
*
* TODO: Add Swift wrapper for this
*/
- (NSInteger)insertArray:(NSArray<NSValue *> *)array;
- (OCVSubdiv2DLocateResult)locatePoint:(OCVPoint2f)point;
- (OCVSubdiv2DNearestResult)findNearestWithPoint:(OCVPoint2f)point;
- (OCVVoronoiFacetResult *)voronoiFacetListWithIndexes:(NSArray<NSNumber *> *)indexes;
- (OCVSubdiv2DVertexResult)vertexResultWithId:(NSInteger)vertex;
- (NSInteger)edgeWithEdge:(NSInteger)edge nextEdgeType:(OCVSubdiv2DEdgeType)nextEdgeType;
- (NSInteger)nextEdgeWithEdge:(NSInteger)edge;
- (NSInteger)rotateEdgeWithEdge:(NSInteger)edge rotationType:(OCVSubdiv2DRotationType)rotationType;
- (NSInteger)symEdgeWithEdge:(NSInteger)edge;
- (OCVSubdiv2DEdgePointResult)edgeOriginWithEdge:(NSInteger)edge;
- (OCVSubdiv2DEdgePointResult)edgeDistanceToEdge:(NSInteger)edge;
@end
NS_ASSUME_NONNULL_END
================================================
FILE: LegoCV/LegoCV/Wrapper/ImageProcessing/OCVSubdiv2D.m
================================================
//
// OCVSubdiv2D.m
// LegoCV
//
// Created by Dal Rupnik on 18/03/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVSubdiv2D.h"
@implementation OCVSubdiv2D
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/LineDescriptor/OCVLSDDetector.h
================================================
//
// OCVLSDDetector.h
// LegoCV
//
// Created by Dal Rupnik on 18/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVObject.h"
@interface OCVLSDDetector : OCVObject
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/LineDescriptor/OCVLSDDetector.m
================================================
//
// OCVLSDDetector.m
// LegoCV
//
// Created by Dal Rupnik on 18/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVLSDDetector.h"
@implementation OCVLSDDetector
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/ML/Enum/OCVBoostType.h
================================================
//
// OCVBoostType.h
// LegoCV
//
// Created by Dal Rupnik on 18/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVObject.h"
@interface OCVBoostType : OCVObject
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/ML/Enum/OCVBoostType.m
================================================
//
// OCVBoostType.m
// LegoCV
//
// Created by Dal Rupnik on 18/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVBoostType.h"
@implementation OCVBoostType
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/ML/Enum/OCVVarType.h
================================================
//
// OCVVarType.h
// LegoCV
//
// Created by Dal Rupnik on 18/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVObject.h"
@interface OCVVarType : OCVObject
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/ML/Enum/OCVVarType.m
================================================
//
// OCVVarType.m
// LegoCV
//
// Created by Dal Rupnik on 18/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVVarType.h"
@implementation OCVVarType
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/ML/OCVANNMLP.h
================================================
//
// OCVANNMLP.h
// LegoCV
//
// Created by Dal Rupnik on 18/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVObject.h"
@interface OCVANNMLP : OCVObject
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/ML/OCVANNMLP.m
================================================
//
// OCVANNMLP.m
// LegoCV
//
// Created by Dal Rupnik on 18/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVANNMLP.h"
@implementation OCVANNMLP
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/ML/OCVBoost.h
================================================
//
// OCVBoost.h
// LegoCV
//
// Created by Dal Rupnik on 18/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVObject.h"
@interface OCVBoost : OCVObject
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/ML/OCVBoost.m
================================================
//
// OCVBoost.m
// LegoCV
//
// Created by Dal Rupnik on 18/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVBoost.h"
@implementation OCVBoost
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/ML/OCVDTree.h
================================================
//
// OCVDTree.h
// LegoCV
//
// Created by Dal Rupnik on 18/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVObject.h"
@interface OCVDTree : OCVObject
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/ML/OCVDTree.m
================================================
//
// OCVDTree.m
// LegoCV
//
// Created by Dal Rupnik on 18/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVDTree.h"
@implementation OCVDTree
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/ML/OCVEM.h
================================================
//
// OCVEM.h
// LegoCV
//
// Created by Dal Rupnik on 18/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVObject.h"
@interface OCVEM : OCVObject
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/ML/OCVEM.m
================================================
//
// OCVEM.m
// LegoCV
//
// Created by Dal Rupnik on 18/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVEM.h"
@implementation OCVEM
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/ML/OCVKNearest.h
================================================
//
// OCVKNearest.h
// LegoCV
//
// Created by Dal Rupnik on 18/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVObject.h"
@interface OCVKNearest : OCVObject
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/ML/OCVKNearest.m
================================================
//
// OCVKNearest.m
// LegoCV
//
// Created by Dal Rupnik on 18/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVKNearest.h"
@implementation OCVKNearest
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/ML/OCVLogisticRegression.h
================================================
//
// OCVLogisticRegression.h
// LegoCV
//
// Created by Dal Rupnik on 18/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVObject.h"
@interface OCVLogisticRegression : OCVObject
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/ML/OCVLogisticRegression.m
================================================
//
// OCVLogisticRegression.m
// LegoCV
//
// Created by Dal Rupnik on 18/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVLogisticRegression.h"
@implementation OCVLogisticRegression
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/ML/OCVNormalBayesClassifier.h
================================================
//
// OCVNormalBayesClassifier.h
// LegoCV
//
// Created by Dal Rupnik on 18/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVObject.h"
@interface OCVNormalBayesClassifier : OCVObject
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/ML/OCVNormalBayesClassifier.m
================================================
//
// OCVNormalBayesClassifier.m
// LegoCV
//
// Created by Dal Rupnik on 18/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVNormalBayesClassifier.h"
@implementation OCVNormalBayesClassifier
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/ML/OCVRTree.h
================================================
//
// OCVRTree.h
// LegoCV
//
// Created by Dal Rupnik on 18/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVObject.h"
@interface OCVRTree : OCVObject
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/ML/OCVRTree.m
================================================
//
// OCVRTree.m
// LegoCV
//
// Created by Dal Rupnik on 18/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVRTree.h"
@implementation OCVRTree
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/ML/OCVSVM.h
================================================
//
// OCVSVM.h
// LegoCV
//
// Created by Dal Rupnik on 18/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVObject.h"
@interface OCVSVM : OCVObject
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/ML/OCVSVM.m
================================================
//
// OCVSVM.m
// LegoCV
//
// Created by Dal Rupnik on 18/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVSVM.h"
@implementation OCVSVM
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/ML/OCVStatModelExtensions.h
================================================
//
// OCVStatModelExtensions.h
// LegoCV
//
// Created by Dal Rupnik on 18/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVObject.h"
@interface OCVStatModelExtensions : OCVObject
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/ML/OCVStatModelExtensions.m
================================================
//
// OCVStatModelExtensions.m
// LegoCV
//
// Created by Dal Rupnik on 18/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVStatModelExtensions.h"
@implementation OCVStatModelExtensions
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/ML/OCVTrainData.h
================================================
//
// OCVTrainData.h
// LegoCV
//
// Created by Dal Rupnik on 18/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVObject.h"
@interface OCVTrainData : OCVObject
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/ML/OCVTrainData.m
================================================
//
// OCVTrainData.m
// LegoCV
//
// Created by Dal Rupnik on 18/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVTrainData.h"
@implementation OCVTrainData
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/ML/Structure/OCVMCvDTreeNode.h
================================================
//
// OCVMCvDTreeNode.h
// LegoCV
//
// Created by Dal Rupnik on 18/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVObject.h"
@interface OCVMCvDTreeNode : OCVObject
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/ML/Structure/OCVMCvDTreeNode.m
================================================
//
// OCVMCvDTreeNode.m
// LegoCV
//
// Created by Dal Rupnik on 18/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVMCvDTreeNode.h"
@implementation OCVMCvDTreeNode
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/ML/Structure/OCVMCvDTreeSplit.h
================================================
//
// OCVMCvDTreeSplit.h
// LegoCV
//
// Created by Dal Rupnik on 18/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVObject.h"
@interface OCVMCvDTreeSplit : OCVObject
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/ML/Structure/OCVMCvDTreeSplit.m
================================================
//
// OCVMCvDTreeSplit.m
// LegoCV
//
// Created by Dal Rupnik on 18/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVMCvDTreeSplit.h"
@implementation OCVMCvDTreeSplit
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/ML/Structure/OCVMCvDTreeSplitMOrder.h
================================================
//
// OCVMCvDTreeSplitMOrder.h
// LegoCV
//
// Created by Dal Rupnik on 18/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVObject.h"
@interface OCVMCvDTreeSplitMOrder : OCVObject
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/ML/Structure/OCVMCvDTreeSplitMOrder.m
================================================
//
// OCVMCvDTreeSplitMOrder.m
// LegoCV
//
// Created by Dal Rupnik on 18/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVMCvDTreeSplitMOrder.h"
@implementation OCVMCvDTreeSplitMOrder
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/ML/Structure/OCVMCvParamGrid.h
================================================
//
// OCVMCvParamGrid.h
// LegoCV
//
// Created by Dal Rupnik on 18/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVObject.h"
@interface OCVMCvParamGrid : OCVObject
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/ML/Structure/OCVMCvParamGrid.m
================================================
//
// OCVMCvParamGrid.m
// LegoCV
//
// Created by Dal Rupnik on 18/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVMCvParamGrid.h"
@implementation OCVMCvParamGrid
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/OCR/OCVOrientation.h
================================================
//
// OCVOrientation.h
// LegoCV
//
// Created by Dal Rupnik on 18/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVObject.h"
@interface OCVOrientation : OCVObject
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/OCR/OCVOrientation.m
================================================
//
// OCVOrientation.m
// LegoCV
//
// Created by Dal Rupnik on 18/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVOrientation.h"
@implementation OCVOrientation
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/OCR/OCVPageIterator.h
================================================
//
// OCVPageIterator.h
// LegoCV
//
// Created by Dal Rupnik on 18/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVObject.h"
@interface OCVPageIterator : OCVObject
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/OCR/OCVPageIterator.m
================================================
//
// OCVPageIterator.m
// LegoCV
//
// Created by Dal Rupnik on 18/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVPageIterator.h"
@implementation OCVPageIterator
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/OCR/OCVTesseract.h
================================================
//
// OCVTesseract.h
// LegoCV
//
// Created by Dal Rupnik on 18/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVObject.h"
@interface OCVTesseract : OCVObject
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/OCR/OCVTesseract.m
================================================
//
// OCVTesseract.m
// LegoCV
//
// Created by Dal Rupnik on 18/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVTesseract.h"
@implementation OCVTesseract
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/OCR/OCVTesseractResult.h
================================================
//
// OCVTesseractResult.h
// LegoCV
//
// Created by Dal Rupnik on 18/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVObject.h"
@interface OCVTesseractResult : OCVObject
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/OCR/OCVTesseractResult.m
================================================
//
// OCVTesseractResult.m
// LegoCV
//
// Created by Dal Rupnik on 18/01/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVTesseractResult.h"
@implementation OCVTesseractResult
@end
================================================
FILE: LegoCV/LegoCV/Wrapper/ObjectDetection/OCVBaseCascadeClassifier.h
================================================
//
// OCVBaseCascadeClassifier.h
// LegoCV
//
// Created by Dal Rupnik on 18/03/2017.
// Copyright © 2017 Unified Sense. All rights reserved.
//
#import "OCVPointerObject.h"
#import "OCVArrayables.h"
#import "OCVSize.h"
#import "OCVRect.h"
#import "OCVCascadeClassifierResult.h"
#import "OCVCascadeClassifierOptions.h"
NS_ASSUME_NONNULL_BEGIN
@interface OCVMaskGenerator : OCVObject
- (instancetype)initWithSource:(OCVMat *)source;
- (OC
gitextract_zblrltlp/ ├── .gitignore ├── .gitmodules ├── LICENSE ├── LegoCV/ │ ├── FaceDetection/ │ │ ├── AppDelegate.swift │ │ ├── Assets.xcassets/ │ │ │ └── AppIcon.appiconset/ │ │ │ └── Contents.json │ │ ├── Base.lproj/ │ │ │ ├── LaunchScreen.storyboard │ │ │ └── Main.storyboard │ │ ├── Info.plist │ │ ├── Recognition/ │ │ │ ├── FaceDetector.swift │ │ │ └── FaceRecognizer.swift │ │ └── View Controllers/ │ │ ├── FaceRecognitionVC.swift │ │ └── LiveCameraVC.swift │ ├── LegoCV/ │ │ ├── Info.plist │ │ ├── LegoCV.h │ │ └── Wrapper/ │ │ ├── Aruco/ │ │ │ ├── OCVCharucoBoard.h │ │ │ └── OCVCharucoBoard.m │ │ ├── BgSegm/ │ │ │ ├── OCVBackgroundSubtractorGMG.h │ │ │ ├── OCVBackgroundSubtractorGMG.m │ │ │ ├── OCVBackgroundSubtractorMOG.h │ │ │ └── OCVBackgroundSubtractorMOG.m │ │ ├── Core/ │ │ │ ├── Algorithms/ │ │ │ │ ├── OCVLDA.h │ │ │ │ ├── OCVLDA.mm │ │ │ │ ├── OCVPCA.h │ │ │ │ ├── OCVPCA.mm │ │ │ │ ├── OCVRandomGenerator.h │ │ │ │ ├── OCVRandomGenerator.mm │ │ │ │ ├── OCVSVD.h │ │ │ │ └── OCVSVD.mm │ │ │ ├── Base/ │ │ │ │ ├── OCVAlgorithm.h │ │ │ │ ├── OCVAlgorithm.m │ │ │ │ ├── OCVArrayables.h │ │ │ │ ├── OCVComplex.h │ │ │ │ ├── OCVComplex.m │ │ │ │ ├── OCVEdges.h │ │ │ │ ├── OCVFormatter.h │ │ │ │ ├── OCVFormatter.m │ │ │ │ ├── OCVGeometry.h │ │ │ │ ├── OCVInputArray.h │ │ │ │ ├── OCVInputArray.mm │ │ │ │ ├── OCVInputArrayable.h │ │ │ │ ├── OCVInputOutputArray.h │ │ │ │ ├── OCVInputOutputArray.mm │ │ │ │ ├── OCVInputOutputArrayable.h │ │ │ │ ├── OCVOutputArray.h │ │ │ │ ├── OCVOutputArray.mm │ │ │ │ ├── OCVOutputArrayable.h │ │ │ │ ├── OCVPoint.h │ │ │ │ ├── OCVRect.h │ │ │ │ ├── OCVRect.m │ │ │ │ ├── OCVScalar.h │ │ │ │ ├── OCVScalar.m │ │ │ │ ├── OCVSize.h │ │ │ │ ├── OCVTypes.h │ │ │ │ ├── OCVVector.h │ │ │ │ └── OCVVector.m │ │ │ ├── Mat/ │ │ │ │ ├── OCVMat.h │ │ │ │ ├── OCVMat.mm │ │ │ │ ├── OCVMatDataAllocator.h │ │ │ │ ├── OCVMatDataAllocator.mm │ │ │ │ ├── OCVMatExpr.h │ │ │ │ ├── OCVMatExpr.mm │ │ │ │ ├── OCVUMat.h │ │ │ │ └── OCVUMat.m │ │ │ ├── OCVCore.h │ │ │ ├── Operations/ │ │ │ │ ├── OCVMinimumMaximum.h │ │ │ │ ├── OCVMinimumMaximum.m │ │ │ │ ├── OCVOperation+Bitwise.h │ │ │ │ ├── OCVOperation+Bitwise.mm │ │ │ │ ├── OCVOperation+Transform.h │ │ │ │ ├── OCVOperation+Transform.mm │ │ │ │ ├── OCVOperation.h │ │ │ │ ├── OCVOperation.mm │ │ │ │ ├── OCVTermCriteria.h │ │ │ │ └── OCVTermCriteria.m │ │ │ ├── Persistence/ │ │ │ │ ├── OCVFileNode.h │ │ │ │ ├── OCVFileNode.mm │ │ │ │ ├── OCVFileStorage.h │ │ │ │ ├── OCVFileStorage.mm │ │ │ │ ├── OCVFileStorageFormatDescriptor.h │ │ │ │ ├── OCVFileStorageFormatDescriptor.m │ │ │ │ ├── OCVPersistence.h │ │ │ │ └── OCVSerializable.h │ │ │ └── Private/ │ │ │ ├── OCVGeometry+Private.h │ │ │ ├── OCVInputArray+Private.h │ │ │ ├── OCVInputOutputArray+Private.h │ │ │ ├── OCVMatDataAllocator+Private.h │ │ │ ├── OCVOutputArray+Private.h │ │ │ ├── OCVPoint+Private.h │ │ │ ├── OCVPoint+Private.mm │ │ │ ├── OCVRect+Private.h │ │ │ ├── OCVRect+Private.mm │ │ │ ├── OCVSize+Private.h │ │ │ └── OCVSize+Private.mm │ │ ├── Cuda/ │ │ │ ├── OCVGPUMat.h │ │ │ └── OCVGPUMat.m │ │ ├── CvEnum/ │ │ │ ├── OCVStorageOperationType.h │ │ │ └── OCVStorageOperationType.m │ │ ├── Cvb/ │ │ │ ├── OCVBlob.h │ │ │ └── OCVBlob.m │ │ ├── Dnn/ │ │ │ ├── OCVImporter.h │ │ │ ├── OCVImporter.m │ │ │ ├── OCVNet.h │ │ │ └── OCVNet.m │ │ ├── Face/ │ │ │ ├── OCVEigenFaceRecognizer.h │ │ │ ├── OCVEigenFaceRecognizer.m │ │ │ ├── OCVFaceRecognizer.h │ │ │ ├── OCVFaceRecognizer.m │ │ │ ├── OCVFisherFaceRecognizer.h │ │ │ ├── OCVFisherFaceRecognizer.m │ │ │ ├── OCVLBPHFaceRecognizer.h │ │ │ └── OCVLBPHFaceRecognizer.m │ │ ├── Features2D/ │ │ │ ├── OCVFeature2D.h │ │ │ └── OCVFeature2D.m │ │ ├── Flann/ │ │ │ ├── OCVIndex.h │ │ │ └── OCVIndex.m │ │ ├── Fuzzy/ │ │ │ ├── OCVFuzzyInvoke.h │ │ │ └── OCVFuzzyInvoke.m │ │ ├── Geodetic/ │ │ │ ├── OCVGeodeticCoordinate.h │ │ │ └── OCVGeodeticCoordinate.m │ │ ├── ImageProcessing/ │ │ │ ├── OCVColorConversionType.h │ │ │ ├── OCVContrastLimitedAdaptiveHistogramEqualization.h │ │ │ ├── OCVContrastLimitedAdaptiveHistogramEqualization.m │ │ │ ├── OCVGeneralizedHough.h │ │ │ ├── OCVGeneralizedHough.m │ │ │ ├── OCVGeneralizedHoughBallard.h │ │ │ ├── OCVGeneralizedHoughBallard.m │ │ │ ├── OCVGeneralizedHoughGuil.h │ │ │ ├── OCVGeneralizedHoughGuil.m │ │ │ ├── OCVImage.h │ │ │ ├── OCVImage.m │ │ │ ├── OCVImageOperation.h │ │ │ ├── OCVImageOperation.mm │ │ │ ├── OCVImageProcessing.h │ │ │ ├── OCVImageTypes.h │ │ │ ├── OCVInterpolationType.h │ │ │ ├── OCVLineSegmentDetector.h │ │ │ ├── OCVLineSegmentDetector.m │ │ │ ├── OCVSubdiv2D.h │ │ │ └── OCVSubdiv2D.m │ │ ├── LineDescriptor/ │ │ │ ├── OCVLSDDetector.h │ │ │ └── OCVLSDDetector.m │ │ ├── ML/ │ │ │ ├── Enum/ │ │ │ │ ├── OCVBoostType.h │ │ │ │ ├── OCVBoostType.m │ │ │ │ ├── OCVVarType.h │ │ │ │ └── OCVVarType.m │ │ │ ├── OCVANNMLP.h │ │ │ ├── OCVANNMLP.m │ │ │ ├── OCVBoost.h │ │ │ ├── OCVBoost.m │ │ │ ├── OCVDTree.h │ │ │ ├── OCVDTree.m │ │ │ ├── OCVEM.h │ │ │ ├── OCVEM.m │ │ │ ├── OCVKNearest.h │ │ │ ├── OCVKNearest.m │ │ │ ├── OCVLogisticRegression.h │ │ │ ├── OCVLogisticRegression.m │ │ │ ├── OCVNormalBayesClassifier.h │ │ │ ├── OCVNormalBayesClassifier.m │ │ │ ├── OCVRTree.h │ │ │ ├── OCVRTree.m │ │ │ ├── OCVSVM.h │ │ │ ├── OCVSVM.m │ │ │ ├── OCVStatModelExtensions.h │ │ │ ├── OCVStatModelExtensions.m │ │ │ ├── OCVTrainData.h │ │ │ ├── OCVTrainData.m │ │ │ └── Structure/ │ │ │ ├── OCVMCvDTreeNode.h │ │ │ ├── OCVMCvDTreeNode.m │ │ │ ├── OCVMCvDTreeSplit.h │ │ │ ├── OCVMCvDTreeSplit.m │ │ │ ├── OCVMCvDTreeSplitMOrder.h │ │ │ ├── OCVMCvDTreeSplitMOrder.m │ │ │ ├── OCVMCvParamGrid.h │ │ │ └── OCVMCvParamGrid.m │ │ ├── OCR/ │ │ │ ├── OCVOrientation.h │ │ │ ├── OCVOrientation.m │ │ │ ├── OCVPageIterator.h │ │ │ ├── OCVPageIterator.m │ │ │ ├── OCVTesseract.h │ │ │ ├── OCVTesseract.m │ │ │ ├── OCVTesseractResult.h │ │ │ └── OCVTesseractResult.m │ │ ├── ObjectDetection/ │ │ │ ├── OCVBaseCascadeClassifier.h │ │ │ ├── OCVBaseCascadeClassifier.m │ │ │ ├── OCVCascadeClassifier.h │ │ │ ├── OCVCascadeClassifier.mm │ │ │ ├── OCVCascadeClassifierOptions.h │ │ │ ├── OCVCascadeClassifierOptions.m │ │ │ ├── OCVCascadeClassifierResult.h │ │ │ └── OCVCascadeClassifierResult.m │ │ ├── Ocl/ │ │ │ ├── OCVDevice.h │ │ │ ├── OCVDevice.m │ │ │ ├── OCVImage2D.h │ │ │ ├── OCVImage2D.m │ │ │ ├── OCVKernel.h │ │ │ ├── OCVKernel.m │ │ │ ├── OCVKernelConfiguration.h │ │ │ ├── OCVKernelConfiguration.m │ │ │ ├── OCVPlatformInfo.h │ │ │ ├── OCVPlatformInfo.m │ │ │ ├── OCVProgramSource.h │ │ │ ├── OCVProgramSource.m │ │ │ ├── OCVQueue.h │ │ │ └── OCVQueue.m │ │ ├── Plot/ │ │ │ ├── OCVPlot.h │ │ │ └── OCVPlot.m │ │ ├── Reflection/ │ │ │ ├── OCVReflectImage.h │ │ │ └── OCVReflectImage.m │ │ ├── Shape/ │ │ │ ├── OCVAffineTransformer.h │ │ │ ├── OCVAffineTransformer.m │ │ │ ├── OCVChiHistogramCostExtractor.h │ │ │ ├── OCVChiHistogramCostExtractor.m │ │ │ ├── OCVEMDHistogramCostExtractor.h │ │ │ ├── OCVEMDHistogramCostExtractor.m │ │ │ ├── OCVEMDL1HistogramCostExtractor.h │ │ │ ├── OCVEMDL1HistogramCostExtractor.m │ │ │ ├── OCVHausdorffDistanceExtractor.h │ │ │ ├── OCVHausdorffDistanceExtractor.m │ │ │ ├── OCVHistogramCostExtractor.h │ │ │ ├── OCVHistogramCostExtractor.m │ │ │ ├── OCVNormHistogramCostExtractor.h │ │ │ ├── OCVNormHistogramCostExtractor.m │ │ │ ├── OCVShapeContextDistanceExtractor.h │ │ │ ├── OCVShapeContextDistanceExtractor.m │ │ │ ├── OCVShapeDistanceExtractor.h │ │ │ ├── OCVShapeDistanceExtractor.m │ │ │ ├── OCVThinPlateSplineShapeTransformer.h │ │ │ └── OCVThinPlateSplineShapeTransformer.m │ │ ├── Stitching/ │ │ │ ├── OCVCompressedRectilinearWarper.h │ │ │ ├── OCVCompressedRectilinearWarper.m │ │ │ ├── OCVFeaturesFinder.h │ │ │ ├── OCVFeaturesFinder.m │ │ │ ├── OCVFisheyeWarper.h │ │ │ ├── OCVFisheyeWarper.m │ │ │ ├── OCVMercatorWarper.h │ │ │ ├── OCVMercatorWarper.m │ │ │ ├── OCVOrbFeaturesFinder.h │ │ │ ├── OCVOrbFeaturesFinder.m │ │ │ ├── OCVPaniniPortraitWarper.h │ │ │ ├── OCVPaniniPortraitWarper.m │ │ │ ├── OCVPaniniWarper.h │ │ │ ├── OCVPaniniWarper.m │ │ │ ├── OCVPlaneWarper.h │ │ │ ├── OCVPlaneWarper.m │ │ │ ├── OCVSphericalWarper.h │ │ │ ├── OCVSphericalWarper.m │ │ │ ├── OCVStereographicWarper.h │ │ │ ├── OCVStereographicWarper.m │ │ │ ├── OCVSticher.h │ │ │ ├── OCVSticher.m │ │ │ ├── OCVTransverseMercatorWarper.h │ │ │ ├── OCVTransverseMercatorWarper.m │ │ │ ├── OCVWarperCreator.h │ │ │ └── OCVWarperCreator.m │ │ ├── Structure/ │ │ │ ├── OCVRgb.h │ │ │ ├── OCVRgb.m │ │ │ ├── OCVRgba.h │ │ │ └── OCVRgba.m │ │ ├── Superres/ │ │ │ ├── OCVFrameSource.h │ │ │ ├── OCVFrameSource.m │ │ │ ├── OCVSuperResolution.h │ │ │ └── OCVSuperResolution.m │ │ ├── Text/ │ │ │ ├── OCVERFilter.h │ │ │ ├── OCVERFilter.m │ │ │ ├── OCVERFilterNM1.h │ │ │ ├── OCVERFilterNM1.m │ │ │ ├── OCVERFilterNM2.h │ │ │ ├── OCVERFilterNM2.m │ │ │ ├── OCVERStat.h │ │ │ └── OCVERStat.m │ │ ├── Tiff/ │ │ │ ├── OCVTiffWriter.h │ │ │ ├── OCVTiffWriter.m │ │ │ ├── OCVTileTiffWriter.h │ │ │ └── OCVTileTiffWriter.m │ │ ├── Tracking/ │ │ │ ├── OCVMultiTracker.h │ │ │ ├── OCVMultiTracker.m │ │ │ ├── OCVTracker.h │ │ │ └── OCVTracker.m │ │ ├── UI/ │ │ │ ├── OCVHistogramBox.h │ │ │ ├── OCVHistogramBox.m │ │ │ ├── OCVHistogramViewer.h │ │ │ └── OCVHistogramViewer.m │ │ ├── Utilities/ │ │ │ ├── OCVObject.h │ │ │ ├── OCVObject.m │ │ │ ├── OCVPointerObject.h │ │ │ ├── OCVPointerObject.m │ │ │ ├── OCVReferenceObject.h │ │ │ └── OCVReferenceObject.m │ │ ├── Video/ │ │ │ ├── OCVCamera+Private.h │ │ │ ├── OCVCamera.h │ │ │ ├── OCVCamera.mm │ │ │ ├── OCVPhotoCamera.h │ │ │ ├── OCVPhotoCamera.mm │ │ │ ├── OCVVideo.h │ │ │ ├── OCVVideoCamera.h │ │ │ └── OCVVideoCamera.mm │ │ ├── VideoStab/ │ │ │ ├── OCVGaussianMotionFilter.h │ │ │ ├── OCVGaussianMotionFilter.m │ │ │ ├── OCVOnePassStabilizer.h │ │ │ ├── OCVOnePassStabilizer.m │ │ │ ├── OCVTwoPassStabilizer.h │ │ │ ├── OCVTwoPassStabilizer.m │ │ │ ├── OCVVideoCaptureFrameSource.h │ │ │ ├── OCVVideoCaptureFrameSource.m │ │ │ ├── OCVVideoFrameSource.h │ │ │ └── OCVVideoFrameSource.m │ │ ├── VideoSurveillance/ │ │ │ ├── OCVBackgroundSubtractor.h │ │ │ ├── OCVBackgroundSubtractor.m │ │ │ ├── OCVBackgroundSubtractorKNN.h │ │ │ ├── OCVBackgroundSubtractorKNN.m │ │ │ ├── OCVBackgroundSubtractorMOG2.h │ │ │ └── OCVBackgroundSubtractorMOG2.m │ │ ├── XFeatures2D/ │ │ │ ├── OCVBriefDescriptorExtractor.h │ │ │ ├── OCVBriefDescriptorExtractor.m │ │ │ ├── OCVCudaSURF.h │ │ │ ├── OCVCudaSURF.m │ │ │ ├── OCVDAISY.h │ │ │ ├── OCVDAISY.m │ │ │ ├── OCVFreak.h │ │ │ ├── OCVFreak.m │ │ │ ├── OCVLATCH.h │ │ │ ├── OCVLATCH.m │ │ │ ├── OCVLUCID.h │ │ │ ├── OCVLUCID.m │ │ │ ├── OCVSIFT.h │ │ │ ├── OCVSIFT.m │ │ │ ├── OCVSURF.h │ │ │ ├── OCVSURF.m │ │ │ ├── OCVStarDetector.h │ │ │ └── OCVStarDetector.m │ │ ├── XImgproc/ │ │ │ ├── OCVDTFilter.h │ │ │ └── OCVDTFilter.m │ │ └── XPhoto/ │ │ ├── OCVXPhoto.h │ │ └── OCVXPhoto.m │ ├── LegoCV.xcodeproj/ │ │ ├── project.pbxproj │ │ ├── project.xcworkspace/ │ │ │ ├── contents.xcworkspacedata │ │ │ └── xcshareddata/ │ │ │ └── IDEWorkspaceChecks.plist │ │ └── xcshareddata/ │ │ └── xcschemes/ │ │ ├── LegoCV.xcscheme │ │ └── LegoSwiftCV.xcscheme │ ├── LegoCVTests/ │ │ ├── Info.plist │ │ └── LegoCVTests.swift │ ├── LegoSwiftCV/ │ │ ├── Core/ │ │ │ └── Matrix.swift │ │ ├── Info.plist │ │ └── LegoSwiftCV.h │ ├── LegoSwiftCVTests/ │ │ ├── Info.plist │ │ └── LegoSwiftCVTests.swift │ └── Playgrounds/ │ └── MatrixOperations.playground/ │ ├── Contents.swift │ └── contents.xcplayground ├── LegoCV.podspec └── README.md
SYMBOL INDEX (12 symbols across 8 files)
FILE: LegoCV/LegoCV/Wrapper/Core/Base/OCVEdges.h
type OCVEdges (line 12) | typedef struct OCVEdges {
FILE: LegoCV/LegoCV/Wrapper/Core/Base/OCVPoint.h
type OCVPoint (line 14) | typedef struct OCVPoint
type OCVPoint2f (line 24) | typedef struct OCVPoint2f {
FILE: LegoCV/LegoCV/Wrapper/Core/Base/OCVRect.h
type OCVRect (line 14) | typedef struct OCVRect
FILE: LegoCV/LegoCV/Wrapper/Core/Base/OCVScalar.h
type OCVScalar (line 11) | typedef struct OCVScalar {
FILE: LegoCV/LegoCV/Wrapper/Core/Base/OCVSize.h
type OCVSize (line 11) | typedef struct OCVSize
FILE: LegoCV/LegoCV/Wrapper/Core/Persistence/OCVFileStorageFormatDescriptor.h
type OCVFileStorageFormatType8BitUnsigned (line 11) | typedef NS_ENUM(NSInteger, OCVFileStorageFormatType) {
FILE: LegoCV/LegoCV/Wrapper/ImageProcessing/OCVSubdiv2D.h
type OCVSubdiv2DLocateResult (line 52) | typedef struct OCVSubdiv2DLocateResult {
type OCVSubdiv2DNearestResult (line 58) | typedef struct OCVSubdiv2DNearestResult {
type OCVSubdiv2DVertexResult (line 63) | typedef struct OCVSubdiv2DVertexResult {
type OCVSubdiv2DEdgePointResult (line 68) | typedef struct OCVSubdiv2DEdgePointResult {
FILE: LegoCV/LegoCV/Wrapper/Utilities/OCVPointerObject.h
function interface (line 11) | interface OCVPointerObject : OCVObject {
Condensed preview — 351 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (496K chars).
[
{
"path": ".gitignore",
"chars": 1521,
"preview": "# OS X\n.DS_Store\n\n## Build generated\nios/\nopencv2.framework/\nbuild/\nDerivedData\n\n## Various settings\n*.pbxuser\n!default."
},
{
"path": ".gitmodules",
"chars": 80,
"preview": "[submodule \"opencv\"]\n\tpath = opencv\n\turl = https://github.com/opencv/opencv.git\n"
},
{
"path": "LICENSE",
"chars": 2296,
"preview": "By downloading, copying, installing or using the software you agree to this license.\nIf you do not agree to this license"
},
{
"path": "LegoCV/FaceDetection/AppDelegate.swift",
"chars": 2181,
"preview": "//\n// AppDelegate.swift\n// FaceDetection\n//\n// Created by Dal Rupnik on 14/01/2017.\n// Copyright © 2017 Unified Sens"
},
{
"path": "LegoCV/FaceDetection/Assets.xcassets/AppIcon.appiconset/Contents.json",
"chars": 1077,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"iphone\",\n \"size\" : \"29x29\",\n \"scale\" : \"2x\"\n },\n {\n \"idiom\""
},
{
"path": "LegoCV/FaceDetection/Base.lproj/LaunchScreen.storyboard",
"chars": 1740,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard"
},
{
"path": "LegoCV/FaceDetection/Base.lproj/Main.storyboard",
"chars": 3178,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3"
},
{
"path": "LegoCV/FaceDetection/Info.plist",
"chars": 1514,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
},
{
"path": "LegoCV/FaceDetection/Recognition/FaceDetector.swift",
"chars": 4662,
"preview": "//\n// FaceDetector.swift\n// LegoCV\n//\n// Created by Dal Rupnik on 23/01/2017.\n// Copyright © 2017 Unified Sense. All"
},
{
"path": "LegoCV/FaceDetection/Recognition/FaceRecognizer.swift",
"chars": 194,
"preview": "//\n// FaceRecognizer.swift\n// LegoCV\n//\n// Created by Dal Rupnik on 23/01/2017.\n// Copyright © 2017 Unified Sense. A"
},
{
"path": "LegoCV/FaceDetection/View Controllers/FaceRecognitionVC.swift",
"chars": 863,
"preview": "//\n// FaceRecognitionVC.swift\n// LegoCV\n//\n// Created by Dal Rupnik on 23/01/2017.\n// Copyright © 2017 Unified Sense"
},
{
"path": "LegoCV/FaceDetection/View Controllers/LiveCameraVC.swift",
"chars": 738,
"preview": "//\n// LiveCameraVC.swift\n// LegoCV\n//\n// Created by Dal Rupnik on 23/01/2017.\n// Copyright © 2017 Unified Sense. All"
},
{
"path": "LegoCV/LegoCV/Info.plist",
"chars": 755,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
},
{
"path": "LegoCV/LegoCV/LegoCV.h",
"chars": 673,
"preview": "//\n// LegoCV.h\n// LegoCV\n//\n// Created by Dal Rupnik on 14/01/2017.\n// Copyright © 2017 Unified Sense. All rights re"
},
{
"path": "LegoCV/LegoCV/Wrapper/Aruco/OCVCharucoBoard.h",
"chars": 209,
"preview": "//\n// OCVCharucoBoard.h\n// LegoCV\n//\n// Created by Dal Rupnik on 18/01/2017.\n// Copyright © 2017 Unified Sense. All "
},
{
"path": "LegoCV/LegoCV/Wrapper/Aruco/OCVCharucoBoard.m",
"chars": 208,
"preview": "//\n// OCVCharucoBoard.m\n// LegoCV\n//\n// Created by Dal Rupnik on 18/01/2017.\n// Copyright © 2017 Unified Sense. All "
},
{
"path": "LegoCV/LegoCV/Wrapper/BgSegm/OCVBackgroundSubtractorGMG.h",
"chars": 231,
"preview": "//\n// OCVBackgroundSubtractorGMG.h\n// LegoCV\n//\n// Created by Dal Rupnik on 18/01/2017.\n// Copyright © 2017 Unified "
},
{
"path": "LegoCV/LegoCV/Wrapper/BgSegm/OCVBackgroundSubtractorGMG.m",
"chars": 241,
"preview": "//\n// OCVBackgroundSubtractorGMG.m\n// LegoCV\n//\n// Created by Dal Rupnik on 18/01/2017.\n// Copyright © 2017 Unified "
},
{
"path": "LegoCV/LegoCV/Wrapper/BgSegm/OCVBackgroundSubtractorMOG.h",
"chars": 231,
"preview": "//\n// OCVBackgroundSubtractorMOG.h\n// LegoCV\n//\n// Created by Dal Rupnik on 18/01/2017.\n// Copyright © 2017 Unified "
},
{
"path": "LegoCV/LegoCV/Wrapper/BgSegm/OCVBackgroundSubtractorMOG.m",
"chars": 241,
"preview": "//\n// OCVBackgroundSubtractorMOG.m\n// LegoCV\n//\n// Created by Dal Rupnik on 18/01/2017.\n// Copyright © 2017 Unified "
},
{
"path": "LegoCV/LegoCV/Wrapper/Core/Algorithms/OCVLDA.h",
"chars": 1303,
"preview": "//\n// OCVLDA.h\n// LegoCV\n//\n// Created by Dal Rupnik on 07/03/2017.\n// Copyright © 2017 Unified Sense. All rights re"
},
{
"path": "LegoCV/LegoCV/Wrapper/Core/Algorithms/OCVLDA.mm",
"chars": 182,
"preview": "//\n// OCVLDA.mm\n// LegoCV\n//\n// Created by Dal Rupnik on 07/03/2017.\n// Copyright © 2017 Unified Sense. All rights r"
},
{
"path": "LegoCV/LegoCV/Wrapper/Core/Algorithms/OCVPCA.h",
"chars": 2049,
"preview": "//\n// OCVPCA.h\n// LegoCV\n//\n// Created by Dal Rupnik on 06/03/2017.\n// Copyright © 2017 Unified Sense. All rights re"
},
{
"path": "LegoCV/LegoCV/Wrapper/Core/Algorithms/OCVPCA.mm",
"chars": 182,
"preview": "//\n// OCVPCA.mm\n// LegoCV\n//\n// Created by Dal Rupnik on 06/03/2017.\n// Copyright © 2017 Unified Sense. All rights r"
},
{
"path": "LegoCV/LegoCV/Wrapper/Core/Algorithms/OCVRandomGenerator.h",
"chars": 2608,
"preview": "//\n// OCVRandomGenerator.h\n// LegoCV\n//\n// Created by Dal Rupnik on 04/03/2017.\n// Copyright © 2017 Unified Sense. A"
},
{
"path": "LegoCV/LegoCV/Wrapper/Core/Algorithms/OCVRandomGenerator.mm",
"chars": 218,
"preview": "//\n// OCVRandomGenerator.mm\n// LegoCV\n//\n// Created by Dal Rupnik on 04/03/2017.\n// Copyright © 2017 Unified Sense. "
},
{
"path": "LegoCV/LegoCV/Wrapper/Core/Algorithms/OCVSVD.h",
"chars": 1902,
"preview": "//\n// OCVSVD.h\n// LegoCV\n//\n// Created by Dal Rupnik on 06/03/2017.\n// Copyright © 2017 Unified Sense. All rights re"
},
{
"path": "LegoCV/LegoCV/Wrapper/Core/Algorithms/OCVSVD.mm",
"chars": 182,
"preview": "//\n// OCVSVD.mm\n// LegoCV\n//\n// Created by Dal Rupnik on 06/03/2017.\n// Copyright © 2017 Unified Sense. All rights r"
},
{
"path": "LegoCV/LegoCV/Wrapper/Core/Base/OCVAlgorithm.h",
"chars": 203,
"preview": "//\n// OCVAlgorithm.h\n// LegoCV\n//\n// Created by Dal Rupnik on 04/03/2017.\n// Copyright © 2017 Unified Sense. All rig"
},
{
"path": "LegoCV/LegoCV/Wrapper/Core/Base/OCVAlgorithm.m",
"chars": 199,
"preview": "//\n// OCVAlgorithm.m\n// LegoCV\n//\n// Created by Dal Rupnik on 04/03/2017.\n// Copyright © 2017 Unified Sense. All rig"
},
{
"path": "LegoCV/LegoCV/Wrapper/Core/Base/OCVArrayables.h",
"chars": 309,
"preview": "//\n// OCVArrayables.h\n// LegoCV\n//\n// Created by Dal Rupnik on 18/03/2017.\n// Copyright © 2017 Unified Sense. All ri"
},
{
"path": "LegoCV/LegoCV/Wrapper/Core/Base/OCVComplex.h",
"chars": 210,
"preview": "//\n// OCVComplex.h\n// LegoCV\n//\n// Created by Dal Rupnik on 16/01/2017.\n// Copyright © 2017 Unified Sense. All right"
},
{
"path": "LegoCV/LegoCV/Wrapper/Core/Base/OCVComplex.m",
"chars": 193,
"preview": "//\n// OCVComplex.m\n// LegoCV\n//\n// Created by Dal Rupnik on 16/01/2017.\n// Copyright © 2017 Unified Sense. All right"
},
{
"path": "LegoCV/LegoCV/Wrapper/Core/Base/OCVEdges.h",
"chars": 275,
"preview": "//\n// OCVEdgs.h\n// LegoCV\n//\n// Created by Dal Rupnik on 04/03/2017.\n// Copyright © 2017 Unified Sense. All rights r"
},
{
"path": "LegoCV/LegoCV/Wrapper/Core/Base/OCVFormatter.h",
"chars": 203,
"preview": "//\n// OCVFormatter.h\n// LegoCV\n//\n// Created by Dal Rupnik on 04/03/2017.\n// Copyright © 2017 Unified Sense. All rig"
},
{
"path": "LegoCV/LegoCV/Wrapper/Core/Base/OCVFormatter.m",
"chars": 199,
"preview": "//\n// OCVFormatter.m\n// LegoCV\n//\n// Created by Dal Rupnik on 04/03/2017.\n// Copyright © 2017 Unified Sense. All rig"
},
{
"path": "LegoCV/LegoCV/Wrapper/Core/Base/OCVGeometry.h",
"chars": 273,
"preview": "//\n// OCVGeometry.h\n// LegoCV\n//\n// Created by Dal Rupnik on 30/01/2017.\n// Copyright © 2017 Unified Sense. All righ"
},
{
"path": "LegoCV/LegoCV/Wrapper/Core/Base/OCVInputArray.h",
"chars": 1098,
"preview": "//\n// OCVInputArray.h\n// LegoCV\n//\n// Created by Dal Rupnik on 24/01/2017.\n// Copyright © 2017 Unified Sense. All ri"
},
{
"path": "LegoCV/LegoCV/Wrapper/Core/Base/OCVInputArray.mm",
"chars": 1914,
"preview": "//\n// OCVInputArray.mm\n// LegoCV\n//\n// Created by Dal Rupnik on 24/01/2017.\n// Copyright © 2017 Unified Sense. All r"
},
{
"path": "LegoCV/LegoCV/Wrapper/Core/Base/OCVInputArrayable.h",
"chars": 270,
"preview": "//\n// OCVInputArrayable.h\n// LegoCV\n//\n// Created by Dal Rupnik on 24/01/2017.\n// Copyright © 2017 Unified Sense. Al"
},
{
"path": "LegoCV/LegoCV/Wrapper/Core/Base/OCVInputOutputArray.h",
"chars": 227,
"preview": "//\n// OCVInputOutputArray.h\n// LegoCV\n//\n// Created by Dal Rupnik on 24/01/2017.\n// Copyright © 2017 Unified Sense. "
},
{
"path": "LegoCV/LegoCV/Wrapper/Core/Base/OCVInputOutputArray.mm",
"chars": 668,
"preview": "//\n// OCVInputOutputArray.m\n// LegoCV\n//\n// Created by Dal Rupnik on 24/01/2017.\n// Copyright © 2017 Unified Sense. "
},
{
"path": "LegoCV/LegoCV/Wrapper/Core/Base/OCVInputOutputArrayable.h",
"chars": 300,
"preview": "//\n// OCVInputOutputArrayable.h\n// LegoCV\n//\n// Created by Dal Rupnik on 24/01/2017.\n// Copyright © 2017 Unified Sen"
},
{
"path": "LegoCV/LegoCV/Wrapper/Core/Base/OCVOutputArray.h",
"chars": 364,
"preview": "//\n// OCVOutputArray.h\n// LegoCV\n//\n// Created by Dal Rupnik on 24/01/2017.\n// Copyright © 2017 Unified Sense. All r"
},
{
"path": "LegoCV/LegoCV/Wrapper/Core/Base/OCVOutputArray.mm",
"chars": 594,
"preview": "//\n// OCVOutputArray.m\n// LegoCV\n//\n// Created by Dal Rupnik on 24/01/2017.\n// Copyright © 2017 Unified Sense. All r"
},
{
"path": "LegoCV/LegoCV/Wrapper/Core/Base/OCVOutputArrayable.h",
"chars": 275,
"preview": "//\n// OCVOutputArrayable.h\n// LegoCV\n//\n// Created by Dal Rupnik on 24/01/2017.\n// Copyright © 2017 Unified Sense. A"
},
{
"path": "LegoCV/LegoCV/Wrapper/Core/Base/OCVPoint.h",
"chars": 437,
"preview": "//\n// OCVPoint.h\n// LegoCV\n//\n// Created by Dal Rupnik on 24/01/2017.\n// Copyright © 2017 Unified Sense. All rights "
},
{
"path": "LegoCV/LegoCV/Wrapper/Core/Base/OCVRect.h",
"chars": 486,
"preview": "//\n// OCVRect.h\n// LegoCV\n//\n// Created by Dal Rupnik on 22/01/2017.\n// Copyright © 2017 Unified Sense. All rights r"
},
{
"path": "LegoCV/LegoCV/Wrapper/Core/Base/OCVRect.m",
"chars": 427,
"preview": "//\n// OCVRect.m\n// LegoCV\n//\n// Created by Dal Rupnik on 24/01/2017.\n// Copyright © 2017 Unified Sense. All rights r"
},
{
"path": "LegoCV/LegoCV/Wrapper/Core/Base/OCVScalar.h",
"chars": 324,
"preview": "//\n// OCVScalar.h\n// LegoCV\n//\n// Created by Dal Rupnik on 30/01/2017.\n// Copyright © 2017 Unified Sense. All rights"
},
{
"path": "LegoCV/LegoCV/Wrapper/Core/Base/OCVScalar.m",
"chars": 363,
"preview": "//\n// OCVScalar.m\n// LegoCV\n//\n// Created by Dal Rupnik on 30/01/2017.\n// Copyright © 2017 Unified Sense. All rights"
},
{
"path": "LegoCV/LegoCV/Wrapper/Core/Base/OCVSize.h",
"chars": 247,
"preview": "//\n// OCVSize.h\n// LegoCV\n//\n// Created by Dal Rupnik on 16/01/2017.\n// Copyright © 2017 Unified Sense. All rights r"
},
{
"path": "LegoCV/LegoCV/Wrapper/Core/Base/OCVTypes.h",
"chars": 6097,
"preview": "//\n// OCVTypes.h\n// LegoCV\n//\n// Created by Dal Rupnik on 16/01/2017.\n// Copyright © 2017 Unified Sense. All rights "
},
{
"path": "LegoCV/LegoCV/Wrapper/Core/Base/OCVVector.h",
"chars": 258,
"preview": "//\n// OCVVector.h\n// LegoCV\n//\n// Created by Dal Rupnik on 04/03/2017.\n// Copyright © 2017 Unified Sense. All rights"
},
{
"path": "LegoCV/LegoCV/Wrapper/Core/Base/OCVVector.m",
"chars": 190,
"preview": "//\n// OCVVector.m\n// LegoCV\n//\n// Created by Dal Rupnik on 04/03/2017.\n// Copyright © 2017 Unified Sense. All rights"
},
{
"path": "LegoCV/LegoCV/Wrapper/Core/Mat/OCVMat.h",
"chars": 3729,
"preview": "//\n// OCVMat.h\n// LegoCV\n//\n// Created by Dal Rupnik on 16/01/2017.\n// Copyright © 2017 Unified Sense. All rights re"
},
{
"path": "LegoCV/LegoCV/Wrapper/Core/Mat/OCVMat.mm",
"chars": 11464,
"preview": "//\n// OCVMat.mm\n// LegoCV\n//\n// Created by Dal Rupnik on 16/01/2017.\n// Copyright © 2017 Unified Sense. All rights r"
},
{
"path": "LegoCV/LegoCV/Wrapper/Core/Mat/OCVMatDataAllocator.h",
"chars": 217,
"preview": "//\n// OCVMatDataAllocator.h\n// LegoCV\n//\n// Created by Dal Rupnik on 24/01/2017.\n// Copyright © 2017 Unified Sense. "
},
{
"path": "LegoCV/LegoCV/Wrapper/Core/Mat/OCVMatDataAllocator.mm",
"chars": 608,
"preview": "//\n// OCVMatDataAllocator.mm\n// LegoCV\n//\n// Created by Dal Rupnik on 24/01/2017.\n// Copyright © 2017 Unified Sense."
},
{
"path": "LegoCV/LegoCV/Wrapper/Core/Mat/OCVMatExpr.h",
"chars": 210,
"preview": "//\n// OCVMatExpr.h\n// LegoCV\n//\n// Created by Dal Rupnik on 16/01/2017.\n// Copyright © 2017 Unified Sense. All right"
},
{
"path": "LegoCV/LegoCV/Wrapper/Core/Mat/OCVMatExpr.mm",
"chars": 193,
"preview": "//\n// OCVMatExpr.m\n// LegoCV\n//\n// Created by Dal Rupnik on 16/01/2017.\n// Copyright © 2017 Unified Sense. All right"
},
{
"path": "LegoCV/LegoCV/Wrapper/Core/Mat/OCVUMat.h",
"chars": 193,
"preview": "//\n// OCVUMat.h\n// LegoCV\n//\n// Created by Dal Rupnik on 04/03/2017.\n// Copyright © 2017 Unified Sense. All rights r"
},
{
"path": "LegoCV/LegoCV/Wrapper/Core/Mat/OCVUMat.m",
"chars": 184,
"preview": "//\n// OCVUMat.m\n// LegoCV\n//\n// Created by Dal Rupnik on 04/03/2017.\n// Copyright © 2017 Unified Sense. All rights r"
},
{
"path": "LegoCV/LegoCV/Wrapper/Core/OCVCore.h",
"chars": 401,
"preview": "//\n// OCVCore.h\n// LegoCV\n//\n// Created by Dal Rupnik on 23/01/2017.\n// Copyright © 2017 Unified Sense. All rights r"
},
{
"path": "LegoCV/LegoCV/Wrapper/Core/Operations/OCVMinimumMaximum.h",
"chars": 725,
"preview": "//\n// OCVMinimumMaximum.h\n// LegoCV\n//\n// Created by Dal Rupnik on 04/03/2017.\n// Copyright © 2017 Unified Sense. Al"
},
{
"path": "LegoCV/LegoCV/Wrapper/Core/Operations/OCVMinimumMaximum.m",
"chars": 173,
"preview": "//\n// OCVMinimumMaximum.m\n// LegoCV\n//\n// Created by Dal Rupnik on 04/03/2017.\n// Copyright © 2017 Unified Sense. Al"
},
{
"path": "LegoCV/LegoCV/Wrapper/Core/Operations/OCVOperation+Bitwise.h",
"chars": 1890,
"preview": "//\n// OCVOperation+Bitwise.h\n// LegoCV\n//\n// Created by Dal Rupnik on 04/03/2017.\n// Copyright © 2017 Unified Sense."
},
{
"path": "LegoCV/LegoCV/Wrapper/Core/Operations/OCVOperation+Bitwise.mm",
"chars": 180,
"preview": "//\n// OCVOperation+Bitwise.mm\n// LegoCV\n//\n// Created by Dal Rupnik on 04/03/2017.\n// Copyright © 2017 Unified Sense"
},
{
"path": "LegoCV/LegoCV/Wrapper/Core/Operations/OCVOperation+Transform.h",
"chars": 2942,
"preview": "//\n// OCVOperation+Transform.h\n// LegoCV\n//\n// Created by Dal Rupnik on 04/03/2017.\n// Copyright © 2017 Unified Sens"
},
{
"path": "LegoCV/LegoCV/Wrapper/Core/Operations/OCVOperation+Transform.mm",
"chars": 184,
"preview": "//\n// OCVOperation+Transform.mm\n// LegoCV\n//\n// Created by Dal Rupnik on 04/03/2017.\n// Copyright © 2017 Unified Sen"
},
{
"path": "LegoCV/LegoCV/Wrapper/Core/Operations/OCVOperation.h",
"chars": 24218,
"preview": "//\n// OCVOperation.h\n// LegoCV\n//\n// Created by Dal Rupnik on 23/01/2017.\n// Copyright © 2017 Unified Sense. All rig"
},
{
"path": "LegoCV/LegoCV/Wrapper/Core/Operations/OCVOperation.mm",
"chars": 441,
"preview": "//\n// OCVOperation.m\n// LegoCV\n//\n// Created by Dal Rupnik on 23/01/2017.\n// Copyright © 2017 Unified Sense. All rig"
},
{
"path": "LegoCV/LegoCV/Wrapper/Core/Operations/OCVTermCriteria.h",
"chars": 209,
"preview": "//\n// OCVTermCriteria.h\n// LegoCV\n//\n// Created by Dal Rupnik on 04/03/2017.\n// Copyright © 2017 Unified Sense. All "
},
{
"path": "LegoCV/LegoCV/Wrapper/Core/Operations/OCVTermCriteria.m",
"chars": 208,
"preview": "//\n// OCVTermCriteria.m\n// LegoCV\n//\n// Created by Dal Rupnik on 04/03/2017.\n// Copyright © 2017 Unified Sense. All "
},
{
"path": "LegoCV/LegoCV/Wrapper/Core/Persistence/OCVFileNode.h",
"chars": 2189,
"preview": "//\n// OCVFileNode.h\n// LegoCV\n//\n// Created by Dal Rupnik on 07/03/2017.\n// Copyright © 2017 Unified Sense. All righ"
},
{
"path": "LegoCV/LegoCV/Wrapper/Core/Persistence/OCVFileNode.mm",
"chars": 197,
"preview": "//\n// OCVFileNode.mm\n// LegoCV\n//\n// Created by Dal Rupnik on 07/03/2017.\n// Copyright © 2017 Unified Sense. All rig"
},
{
"path": "LegoCV/LegoCV/Wrapper/Core/Persistence/OCVFileStorage.h",
"chars": 3540,
"preview": "//\n// OCVFileStorage.h\n// LegoCV\n//\n// Created by Dal Rupnik on 07/03/2017.\n// Copyright © 2017 Unified Sense. All r"
},
{
"path": "LegoCV/LegoCV/Wrapper/Core/Persistence/OCVFileStorage.mm",
"chars": 206,
"preview": "//\n// OCVFileStorage.mm\n// LegoCV\n//\n// Created by Dal Rupnik on 07/03/2017.\n// Copyright © 2017 Unified Sense. All "
},
{
"path": "LegoCV/LegoCV/Wrapper/Core/Persistence/OCVFileStorageFormatDescriptor.h",
"chars": 1015,
"preview": "//\n// OCVFileStorageFormatDescriptor.h\n// LegoCV\n//\n// Created by Dal Rupnik on 07/03/2017.\n// Copyright © 2017 Unif"
},
{
"path": "LegoCV/LegoCV/Wrapper/Core/Persistence/OCVFileStorageFormatDescriptor.m",
"chars": 1804,
"preview": "//\n// OCVFileStorageFormatDescriptor.m\n// LegoCV\n//\n// Created by Dal Rupnik on 07/03/2017.\n// Copyright © 2017 Unif"
},
{
"path": "LegoCV/LegoCV/Wrapper/Core/Persistence/OCVPersistence.h",
"chars": 301,
"preview": "//\n// OCVPersistence.h\n// LegoCV\n//\n// Created by Dal Rupnik on 07/03/2017.\n// Copyright © 2017 Unified Sense. All r"
},
{
"path": "LegoCV/LegoCV/Wrapper/Core/Persistence/OCVSerializable.h",
"chars": 304,
"preview": "//\n// OCVSerializable.h\n// LegoCV\n//\n// Created by Dal Rupnik on 07/03/2017.\n// Copyright © 2017 Unified Sense. All "
},
{
"path": "LegoCV/LegoCV/Wrapper/Core/Private/OCVGeometry+Private.h",
"chars": 327,
"preview": "//\n// OCVGeometry+Private.h\n// LegoCV\n//\n// Created by Dal Rupnik on 30/01/2017.\n// Copyright © 2017 Unified Sense. "
},
{
"path": "LegoCV/LegoCV/Wrapper/Core/Private/OCVInputArray+Private.h",
"chars": 367,
"preview": "//\n// OCVInputArray+Private.h\n// LegoCV\n//\n// Created by Dal Rupnik on 24/01/2017.\n// Copyright © 2017 Unified Sense"
},
{
"path": "LegoCV/LegoCV/Wrapper/Core/Private/OCVInputOutputArray+Private.h",
"chars": 333,
"preview": "//\n// OCVInputOutputArray+Private.h\n// LegoCV\n//\n// Created by Dal Rupnik on 24/01/2017.\n// Copyright © 2017 Unified"
},
{
"path": "LegoCV/LegoCV/Wrapper/Core/Private/OCVMatDataAllocator+Private.h",
"chars": 446,
"preview": "//\n// OCVMatDataAllocator+Private.h\n// LegoCV\n//\n// Created by Dal Rupnik on 24/01/2017.\n// Copyright © 2017 Unified"
},
{
"path": "LegoCV/LegoCV/Wrapper/Core/Private/OCVOutputArray+Private.h",
"chars": 308,
"preview": "//\n// OCVOutputArray+Private.h\n// LegoCV\n//\n// Created by Dal Rupnik on 24/01/2017.\n// Copyright © 2017 Unified Sens"
},
{
"path": "LegoCV/LegoCV/Wrapper/Core/Private/OCVPoint+Private.h",
"chars": 272,
"preview": "//\n// OCVPoint+Private.h\n// LegoCV\n//\n// Created by Dal Rupnik on 30/01/2017.\n// Copyright © 2017 Unified Sense. All"
},
{
"path": "LegoCV/LegoCV/Wrapper/Core/Private/OCVPoint+Private.mm",
"chars": 484,
"preview": "//\n// OCVPoint+Private.m\n// LegoCV\n//\n// Created by Dal Rupnik on 30/01/2017.\n// Copyright © 2017 Unified Sense. All"
},
{
"path": "LegoCV/LegoCV/Wrapper/Core/Private/OCVRect+Private.h",
"chars": 262,
"preview": "//\n// OCVRect+Private.h\n// LegoCV\n//\n// Created by Dal Rupnik on 24/01/2017.\n// Copyright © 2017 Unified Sense. All "
},
{
"path": "LegoCV/LegoCV/Wrapper/Core/Private/OCVRect+Private.mm",
"chars": 696,
"preview": "//\n// OCVRect+Private.m\n// LegoCV\n//\n// Created by Dal Rupnik on 30/01/2017.\n// Copyright © 2017 Unified Sense. All "
},
{
"path": "LegoCV/LegoCV/Wrapper/Core/Private/OCVSize+Private.h",
"chars": 261,
"preview": "//\n// OCVSize+Private.h\n// LegoCV\n//\n// Created by Dal Rupnik on 24/01/2017.\n// Copyright © 2017 Unified Sense. All "
},
{
"path": "LegoCV/LegoCV/Wrapper/Core/Private/OCVSize+Private.mm",
"chars": 527,
"preview": "//\n// OCVSize+Private.m\n// LegoCV\n//\n// Created by Dal Rupnik on 30/01/2017.\n// Copyright © 2017 Unified Sense. All "
},
{
"path": "LegoCV/LegoCV/Wrapper/Cuda/OCVGPUMat.h",
"chars": 197,
"preview": "//\n// OCVGPUMat.h\n// LegoCV\n//\n// Created by Dal Rupnik on 18/01/2017.\n// Copyright © 2017 Unified Sense. All rights"
},
{
"path": "LegoCV/LegoCV/Wrapper/Cuda/OCVGPUMat.m",
"chars": 190,
"preview": "//\n// OCVGPUMat.m\n// LegoCV\n//\n// Created by Dal Rupnik on 18/01/2017.\n// Copyright © 2017 Unified Sense. All rights"
},
{
"path": "LegoCV/LegoCV/Wrapper/CvEnum/OCVStorageOperationType.h",
"chars": 225,
"preview": "//\n// OCVStorageOperationType.h\n// LegoCV\n//\n// Created by Dal Rupnik on 18/01/2017.\n// Copyright © 2017 Unified Sen"
},
{
"path": "LegoCV/LegoCV/Wrapper/CvEnum/OCVStorageOperationType.m",
"chars": 232,
"preview": "//\n// OCVStorageOperationType.m\n// LegoCV\n//\n// Created by Dal Rupnik on 18/01/2017.\n// Copyright © 2017 Unified Sen"
},
{
"path": "LegoCV/LegoCV/Wrapper/Cvb/OCVBlob.h",
"chars": 193,
"preview": "//\n// OCVBlob.h\n// LegoCV\n//\n// Created by Dal Rupnik on 18/01/2017.\n// Copyright © 2017 Unified Sense. All rights r"
},
{
"path": "LegoCV/LegoCV/Wrapper/Cvb/OCVBlob.m",
"chars": 184,
"preview": "//\n// OCVBlob.m\n// LegoCV\n//\n// Created by Dal Rupnik on 18/01/2017.\n// Copyright © 2017 Unified Sense. All rights r"
},
{
"path": "LegoCV/LegoCV/Wrapper/Dnn/OCVImporter.h",
"chars": 201,
"preview": "//\n// OCVImporter.h\n// LegoCV\n//\n// Created by Dal Rupnik on 18/01/2017.\n// Copyright © 2017 Unified Sense. All righ"
},
{
"path": "LegoCV/LegoCV/Wrapper/Dnn/OCVImporter.m",
"chars": 196,
"preview": "//\n// OCVImporter.m\n// LegoCV\n//\n// Created by Dal Rupnik on 18/01/2017.\n// Copyright © 2017 Unified Sense. All righ"
},
{
"path": "LegoCV/LegoCV/Wrapper/Dnn/OCVNet.h",
"chars": 191,
"preview": "//\n// OCVNet.h\n// LegoCV\n//\n// Created by Dal Rupnik on 18/01/2017.\n// Copyright © 2017 Unified Sense. All rights re"
},
{
"path": "LegoCV/LegoCV/Wrapper/Dnn/OCVNet.m",
"chars": 181,
"preview": "//\n// OCVNet.m\n// LegoCV\n//\n// Created by Dal Rupnik on 18/01/2017.\n// Copyright © 2017 Unified Sense. All rights re"
},
{
"path": "LegoCV/LegoCV/Wrapper/Face/OCVEigenFaceRecognizer.h",
"chars": 223,
"preview": "//\n// OCVEigenFaceRecognizer.h\n// LegoCV\n//\n// Created by Dal Rupnik on 18/01/2017.\n// Copyright © 2017 Unified Sens"
},
{
"path": "LegoCV/LegoCV/Wrapper/Face/OCVEigenFaceRecognizer.m",
"chars": 229,
"preview": "//\n// OCVEigenFaceRecognizer.m\n// LegoCV\n//\n// Created by Dal Rupnik on 18/01/2017.\n// Copyright © 2017 Unified Sens"
},
{
"path": "LegoCV/LegoCV/Wrapper/Face/OCVFaceRecognizer.h",
"chars": 213,
"preview": "//\n// OCVFaceRecognizer.h\n// LegoCV\n//\n// Created by Dal Rupnik on 18/01/2017.\n// Copyright © 2017 Unified Sense. Al"
},
{
"path": "LegoCV/LegoCV/Wrapper/Face/OCVFaceRecognizer.m",
"chars": 214,
"preview": "//\n// OCVFaceRecognizer.m\n// LegoCV\n//\n// Created by Dal Rupnik on 18/01/2017.\n// Copyright © 2017 Unified Sense. Al"
},
{
"path": "LegoCV/LegoCV/Wrapper/Face/OCVFisherFaceRecognizer.h",
"chars": 225,
"preview": "//\n// OCVFisherFaceRecognizer.h\n// LegoCV\n//\n// Created by Dal Rupnik on 18/01/2017.\n// Copyright © 2017 Unified Sen"
},
{
"path": "LegoCV/LegoCV/Wrapper/Face/OCVFisherFaceRecognizer.m",
"chars": 232,
"preview": "//\n// OCVFisherFaceRecognizer.m\n// LegoCV\n//\n// Created by Dal Rupnik on 18/01/2017.\n// Copyright © 2017 Unified Sen"
},
{
"path": "LegoCV/LegoCV/Wrapper/Face/OCVLBPHFaceRecognizer.h",
"chars": 221,
"preview": "//\n// OCVLBPHFaceRecognizer.h\n// LegoCV\n//\n// Created by Dal Rupnik on 18/01/2017.\n// Copyright © 2017 Unified Sense"
},
{
"path": "LegoCV/LegoCV/Wrapper/Face/OCVLBPHFaceRecognizer.m",
"chars": 226,
"preview": "//\n// OCVLBPHFaceRecognizer.m\n// LegoCV\n//\n// Created by Dal Rupnik on 18/01/2017.\n// Copyright © 2017 Unified Sense"
},
{
"path": "LegoCV/LegoCV/Wrapper/Features2D/OCVFeature2D.h",
"chars": 203,
"preview": "//\n// OCVFeature2D.h\n// LegoCV\n//\n// Created by Dal Rupnik on 18/01/2017.\n// Copyright © 2017 Unified Sense. All rig"
},
{
"path": "LegoCV/LegoCV/Wrapper/Features2D/OCVFeature2D.m",
"chars": 199,
"preview": "//\n// OCVFeature2D.m\n// LegoCV\n//\n// Created by Dal Rupnik on 18/01/2017.\n// Copyright © 2017 Unified Sense. All rig"
},
{
"path": "LegoCV/LegoCV/Wrapper/Flann/OCVIndex.h",
"chars": 195,
"preview": "//\n// OCVIndex.h\n// LegoCV\n//\n// Created by Dal Rupnik on 18/01/2017.\n// Copyright © 2017 Unified Sense. All rights "
},
{
"path": "LegoCV/LegoCV/Wrapper/Flann/OCVIndex.m",
"chars": 187,
"preview": "//\n// OCVIndex.m\n// LegoCV\n//\n// Created by Dal Rupnik on 18/01/2017.\n// Copyright © 2017 Unified Sense. All rights "
},
{
"path": "LegoCV/LegoCV/Wrapper/Fuzzy/OCVFuzzyInvoke.h",
"chars": 207,
"preview": "//\n// OCVFuzzyInvoke.h\n// LegoCV\n//\n// Created by Dal Rupnik on 18/01/2017.\n// Copyright © 2017 Unified Sense. All r"
},
{
"path": "LegoCV/LegoCV/Wrapper/Fuzzy/OCVFuzzyInvoke.m",
"chars": 205,
"preview": "//\n// OCVFuzzyInvoke.m\n// LegoCV\n//\n// Created by Dal Rupnik on 18/01/2017.\n// Copyright © 2017 Unified Sense. All r"
},
{
"path": "LegoCV/LegoCV/Wrapper/Geodetic/OCVGeodeticCoordinate.h",
"chars": 221,
"preview": "//\n// OCVGeodeticCoordinate.h\n// LegoCV\n//\n// Created by Dal Rupnik on 18/01/2017.\n// Copyright © 2017 Unified Sense"
},
{
"path": "LegoCV/LegoCV/Wrapper/Geodetic/OCVGeodeticCoordinate.m",
"chars": 226,
"preview": "//\n// OCVGeodeticCoordinate.m\n// LegoCV\n//\n// Created by Dal Rupnik on 18/01/2017.\n// Copyright © 2017 Unified Sense"
},
{
"path": "LegoCV/LegoCV/Wrapper/ImageProcessing/OCVColorConversionType.h",
"chars": 11405,
"preview": "//\n// OCVColorConversionType.h\n// LegoCV\n//\n// Created by Dal Rupnik on 23/01/2017.\n// Copyright © 2017 Unified Sens"
},
{
"path": "LegoCV/LegoCV/Wrapper/ImageProcessing/OCVContrastLimitedAdaptiveHistogramEqualization.h",
"chars": 599,
"preview": "//\n// OCVContrastLimitedAdaptiveHistogramEqualization.h\n// LegoCV\n//\n// Created by Dal Rupnik on 18/03/2017.\n// Copy"
},
{
"path": "LegoCV/LegoCV/Wrapper/ImageProcessing/OCVContrastLimitedAdaptiveHistogramEqualization.m",
"chars": 304,
"preview": "//\n// OCVContrastLimitedAdaptiveHistogramEqualization.m\n// LegoCV\n//\n// Created by Dal Rupnik on 18/03/2017.\n// Copy"
},
{
"path": "LegoCV/LegoCV/Wrapper/ImageProcessing/OCVGeneralizedHough.h",
"chars": 1370,
"preview": "//\n// OCVGeneralizedHough.h\n// LegoCV\n//\n// Created by Dal Rupnik on 18/03/2017.\n// Copyright © 2017 Unified Sense. "
},
{
"path": "LegoCV/LegoCV/Wrapper/ImageProcessing/OCVGeneralizedHough.m",
"chars": 220,
"preview": "//\n// OCVGeneralizedHough.m\n// LegoCV\n//\n// Created by Dal Rupnik on 18/03/2017.\n// Copyright © 2017 Unified Sense. "
},
{
"path": "LegoCV/LegoCV/Wrapper/ImageProcessing/OCVGeneralizedHoughBallard.h",
"chars": 411,
"preview": "//\n// OCVGeneralizedHoughBallard.h\n// LegoCV\n//\n// Created by Dal Rupnik on 18/03/2017.\n// Copyright © 2017 Unified "
},
{
"path": "LegoCV/LegoCV/Wrapper/ImageProcessing/OCVGeneralizedHoughBallard.m",
"chars": 241,
"preview": "//\n// OCVGeneralizedHoughBallard.m\n// LegoCV\n//\n// Created by Dal Rupnik on 18/03/2017.\n// Copyright © 2017 Unified "
},
{
"path": "LegoCV/LegoCV/Wrapper/ImageProcessing/OCVGeneralizedHoughGuil.h",
"chars": 847,
"preview": "//\n// OCVGeneralizedHoughGuil.h\n// LegoCV\n//\n// Created by Dal Rupnik on 18/03/2017.\n// Copyright © 2017 Unified Sen"
},
{
"path": "LegoCV/LegoCV/Wrapper/ImageProcessing/OCVGeneralizedHoughGuil.m",
"chars": 232,
"preview": "//\n// OCVGeneralizedHoughGuil.m\n// LegoCV\n//\n// Created by Dal Rupnik on 18/03/2017.\n// Copyright © 2017 Unified Sen"
},
{
"path": "LegoCV/LegoCV/Wrapper/ImageProcessing/OCVImage.h",
"chars": 206,
"preview": "//\n// OCVImage.h\n// LegoCV\n//\n// Created by Dal Rupnik on 16/01/2017.\n// Copyright © 2017 Unified Sense. All rights "
},
{
"path": "LegoCV/LegoCV/Wrapper/ImageProcessing/OCVImage.m",
"chars": 187,
"preview": "//\n// OCVImage.m\n// LegoCV\n//\n// Created by Dal Rupnik on 16/01/2017.\n// Copyright © 2017 Unified Sense. All rights "
},
{
"path": "LegoCV/LegoCV/Wrapper/ImageProcessing/OCVImageOperation.h",
"chars": 12128,
"preview": "//\n// OCVImageOperation.h\n// LegoCV\n//\n// Created by Dal Rupnik on 04/03/2017.\n// Copyright © 2017 Unified Sense. Al"
},
{
"path": "LegoCV/LegoCV/Wrapper/ImageProcessing/OCVImageOperation.mm",
"chars": 2560,
"preview": "//\n// OCVImageOperation.m\n// LegoCV\n//\n// Created by Dal Rupnik on 04/03/2017.\n// Copyright © 2017 Unified Sense. Al"
},
{
"path": "LegoCV/LegoCV/Wrapper/ImageProcessing/OCVImageProcessing.h",
"chars": 268,
"preview": "//\n// OCVImageProcessing.h\n// LegoCV\n//\n// Created by Dal Rupnik on 07/03/2017.\n// Copyright © 2017 Unified Sense. A"
},
{
"path": "LegoCV/LegoCV/Wrapper/ImageProcessing/OCVImageTypes.h",
"chars": 7848,
"preview": "//\n// OCVImageTypes.h\n// LegoCV\n//\n// Created by Dal Rupnik on 18/03/2017.\n// Copyright © 2017 Unified Sense. All ri"
},
{
"path": "LegoCV/LegoCV/Wrapper/ImageProcessing/OCVInterpolationType.h",
"chars": 1122,
"preview": "//\n// OCVInterpolationType.h\n// LegoCV\n//\n// Created by Dal Rupnik on 24/01/2017.\n// Copyright © 2017 Unified Sense."
},
{
"path": "LegoCV/LegoCV/Wrapper/ImageProcessing/OCVLineSegmentDetector.h",
"chars": 1958,
"preview": "//\n// OCVLineSegmentDetector.h\n// LegoCV\n//\n// Created by Dal Rupnik on 18/03/2017.\n// Copyright © 2017 Unified Sens"
},
{
"path": "LegoCV/LegoCV/Wrapper/ImageProcessing/OCVLineSegmentDetector.m",
"chars": 229,
"preview": "//\n// OCVLineSegmentDetector.m\n// LegoCV\n//\n// Created by Dal Rupnik on 18/03/2017.\n// Copyright © 2017 Unified Sens"
},
{
"path": "LegoCV/LegoCV/Wrapper/ImageProcessing/OCVSubdiv2D.h",
"chars": 3938,
"preview": "//\n// OCVSubdiv2D.h\n// LegoCV\n//\n// Created by Dal Rupnik on 18/03/2017.\n// Copyright © 2017 Unified Sense. All righ"
},
{
"path": "LegoCV/LegoCV/Wrapper/ImageProcessing/OCVSubdiv2D.m",
"chars": 196,
"preview": "//\n// OCVSubdiv2D.m\n// LegoCV\n//\n// Created by Dal Rupnik on 18/03/2017.\n// Copyright © 2017 Unified Sense. All righ"
},
{
"path": "LegoCV/LegoCV/Wrapper/LineDescriptor/OCVLSDDetector.h",
"chars": 207,
"preview": "//\n// OCVLSDDetector.h\n// LegoCV\n//\n// Created by Dal Rupnik on 18/01/2017.\n// Copyright © 2017 Unified Sense. All r"
},
{
"path": "LegoCV/LegoCV/Wrapper/LineDescriptor/OCVLSDDetector.m",
"chars": 205,
"preview": "//\n// OCVLSDDetector.m\n// LegoCV\n//\n// Created by Dal Rupnik on 18/01/2017.\n// Copyright © 2017 Unified Sense. All r"
},
{
"path": "LegoCV/LegoCV/Wrapper/ML/Enum/OCVBoostType.h",
"chars": 203,
"preview": "//\n// OCVBoostType.h\n// LegoCV\n//\n// Created by Dal Rupnik on 18/01/2017.\n// Copyright © 2017 Unified Sense. All rig"
},
{
"path": "LegoCV/LegoCV/Wrapper/ML/Enum/OCVBoostType.m",
"chars": 199,
"preview": "//\n// OCVBoostType.m\n// LegoCV\n//\n// Created by Dal Rupnik on 18/01/2017.\n// Copyright © 2017 Unified Sense. All rig"
},
{
"path": "LegoCV/LegoCV/Wrapper/ML/Enum/OCVVarType.h",
"chars": 199,
"preview": "//\n// OCVVarType.h\n// LegoCV\n//\n// Created by Dal Rupnik on 18/01/2017.\n// Copyright © 2017 Unified Sense. All right"
},
{
"path": "LegoCV/LegoCV/Wrapper/ML/Enum/OCVVarType.m",
"chars": 193,
"preview": "//\n// OCVVarType.m\n// LegoCV\n//\n// Created by Dal Rupnik on 18/01/2017.\n// Copyright © 2017 Unified Sense. All right"
},
{
"path": "LegoCV/LegoCV/Wrapper/ML/OCVANNMLP.h",
"chars": 197,
"preview": "//\n// OCVANNMLP.h\n// LegoCV\n//\n// Created by Dal Rupnik on 18/01/2017.\n// Copyright © 2017 Unified Sense. All rights"
},
{
"path": "LegoCV/LegoCV/Wrapper/ML/OCVANNMLP.m",
"chars": 190,
"preview": "//\n// OCVANNMLP.m\n// LegoCV\n//\n// Created by Dal Rupnik on 18/01/2017.\n// Copyright © 2017 Unified Sense. All rights"
},
{
"path": "LegoCV/LegoCV/Wrapper/ML/OCVBoost.h",
"chars": 195,
"preview": "//\n// OCVBoost.h\n// LegoCV\n//\n// Created by Dal Rupnik on 18/01/2017.\n// Copyright © 2017 Unified Sense. All rights "
},
{
"path": "LegoCV/LegoCV/Wrapper/ML/OCVBoost.m",
"chars": 187,
"preview": "//\n// OCVBoost.m\n// LegoCV\n//\n// Created by Dal Rupnik on 18/01/2017.\n// Copyright © 2017 Unified Sense. All rights "
},
{
"path": "LegoCV/LegoCV/Wrapper/ML/OCVDTree.h",
"chars": 195,
"preview": "//\n// OCVDTree.h\n// LegoCV\n//\n// Created by Dal Rupnik on 18/01/2017.\n// Copyright © 2017 Unified Sense. All rights "
},
{
"path": "LegoCV/LegoCV/Wrapper/ML/OCVDTree.m",
"chars": 187,
"preview": "//\n// OCVDTree.m\n// LegoCV\n//\n// Created by Dal Rupnik on 18/01/2017.\n// Copyright © 2017 Unified Sense. All rights "
},
{
"path": "LegoCV/LegoCV/Wrapper/ML/OCVEM.h",
"chars": 189,
"preview": "//\n// OCVEM.h\n// LegoCV\n//\n// Created by Dal Rupnik on 18/01/2017.\n// Copyright © 2017 Unified Sense. All rights res"
},
{
"path": "LegoCV/LegoCV/Wrapper/ML/OCVEM.m",
"chars": 178,
"preview": "//\n// OCVEM.m\n// LegoCV\n//\n// Created by Dal Rupnik on 18/01/2017.\n// Copyright © 2017 Unified Sense. All rights res"
},
{
"path": "LegoCV/LegoCV/Wrapper/ML/OCVKNearest.h",
"chars": 201,
"preview": "//\n// OCVKNearest.h\n// LegoCV\n//\n// Created by Dal Rupnik on 18/01/2017.\n// Copyright © 2017 Unified Sense. All righ"
},
{
"path": "LegoCV/LegoCV/Wrapper/ML/OCVKNearest.m",
"chars": 196,
"preview": "//\n// OCVKNearest.m\n// LegoCV\n//\n// Created by Dal Rupnik on 18/01/2017.\n// Copyright © 2017 Unified Sense. All righ"
},
{
"path": "LegoCV/LegoCV/Wrapper/ML/OCVLogisticRegression.h",
"chars": 221,
"preview": "//\n// OCVLogisticRegression.h\n// LegoCV\n//\n// Created by Dal Rupnik on 18/01/2017.\n// Copyright © 2017 Unified Sense"
},
{
"path": "LegoCV/LegoCV/Wrapper/ML/OCVLogisticRegression.m",
"chars": 226,
"preview": "//\n// OCVLogisticRegression.m\n// LegoCV\n//\n// Created by Dal Rupnik on 18/01/2017.\n// Copyright © 2017 Unified Sense"
},
{
"path": "LegoCV/LegoCV/Wrapper/ML/OCVNormalBayesClassifier.h",
"chars": 227,
"preview": "//\n// OCVNormalBayesClassifier.h\n// LegoCV\n//\n// Created by Dal Rupnik on 18/01/2017.\n// Copyright © 2017 Unified Se"
},
{
"path": "LegoCV/LegoCV/Wrapper/ML/OCVNormalBayesClassifier.m",
"chars": 235,
"preview": "//\n// OCVNormalBayesClassifier.m\n// LegoCV\n//\n// Created by Dal Rupnik on 18/01/2017.\n// Copyright © 2017 Unified Se"
},
{
"path": "LegoCV/LegoCV/Wrapper/ML/OCVRTree.h",
"chars": 195,
"preview": "//\n// OCVRTree.h\n// LegoCV\n//\n// Created by Dal Rupnik on 18/01/2017.\n// Copyright © 2017 Unified Sense. All rights "
},
{
"path": "LegoCV/LegoCV/Wrapper/ML/OCVRTree.m",
"chars": 187,
"preview": "//\n// OCVRTree.m\n// LegoCV\n//\n// Created by Dal Rupnik on 18/01/2017.\n// Copyright © 2017 Unified Sense. All rights "
},
{
"path": "LegoCV/LegoCV/Wrapper/ML/OCVSVM.h",
"chars": 191,
"preview": "//\n// OCVSVM.h\n// LegoCV\n//\n// Created by Dal Rupnik on 18/01/2017.\n// Copyright © 2017 Unified Sense. All rights re"
},
{
"path": "LegoCV/LegoCV/Wrapper/ML/OCVSVM.m",
"chars": 181,
"preview": "//\n// OCVSVM.m\n// LegoCV\n//\n// Created by Dal Rupnik on 18/01/2017.\n// Copyright © 2017 Unified Sense. All rights re"
},
{
"path": "LegoCV/LegoCV/Wrapper/ML/OCVStatModelExtensions.h",
"chars": 223,
"preview": "//\n// OCVStatModelExtensions.h\n// LegoCV\n//\n// Created by Dal Rupnik on 18/01/2017.\n// Copyright © 2017 Unified Sens"
},
{
"path": "LegoCV/LegoCV/Wrapper/ML/OCVStatModelExtensions.m",
"chars": 229,
"preview": "//\n// OCVStatModelExtensions.m\n// LegoCV\n//\n// Created by Dal Rupnik on 18/01/2017.\n// Copyright © 2017 Unified Sens"
},
{
"path": "LegoCV/LegoCV/Wrapper/ML/OCVTrainData.h",
"chars": 203,
"preview": "//\n// OCVTrainData.h\n// LegoCV\n//\n// Created by Dal Rupnik on 18/01/2017.\n// Copyright © 2017 Unified Sense. All rig"
},
{
"path": "LegoCV/LegoCV/Wrapper/ML/OCVTrainData.m",
"chars": 199,
"preview": "//\n// OCVTrainData.m\n// LegoCV\n//\n// Created by Dal Rupnik on 18/01/2017.\n// Copyright © 2017 Unified Sense. All rig"
},
{
"path": "LegoCV/LegoCV/Wrapper/ML/Structure/OCVMCvDTreeNode.h",
"chars": 209,
"preview": "//\n// OCVMCvDTreeNode.h\n// LegoCV\n//\n// Created by Dal Rupnik on 18/01/2017.\n// Copyright © 2017 Unified Sense. All "
},
{
"path": "LegoCV/LegoCV/Wrapper/ML/Structure/OCVMCvDTreeNode.m",
"chars": 208,
"preview": "//\n// OCVMCvDTreeNode.m\n// LegoCV\n//\n// Created by Dal Rupnik on 18/01/2017.\n// Copyright © 2017 Unified Sense. All "
},
{
"path": "LegoCV/LegoCV/Wrapper/ML/Structure/OCVMCvDTreeSplit.h",
"chars": 211,
"preview": "//\n// OCVMCvDTreeSplit.h\n// LegoCV\n//\n// Created by Dal Rupnik on 18/01/2017.\n// Copyright © 2017 Unified Sense. All"
},
{
"path": "LegoCV/LegoCV/Wrapper/ML/Structure/OCVMCvDTreeSplit.m",
"chars": 211,
"preview": "//\n// OCVMCvDTreeSplit.m\n// LegoCV\n//\n// Created by Dal Rupnik on 18/01/2017.\n// Copyright © 2017 Unified Sense. All"
},
{
"path": "LegoCV/LegoCV/Wrapper/ML/Structure/OCVMCvDTreeSplitMOrder.h",
"chars": 223,
"preview": "//\n// OCVMCvDTreeSplitMOrder.h\n// LegoCV\n//\n// Created by Dal Rupnik on 18/01/2017.\n// Copyright © 2017 Unified Sens"
},
{
"path": "LegoCV/LegoCV/Wrapper/ML/Structure/OCVMCvDTreeSplitMOrder.m",
"chars": 229,
"preview": "//\n// OCVMCvDTreeSplitMOrder.m\n// LegoCV\n//\n// Created by Dal Rupnik on 18/01/2017.\n// Copyright © 2017 Unified Sens"
},
{
"path": "LegoCV/LegoCV/Wrapper/ML/Structure/OCVMCvParamGrid.h",
"chars": 209,
"preview": "//\n// OCVMCvParamGrid.h\n// LegoCV\n//\n// Created by Dal Rupnik on 18/01/2017.\n// Copyright © 2017 Unified Sense. All "
},
{
"path": "LegoCV/LegoCV/Wrapper/ML/Structure/OCVMCvParamGrid.m",
"chars": 208,
"preview": "//\n// OCVMCvParamGrid.m\n// LegoCV\n//\n// Created by Dal Rupnik on 18/01/2017.\n// Copyright © 2017 Unified Sense. All "
},
{
"path": "LegoCV/LegoCV/Wrapper/OCR/OCVOrientation.h",
"chars": 207,
"preview": "//\n// OCVOrientation.h\n// LegoCV\n//\n// Created by Dal Rupnik on 18/01/2017.\n// Copyright © 2017 Unified Sense. All r"
},
{
"path": "LegoCV/LegoCV/Wrapper/OCR/OCVOrientation.m",
"chars": 205,
"preview": "//\n// OCVOrientation.m\n// LegoCV\n//\n// Created by Dal Rupnik on 18/01/2017.\n// Copyright © 2017 Unified Sense. All r"
},
{
"path": "LegoCV/LegoCV/Wrapper/OCR/OCVPageIterator.h",
"chars": 209,
"preview": "//\n// OCVPageIterator.h\n// LegoCV\n//\n// Created by Dal Rupnik on 18/01/2017.\n// Copyright © 2017 Unified Sense. All "
},
{
"path": "LegoCV/LegoCV/Wrapper/OCR/OCVPageIterator.m",
"chars": 208,
"preview": "//\n// OCVPageIterator.m\n// LegoCV\n//\n// Created by Dal Rupnik on 18/01/2017.\n// Copyright © 2017 Unified Sense. All "
},
{
"path": "LegoCV/LegoCV/Wrapper/OCR/OCVTesseract.h",
"chars": 203,
"preview": "//\n// OCVTesseract.h\n// LegoCV\n//\n// Created by Dal Rupnik on 18/01/2017.\n// Copyright © 2017 Unified Sense. All rig"
},
{
"path": "LegoCV/LegoCV/Wrapper/OCR/OCVTesseract.m",
"chars": 199,
"preview": "//\n// OCVTesseract.m\n// LegoCV\n//\n// Created by Dal Rupnik on 18/01/2017.\n// Copyright © 2017 Unified Sense. All rig"
},
{
"path": "LegoCV/LegoCV/Wrapper/OCR/OCVTesseractResult.h",
"chars": 215,
"preview": "//\n// OCVTesseractResult.h\n// LegoCV\n//\n// Created by Dal Rupnik on 18/01/2017.\n// Copyright © 2017 Unified Sense. A"
},
{
"path": "LegoCV/LegoCV/Wrapper/OCR/OCVTesseractResult.m",
"chars": 217,
"preview": "//\n// OCVTesseractResult.m\n// LegoCV\n//\n// Created by Dal Rupnik on 18/01/2017.\n// Copyright © 2017 Unified Sense. A"
},
{
"path": "LegoCV/LegoCV/Wrapper/ObjectDetection/OCVBaseCascadeClassifier.h",
"chars": 2366,
"preview": "//\n// OCVBaseCascadeClassifier.h\n// LegoCV\n//\n// Created by Dal Rupnik on 18/03/2017.\n// Copyright © 2017 Unified Se"
},
{
"path": "LegoCV/LegoCV/Wrapper/ObjectDetection/OCVBaseCascadeClassifier.m",
"chars": 235,
"preview": "//\n// OCVBaseCascadeClassifier.m\n// LegoCV\n//\n// Created by Dal Rupnik on 18/03/2017.\n// Copyright © 2017 Unified Se"
},
{
"path": "LegoCV/LegoCV/Wrapper/ObjectDetection/OCVCascadeClassifier.h",
"chars": 437,
"preview": "//\n// OCVCascadeClassifier.h\n// LegoCV\n//\n// Created by Dal Rupnik on 24/01/2017.\n// Copyright © 2017 Unified Sense."
},
{
"path": "LegoCV/LegoCV/Wrapper/ObjectDetection/OCVCascadeClassifier.mm",
"chars": 3864,
"preview": "//\n// OCVCascadeClassifier.mm\n// LegoCV\n//\n// Created by Dal Rupnik on 24/01/2017.\n// Copyright © 2017 Unified Sense"
},
{
"path": "LegoCV/LegoCV/Wrapper/ObjectDetection/OCVCascadeClassifierOptions.h",
"chars": 1479,
"preview": "//\n// OCVCascadeClassifierOptions.h\n// LegoCV\n//\n// Created by Dal Rupnik on 18/03/2017.\n// Copyright © 2017 Unified"
},
{
"path": "LegoCV/LegoCV/Wrapper/ObjectDetection/OCVCascadeClassifierOptions.m",
"chars": 244,
"preview": "//\n// OCVCascadeClassifierOptions.m\n// LegoCV\n//\n// Created by Dal Rupnik on 18/03/2017.\n// Copyright © 2017 Unified"
},
{
"path": "LegoCV/LegoCV/Wrapper/ObjectDetection/OCVCascadeClassifierResult.h",
"chars": 599,
"preview": "//\n// OCVCascadeClassifierResult.h\n// LegoCV\n//\n// Created by Dal Rupnik on 18/03/2017.\n// Copyright © 2017 Unified "
},
{
"path": "LegoCV/LegoCV/Wrapper/ObjectDetection/OCVCascadeClassifierResult.m",
"chars": 241,
"preview": "//\n// OCVCascadeClassifierResult.m\n// LegoCV\n//\n// Created by Dal Rupnik on 18/03/2017.\n// Copyright © 2017 Unified "
},
{
"path": "LegoCV/LegoCV/Wrapper/Ocl/OCVDevice.h",
"chars": 197,
"preview": "//\n// OCVDevice.h\n// LegoCV\n//\n// Created by Dal Rupnik on 18/01/2017.\n// Copyright © 2017 Unified Sense. All rights"
},
{
"path": "LegoCV/LegoCV/Wrapper/Ocl/OCVDevice.m",
"chars": 190,
"preview": "//\n// OCVDevice.m\n// LegoCV\n//\n// Created by Dal Rupnik on 18/01/2017.\n// Copyright © 2017 Unified Sense. All rights"
},
{
"path": "LegoCV/LegoCV/Wrapper/Ocl/OCVImage2D.h",
"chars": 199,
"preview": "//\n// OCVImage2D.h\n// LegoCV\n//\n// Created by Dal Rupnik on 18/01/2017.\n// Copyright © 2017 Unified Sense. All right"
},
{
"path": "LegoCV/LegoCV/Wrapper/Ocl/OCVImage2D.m",
"chars": 193,
"preview": "//\n// OCVImage2D.m\n// LegoCV\n//\n// Created by Dal Rupnik on 18/01/2017.\n// Copyright © 2017 Unified Sense. All right"
},
{
"path": "LegoCV/LegoCV/Wrapper/Ocl/OCVKernel.h",
"chars": 197,
"preview": "//\n// OCVKernel.h\n// LegoCV\n//\n// Created by Dal Rupnik on 18/01/2017.\n// Copyright © 2017 Unified Sense. All rights"
},
{
"path": "LegoCV/LegoCV/Wrapper/Ocl/OCVKernel.m",
"chars": 190,
"preview": "//\n// OCVKernel.m\n// LegoCV\n//\n// Created by Dal Rupnik on 18/01/2017.\n// Copyright © 2017 Unified Sense. All rights"
},
{
"path": "LegoCV/LegoCV/Wrapper/Ocl/OCVKernelConfiguration.h",
"chars": 223,
"preview": "//\n// OCVKernelConfiguration.h\n// LegoCV\n//\n// Created by Dal Rupnik on 18/01/2017.\n// Copyright © 2017 Unified Sens"
},
{
"path": "LegoCV/LegoCV/Wrapper/Ocl/OCVKernelConfiguration.m",
"chars": 229,
"preview": "//\n// OCVKernelConfiguration.m\n// LegoCV\n//\n// Created by Dal Rupnik on 18/01/2017.\n// Copyright © 2017 Unified Sens"
},
{
"path": "LegoCV/LegoCV/Wrapper/Ocl/OCVPlatformInfo.h",
"chars": 209,
"preview": "//\n// OCVPlatformInfo.h\n// LegoCV\n//\n// Created by Dal Rupnik on 18/01/2017.\n// Copyright © 2017 Unified Sense. All "
}
]
// ... and 151 more files (download for full content)
About this extraction
This page contains the full source code of the Legoless/LegoCV GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 351 files (435.2 KB), approximately 156.3k tokens, and a symbol index with 12 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.