@ -1,13 +0,0 @@ |
||||
# ---------------------------------------------------------------------------- |
||||
# CMake file for samples. See root CMakeLists.txt |
||||
# |
||||
# ---------------------------------------------------------------------------- |
||||
|
||||
add_subdirectory(c) |
||||
add_subdirectory(cpp) |
||||
add_subdirectory(gpu) |
||||
add_subdirectory(ocl) |
||||
|
||||
if(ANDROID AND BUILD_ANDROID_EXAMPLES) |
||||
add_subdirectory(android) |
||||
endif() |
@ -1,20 +0,0 @@ |
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> |
||||
<plist version="1.0"> |
||||
<dict> |
||||
<key>CFBundleDevelopmentRegion</key> |
||||
<string>English</string> |
||||
<key>CFBundleExecutable</key> |
||||
<string>${EXECUTABLE_NAME}</string> |
||||
<key>CFBundleIdentifier</key> |
||||
<string>de.rwth-aachen.ient.FaceTracker</string> |
||||
<key>CFBundleInfoDictionaryVersion</key> |
||||
<string>6.0</string> |
||||
<key>CFBundlePackageType</key> |
||||
<string>APPL</string> |
||||
<key>CFBundleSignature</key> |
||||
<string>????</string> |
||||
<key>CFBundleVersion</key> |
||||
<string>1.0</string> |
||||
</dict> |
||||
</plist> |
@ -1,86 +0,0 @@ |
||||
|
||||
#include <OpenCV/OpenCV.h> |
||||
#include <cassert> |
||||
#include <iostream> |
||||
|
||||
|
||||
const char * WINDOW_NAME = "Face Tracker"; |
||||
const CFIndex CASCADE_NAME_LEN = 2048; |
||||
char CASCADE_NAME[CASCADE_NAME_LEN] = "~/opencv/data/haarcascades/haarcascade_frontalface_alt2.xml"; |
||||
|
||||
using namespace std; |
||||
|
||||
int main (int argc, char * const argv[]) |
||||
{ |
||||
const int scale = 2; |
||||
|
||||
// locate haar cascade from inside application bundle
|
||||
// (this is the mac way to package application resources)
|
||||
CFBundleRef mainBundle = CFBundleGetMainBundle (); |
||||
assert (mainBundle); |
||||
CFURLRef cascade_url = CFBundleCopyResourceURL (mainBundle, CFSTR("haarcascade_frontalface_alt2"), CFSTR("xml"), NULL); |
||||
assert (cascade_url); |
||||
Boolean got_it = CFURLGetFileSystemRepresentation (cascade_url, true, |
||||
reinterpret_cast<UInt8 *>(CASCADE_NAME), CASCADE_NAME_LEN); |
||||
if (! got_it) |
||||
abort (); |
||||
|
||||
// create all necessary instances
|
||||
cvNamedWindow (WINDOW_NAME, CV_WINDOW_AUTOSIZE); |
||||
CvCapture * camera = cvCreateCameraCapture (CV_CAP_ANY); |
||||
CvHaarClassifierCascade* cascade = (CvHaarClassifierCascade*) cvLoad (CASCADE_NAME, 0, 0, 0); |
||||
CvMemStorage* storage = cvCreateMemStorage(0); |
||||
assert (storage); |
||||
|
||||
// you do own an iSight, don't you ?!?
|
||||
if (! camera) |
||||
abort (); |
||||
|
||||
// did we load the cascade?!?
|
||||
if (! cascade) |
||||
abort (); |
||||
|
||||
// get an initial frame and duplicate it for later work
|
||||
IplImage * current_frame = cvQueryFrame (camera); |
||||
IplImage * draw_image = cvCreateImage(cvSize (current_frame->width, current_frame->height), IPL_DEPTH_8U, 3); |
||||
IplImage * gray_image = cvCreateImage(cvSize (current_frame->width, current_frame->height), IPL_DEPTH_8U, 1); |
||||
IplImage * small_image = cvCreateImage(cvSize (current_frame->width / scale, current_frame->height / scale), IPL_DEPTH_8U, 1); |
||||
assert (current_frame && gray_image && draw_image); |
||||
|
||||
// as long as there are images ...
|
||||
while (current_frame = cvQueryFrame (camera)) |
||||
{ |
||||
// convert to gray and downsize
|
||||
cvCvtColor (current_frame, gray_image, CV_BGR2GRAY); |
||||
cvResize (gray_image, small_image, CV_INTER_LINEAR); |
||||
|
||||
// detect faces
|
||||
CvSeq* faces = cvHaarDetectObjects (small_image, cascade, storage, |
||||
1.1, 2, CV_HAAR_DO_CANNY_PRUNING, |
||||
cvSize (30, 30)); |
||||
|
||||
// draw faces
|
||||
cvFlip (current_frame, draw_image, 1); |
||||
for (int i = 0; i < (faces ? faces->total : 0); i++) |
||||
{ |
||||
CvRect* r = (CvRect*) cvGetSeqElem (faces, i); |
||||
CvPoint center; |
||||
int radius; |
||||
center.x = cvRound((small_image->width - r->width*0.5 - r->x) *scale); |
||||
center.y = cvRound((r->y + r->height*0.5)*scale); |
||||
radius = cvRound((r->width + r->height)*0.25*scale); |
||||
cvCircle (draw_image, center, radius, CV_RGB(0,255,0), 3, 8, 0 ); |
||||
} |
||||
|
||||
// just show the image
|
||||
cvShowImage (WINDOW_NAME, draw_image); |
||||
|
||||
// wait a tenth of a second for keypress and window drawing
|
||||
int key = cvWaitKey (100); |
||||
if (key == 'q' || key == 'Q') |
||||
break; |
||||
} |
||||
|
||||
// be nice and return no error
|
||||
return 0; |
||||
} |
@ -1,262 +0,0 @@ |
||||
// !$*UTF8*$! |
||||
{ |
||||
archiveVersion = 1; |
||||
classes = { |
||||
}; |
||||
objectVersion = 42; |
||||
objects = { |
||||
|
||||
/* Begin PBXBuildFile section */ |
||||
4D7DBE8E0C04A90C00D8835D /* FaceTracker.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 08FB7796FE84155DC02AAC07 /* FaceTracker.cpp */; }; |
||||
4D95C9BE0C0577B200983E4D /* OpenCV.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4D06E1E00C039982004AF23F /* OpenCV.framework */; }; |
||||
4D95C9D80C0577BD00983E4D /* OpenCV.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 4D06E1E00C039982004AF23F /* OpenCV.framework */; }; |
||||
4DBF87310C05731500880673 /* haarcascade_frontalface_alt2.xml in Resources */ = {isa = PBXBuildFile; fileRef = 4DBF87300C05731500880673 /* haarcascade_frontalface_alt2.xml */; }; |
||||
/* End PBXBuildFile section */ |
||||
|
||||
/* Begin PBXCopyFilesBuildPhase section */ |
||||
4D7DBE8F0C04A93300D8835D /* CopyFiles */ = { |
||||
isa = PBXCopyFilesBuildPhase; |
||||
buildActionMask = 2147483647; |
||||
dstPath = ""; |
||||
dstSubfolderSpec = 10; |
||||
files = ( |
||||
4D95C9D80C0577BD00983E4D /* OpenCV.framework in CopyFiles */, |
||||
); |
||||
runOnlyForDeploymentPostprocessing = 0; |
||||
}; |
||||
/* End PBXCopyFilesBuildPhase section */ |
||||
|
||||
/* Begin PBXFileReference section */ |
||||
08FB7796FE84155DC02AAC07 /* FaceTracker.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FaceTracker.cpp; sourceTree = "<group>"; }; |
||||
4D06E1E00C039982004AF23F /* OpenCV.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenCV.framework; path = ../../../OpenCV.framework; sourceTree = SOURCE_ROOT; }; |
||||
4D4CDBCC0C0630060001A8A2 /* README.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = README.txt; sourceTree = "<group>"; }; |
||||
4D7DBE570C04A8FF00D8835D /* FaceTracker.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = FaceTracker.app; sourceTree = BUILT_PRODUCTS_DIR; }; |
||||
4D7DBE590C04A8FF00D8835D /* FaceTracker-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = "FaceTracker-Info.plist"; sourceTree = "<group>"; }; |
||||
4DBF87300C05731500880673 /* haarcascade_frontalface_alt2.xml */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.xml; name = haarcascade_frontalface_alt2.xml; path = ../../../data/haarcascades/haarcascade_frontalface_alt2.xml; sourceTree = SOURCE_ROOT; }; |
||||
/* End PBXFileReference section */ |
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */ |
||||
4D7DBE550C04A8FF00D8835D /* Frameworks */ = { |
||||
isa = PBXFrameworksBuildPhase; |
||||
buildActionMask = 2147483647; |
||||
files = ( |
||||
4D95C9BE0C0577B200983E4D /* OpenCV.framework in Frameworks */, |
||||
); |
||||
runOnlyForDeploymentPostprocessing = 0; |
||||
}; |
||||
/* End PBXFrameworksBuildPhase section */ |
||||
|
||||
/* Begin PBXGroup section */ |
||||
08FB7794FE84155DC02AAC07 /* FrameworkTest */ = { |
||||
isa = PBXGroup; |
||||
children = ( |
||||
4D4CDBCC0C0630060001A8A2 /* README.txt */, |
||||
08FB7795FE84155DC02AAC07 /* Source */, |
||||
4DBF872C0C0572BC00880673 /* Resources */, |
||||
4D9D40B00C04AC1600EEFFD0 /* Frameworks */, |
||||
1AB674ADFE9D54B511CA2CBB /* Products */, |
||||
); |
||||
name = FrameworkTest; |
||||
sourceTree = "<group>"; |
||||
}; |
||||
08FB7795FE84155DC02AAC07 /* Source */ = { |
||||
isa = PBXGroup; |
||||
children = ( |
||||
08FB7796FE84155DC02AAC07 /* FaceTracker.cpp */, |
||||
); |
||||
name = Source; |
||||
sourceTree = "<group>"; |
||||
}; |
||||
1AB674ADFE9D54B511CA2CBB /* Products */ = { |
||||
isa = PBXGroup; |
||||
children = ( |
||||
4D7DBE570C04A8FF00D8835D /* FaceTracker.app */, |
||||
); |
||||
name = Products; |
||||
sourceTree = "<group>"; |
||||
}; |
||||
4D9D40B00C04AC1600EEFFD0 /* Frameworks */ = { |
||||
isa = PBXGroup; |
||||
children = ( |
||||
4D06E1E00C039982004AF23F /* OpenCV.framework */, |
||||
); |
||||
name = Frameworks; |
||||
sourceTree = "<group>"; |
||||
}; |
||||
4DBF872C0C0572BC00880673 /* Resources */ = { |
||||
isa = PBXGroup; |
||||
children = ( |
||||
4DBF87300C05731500880673 /* haarcascade_frontalface_alt2.xml */, |
||||
4D7DBE590C04A8FF00D8835D /* FaceTracker-Info.plist */, |
||||
); |
||||
name = Resources; |
||||
sourceTree = "<group>"; |
||||
}; |
||||
/* End PBXGroup section */ |
||||
|
||||
/* Begin PBXNativeTarget section */ |
||||
4D7DBE560C04A8FF00D8835D /* FaceTracker */ = { |
||||
isa = PBXNativeTarget; |
||||
buildConfigurationList = 4D7DBE5A0C04A8FF00D8835D /* Build configuration list for PBXNativeTarget "FaceTracker" */; |
||||
buildPhases = ( |
||||
4D7DBE530C04A8FF00D8835D /* Resources */, |
||||
4D7DBE540C04A8FF00D8835D /* Sources */, |
||||
4D7DBE550C04A8FF00D8835D /* Frameworks */, |
||||
4D7DBE8F0C04A93300D8835D /* CopyFiles */, |
||||
); |
||||
buildRules = ( |
||||
); |
||||
dependencies = ( |
||||
); |
||||
name = FaceTracker; |
||||
productName = FaceTracker; |
||||
productReference = 4D7DBE570C04A8FF00D8835D /* FaceTracker.app */; |
||||
productType = "com.apple.product-type.application"; |
||||
}; |
||||
/* End PBXNativeTarget section */ |
||||
|
||||
/* Begin PBXProject section */ |
||||
08FB7793FE84155DC02AAC07 /* Project object */ = { |
||||
isa = PBXProject; |
||||
buildConfigurationList = 1DEB923508733DC60010E9CD /* Build configuration list for PBXProject "FaceTracker" */; |
||||
hasScannedForEncodings = 1; |
||||
mainGroup = 08FB7794FE84155DC02AAC07 /* FrameworkTest */; |
||||
projectDirPath = ""; |
||||
targets = ( |
||||
4D7DBE560C04A8FF00D8835D /* FaceTracker */, |
||||
); |
||||
}; |
||||
/* End PBXProject section */ |
||||
|
||||
/* Begin PBXResourcesBuildPhase section */ |
||||
4D7DBE530C04A8FF00D8835D /* Resources */ = { |
||||
isa = PBXResourcesBuildPhase; |
||||
buildActionMask = 2147483647; |
||||
files = ( |
||||
4DBF87310C05731500880673 /* haarcascade_frontalface_alt2.xml in Resources */, |
||||
); |
||||
runOnlyForDeploymentPostprocessing = 0; |
||||
}; |
||||
/* End PBXResourcesBuildPhase section */ |
||||
|
||||
/* Begin PBXSourcesBuildPhase section */ |
||||
4D7DBE540C04A8FF00D8835D /* Sources */ = { |
||||
isa = PBXSourcesBuildPhase; |
||||
buildActionMask = 2147483647; |
||||
files = ( |
||||
4D7DBE8E0C04A90C00D8835D /* FaceTracker.cpp in Sources */, |
||||
); |
||||
runOnlyForDeploymentPostprocessing = 0; |
||||
}; |
||||
/* End PBXSourcesBuildPhase section */ |
||||
|
||||
/* Begin XCBuildConfiguration section */ |
||||
1DEB923608733DC60010E9CD /* Debug */ = { |
||||
isa = XCBuildConfiguration; |
||||
buildSettings = { |
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES; |
||||
GCC_WARN_UNUSED_VARIABLE = YES; |
||||
PREBINDING = NO; |
||||
SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk; |
||||
}; |
||||
name = Debug; |
||||
}; |
||||
1DEB923708733DC60010E9CD /* Release */ = { |
||||
isa = XCBuildConfiguration; |
||||
buildSettings = { |
||||
ARCHS = ( |
||||
ppc, |
||||
i386, |
||||
); |
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES; |
||||
GCC_WARN_UNUSED_VARIABLE = YES; |
||||
PREBINDING = NO; |
||||
SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk; |
||||
}; |
||||
name = Release; |
||||
}; |
||||
4D7DBE5B0C04A8FF00D8835D /* Debug */ = { |
||||
isa = XCBuildConfiguration; |
||||
buildSettings = { |
||||
COPY_PHASE_STRIP = NO; |
||||
FRAMEWORK_SEARCH_PATHS = ( |
||||
"$(inherited)", |
||||
"$(FRAMEWORK_SEARCH_PATHS_QUOTED_1)", |
||||
"$(FRAMEWORK_SEARCH_PATHS_QUOTED_2)", |
||||
); |
||||
FRAMEWORK_SEARCH_PATHS_QUOTED_1 = "\"$(SRCROOT)/../opencv\""; |
||||
FRAMEWORK_SEARCH_PATHS_QUOTED_2 = "\"$(SRCROOT)/../../..\""; |
||||
GCC_DYNAMIC_NO_PIC = NO; |
||||
GCC_ENABLE_FIX_AND_CONTINUE = YES; |
||||
GCC_GENERATE_DEBUGGING_SYMBOLS = YES; |
||||
GCC_MODEL_TUNING = G5; |
||||
GCC_OPTIMIZATION_LEVEL = 0; |
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES; |
||||
GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/Carbon.framework/Headers/Carbon.h"; |
||||
INFOPLIST_FILE = "FaceTracker-Info.plist"; |
||||
INSTALL_PATH = "$(HOME)/Applications"; |
||||
OTHER_LDFLAGS = ( |
||||
"-framework", |
||||
Carbon, |
||||
); |
||||
PREBINDING = NO; |
||||
PRODUCT_NAME = FaceTracker; |
||||
WRAPPER_EXTENSION = app; |
||||
ZERO_LINK = YES; |
||||
}; |
||||
name = Debug; |
||||
}; |
||||
4D7DBE5C0C04A8FF00D8835D /* Release */ = { |
||||
isa = XCBuildConfiguration; |
||||
buildSettings = { |
||||
COPY_PHASE_STRIP = YES; |
||||
FRAMEWORK_SEARCH_PATHS = ( |
||||
"$(inherited)", |
||||
"$(FRAMEWORK_SEARCH_PATHS_QUOTED_1)", |
||||
"$(FRAMEWORK_SEARCH_PATHS_QUOTED_2)", |
||||
); |
||||
FRAMEWORK_SEARCH_PATHS_QUOTED_1 = "\"$(SRCROOT)/../opencv\""; |
||||
FRAMEWORK_SEARCH_PATHS_QUOTED_2 = "\"$(SRCROOT)/../../..\""; |
||||
GCC_ENABLE_FIX_AND_CONTINUE = NO; |
||||
GCC_GENERATE_DEBUGGING_SYMBOLS = NO; |
||||
GCC_MODEL_TUNING = G5; |
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES; |
||||
GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/Carbon.framework/Headers/Carbon.h"; |
||||
INFOPLIST_FILE = "FaceTracker-Info.plist"; |
||||
INSTALL_PATH = "$(HOME)/Applications"; |
||||
OTHER_LDFLAGS = ( |
||||
"-framework", |
||||
Carbon, |
||||
); |
||||
PREBINDING = NO; |
||||
PRODUCT_NAME = FaceTracker; |
||||
WRAPPER_EXTENSION = app; |
||||
ZERO_LINK = NO; |
||||
}; |
||||
name = Release; |
||||
}; |
||||
/* End XCBuildConfiguration section */ |
||||
|
||||
/* Begin XCConfigurationList section */ |
||||
1DEB923508733DC60010E9CD /* Build configuration list for PBXProject "FaceTracker" */ = { |
||||
isa = XCConfigurationList; |
||||
buildConfigurations = ( |
||||
1DEB923608733DC60010E9CD /* Debug */, |
||||
1DEB923708733DC60010E9CD /* Release */, |
||||
); |
||||
defaultConfigurationIsVisible = 0; |
||||
defaultConfigurationName = Release; |
||||
}; |
||||
4D7DBE5A0C04A8FF00D8835D /* Build configuration list for PBXNativeTarget "FaceTracker" */ = { |
||||
isa = XCConfigurationList; |
||||
buildConfigurations = ( |
||||
4D7DBE5B0C04A8FF00D8835D /* Debug */, |
||||
4D7DBE5C0C04A8FF00D8835D /* Release */, |
||||
); |
||||
defaultConfigurationIsVisible = 0; |
||||
defaultConfigurationName = Release; |
||||
}; |
||||
/* End XCConfigurationList section */ |
||||
}; |
||||
rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; |
||||
} |
@ -1,35 +0,0 @@ |
||||
FaceTracker/REAME.txt |
||||
2007-05-24, Mark Asbach <asbach@ient.rwth-aachen.de> |
||||
|
||||
Objective: |
||||
This document is intended to get you up and running with an OpenCV Framework on Mac OS X |
||||
|
||||
Building the OpenCV.framework: |
||||
In the main directory of the opencv distribution, you will find a shell script called |
||||
'make_frameworks.sh' that does all of the typical unixy './configure && make' stuff required |
||||
to build a universal binary framework. Invoke this script from Terminal.app, wait some minutes |
||||
and you are done. |
||||
|
||||
OpenCV is a Private Framework: |
||||
On Mac OS X the concept of Framework bundles is meant to simplify distribution of shared libraries, |
||||
accompanying headers and documentation. There are however to subtly different 'flavours' of |
||||
Frameworks: public and private ones. The public frameworks get installed into the Frameworks |
||||
diretories in /Library, /System/Library or ~/Library and are meant to be shared amongst |
||||
applications. The private frameworks are only distributed as parts of an Application Bundle. |
||||
This makes it easier to deploy applications because they bring their own framework invisibly to |
||||
the user. No installation of the framework is necessary and different applications can bring |
||||
different versions of the same framework without any conflict. |
||||
Since OpenCV is still a moving target, it seems best to avoid any installation and versioning issues |
||||
for an end user. The OpenCV framework that currently comes with this demo application therefore |
||||
is a Private Framework. |
||||
|
||||
Use it for targets that result in an Application Bundle: |
||||
Since it is a Private Framework, it must be copied to the Frameworks/ directory of an Application |
||||
Bundle, which means, it is useless for plain unix console applications. You should create a Carbon |
||||
or a Cocoa application target in XCode for your projects. Then add the OpenCV.framework just like |
||||
in this demo and add a Copy Files build phase to your target. Let that phase copy to the Framework |
||||
directory and drop the OpenCV.framework on the build phase (again just like in this demo code). |
||||
|
||||
The resulting application bundle will be self contained and if you set compiler option correctly |
||||
(in the "Build" tab of the "Project Info" window you should find 'i386 ppc' for the architectures), |
||||
your application can just be copied to any OS 10.4 Mac and used without further installation. |
@ -1,7 +0,0 @@ |
||||
bin/ |
||||
gen/ |
||||
build.xml |
||||
local.properties |
||||
proguard-project.txt |
||||
project.properties |
||||
default.properties |
@ -1,8 +0,0 @@ |
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<classpath> |
||||
<classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/> |
||||
<classpathentry kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/> |
||||
<classpathentry kind="src" path="src"/> |
||||
<classpathentry kind="src" path="gen"/> |
||||
<classpathentry kind="output" path="bin/classes"/> |
||||
</classpath> |
@ -1,33 +0,0 @@ |
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<projectDescription> |
||||
<name>OpenCV Sample - 15 puzzle</name> |
||||
<comment></comment> |
||||
<projects> |
||||
</projects> |
||||
<buildSpec> |
||||
<buildCommand> |
||||
<name>com.android.ide.eclipse.adt.ResourceManagerBuilder</name> |
||||
<arguments> |
||||
</arguments> |
||||
</buildCommand> |
||||
<buildCommand> |
||||
<name>com.android.ide.eclipse.adt.PreCompilerBuilder</name> |
||||
<arguments> |
||||
</arguments> |
||||
</buildCommand> |
||||
<buildCommand> |
||||
<name>org.eclipse.jdt.core.javabuilder</name> |
||||
<arguments> |
||||
</arguments> |
||||
</buildCommand> |
||||
<buildCommand> |
||||
<name>com.android.ide.eclipse.adt.ApkBuilder</name> |
||||
<arguments> |
||||
</arguments> |
||||
</buildCommand> |
||||
</buildSpec> |
||||
<natures> |
||||
<nature>com.android.ide.eclipse.adt.AndroidNature</nature> |
||||
<nature>org.eclipse.jdt.core.javanature</nature> |
||||
</natures> |
||||
</projectDescription> |
@ -1,4 +0,0 @@ |
||||
eclipse.preferences.version=1 |
||||
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6 |
||||
org.eclipse.jdt.core.compiler.compliance=1.6 |
||||
org.eclipse.jdt.core.compiler.source=1.6 |
@ -1,34 +0,0 @@ |
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android" |
||||
package="org.opencv.samples.puzzle15" |
||||
android:versionCode="1" |
||||
android:versionName="1.0" > |
||||
|
||||
<uses-sdk android:minSdkVersion="8"/> |
||||
|
||||
<application |
||||
android:icon="@drawable/icon" |
||||
android:label="@string/app_name" |
||||
android:theme="@android:style/Theme.NoTitleBar.Fullscreen" > |
||||
|
||||
<activity |
||||
android:name=".Puzzle15Activity" |
||||
android:label="@string/app_name" |
||||
android:screenOrientation="landscape" |
||||
android:configChanges="keyboardHidden|orientation" > |
||||
|
||||
<intent-filter> |
||||
<action android:name="android.intent.action.MAIN" /> |
||||
|
||||
<category android:name="android.intent.category.LAUNCHER" /> |
||||
</intent-filter> |
||||
</activity> |
||||
</application> |
||||
|
||||
<uses-permission android:name="android.permission.CAMERA"/> |
||||
|
||||
<uses-feature android:name="android.hardware.camera" android:required="false"/> |
||||
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false"/> |
||||
<uses-feature android:name="android.hardware.camera.front" android:required="false"/> |
||||
<uses-feature android:name="android.hardware.camera.front.autofocus" android:required="false"/> |
||||
|
||||
</manifest> |
@ -1,6 +0,0 @@ |
||||
set(sample example-15-puzzle) |
||||
|
||||
add_android_project(${sample} "${CMAKE_CURRENT_SOURCE_DIR}" LIBRARY_DEPS ${OpenCV_BINARY_DIR} SDK_TARGET 11 ${ANDROID_SDK_TARGET}) |
||||
if(TARGET ${sample}) |
||||
add_dependencies(opencv_android_examples ${sample}) |
||||
endif() |
Before Width: | Height: | Size: 2.0 KiB |
@ -1,6 +0,0 @@ |
||||
<resources> |
||||
<string name="app_name">OCV 15 Puzzle</string> |
||||
<string name="menu_toggle_tile_numbers">Show/hide tile numbers</string> |
||||
<string name="menu_start_new_game">Start new game</string> |
||||
|
||||
</resources> |
@ -1,194 +0,0 @@ |
||||
package org.opencv.samples.puzzle15; |
||||
|
||||
import org.opencv.core.Core; |
||||
import org.opencv.core.CvType; |
||||
import org.opencv.core.Mat; |
||||
import org.opencv.core.Scalar; |
||||
import org.opencv.core.Size; |
||||
import org.opencv.core.Point; |
||||
|
||||
import android.util.Log; |
||||
|
||||
|
||||
/** |
||||
* This class is a controller for puzzle game. |
||||
* It converts the image from Camera into the shuffled image |
||||
*/ |
||||
public class Puzzle15Processor { |
||||
|
||||
private static final int GRID_SIZE = 4; |
||||
private static final int GRID_AREA = GRID_SIZE * GRID_SIZE; |
||||
private static final int GRID_EMPTY_INDEX = GRID_AREA - 1; |
||||
private static final String TAG = "Puzzle15Processor"; |
||||
private static final Scalar GRID_EMPTY_COLOR = new Scalar(0x33, 0x33, 0x33, 0xFF); |
||||
|
||||
private int[] mIndexes; |
||||
private int[] mTextWidths; |
||||
private int[] mTextHeights; |
||||
|
||||
private Mat mRgba15; |
||||
private Mat[] mCells15; |
||||
private boolean mShowTileNumbers = true; |
||||
|
||||
public Puzzle15Processor() { |
||||
mTextWidths = new int[GRID_AREA]; |
||||
mTextHeights = new int[GRID_AREA]; |
||||
|
||||
mIndexes = new int [GRID_AREA]; |
||||
|
||||
for (int i = 0; i < GRID_AREA; i++) |
||||
mIndexes[i] = i; |
||||
} |
||||
|
||||
/* this method is intended to make processor prepared for a new game */ |
||||
public synchronized void prepareNewGame() { |
||||
do { |
||||
shuffle(mIndexes); |
||||
} while (!isPuzzleSolvable()); |
||||
} |
||||
|
||||
/* This method is to make the processor know the size of the frames that |
||||
* will be delivered via puzzleFrame. |
||||
* If the frames will be different size - then the result is unpredictable |
||||
*/ |
||||
public synchronized void prepareGameSize(int width, int height) { |
||||
mRgba15 = new Mat(height, width, CvType.CV_8UC4); |
||||
mCells15 = new Mat[GRID_AREA]; |
||||
|
||||
for (int i = 0; i < GRID_SIZE; i++) { |
||||
for (int j = 0; j < GRID_SIZE; j++) { |
||||
int k = i * GRID_SIZE + j; |
||||
mCells15[k] = mRgba15.submat(i * height / GRID_SIZE, (i + 1) * height / GRID_SIZE, j * width / GRID_SIZE, (j + 1) * width / GRID_SIZE); |
||||
} |
||||
} |
||||
|
||||
for (int i = 0; i < GRID_AREA; i++) { |
||||
Size s = Core.getTextSize(Integer.toString(i + 1), 3/* CV_FONT_HERSHEY_COMPLEX */, 1, 2, null); |
||||
mTextHeights[i] = (int) s.height; |
||||
mTextWidths[i] = (int) s.width; |
||||
} |
||||
} |
||||
|
||||
/* this method to be called from the outside. it processes the frame and shuffles |
||||
* the tiles as specified by mIndexes array |
||||
*/ |
||||
public synchronized Mat puzzleFrame(Mat inputPicture) { |
||||
Mat[] cells = new Mat[GRID_AREA]; |
||||
int rows = inputPicture.rows(); |
||||
int cols = inputPicture.cols(); |
||||
|
||||
rows = rows - rows%4; |
||||
cols = cols - cols%4; |
||||
|
||||
for (int i = 0; i < GRID_SIZE; i++) { |
||||
for (int j = 0; j < GRID_SIZE; j++) { |
||||
int k = i * GRID_SIZE + j; |
||||
cells[k] = inputPicture.submat(i * inputPicture.rows() / GRID_SIZE, (i + 1) * inputPicture.rows() / GRID_SIZE, j * inputPicture.cols()/ GRID_SIZE, (j + 1) * inputPicture.cols() / GRID_SIZE); |
||||
} |
||||
} |
||||
|
||||
rows = rows - rows%4; |
||||
cols = cols - cols%4; |
||||
|
||||
// copy shuffled tiles
|
||||
for (int i = 0; i < GRID_AREA; i++) { |
||||
int idx = mIndexes[i]; |
||||
if (idx == GRID_EMPTY_INDEX) |
||||
mCells15[i].setTo(GRID_EMPTY_COLOR); |
||||
else { |
||||
cells[idx].copyTo(mCells15[i]); |
||||
if (mShowTileNumbers) { |
||||
Core.putText(mCells15[i], Integer.toString(1 + idx), new Point((cols / GRID_SIZE - mTextWidths[idx]) / 2, |
||||
(rows / GRID_SIZE + mTextHeights[idx]) / 2), 3/* CV_FONT_HERSHEY_COMPLEX */, 1, new Scalar(255, 0, 0, 255), 2); |
||||
} |
||||
} |
||||
} |
||||
|
||||
for (int i = 0; i < GRID_AREA; i++) |
||||
cells[i].release(); |
||||
|
||||
drawGrid(cols, rows, mRgba15); |
||||
|
||||
return mRgba15; |
||||
} |
||||
|
||||
public void toggleTileNumbers() { |
||||
mShowTileNumbers = !mShowTileNumbers; |
||||
} |
||||
|
||||
public void deliverTouchEvent(int x, int y) { |
||||
int rows = mRgba15.rows(); |
||||
int cols = mRgba15.cols(); |
||||
|
||||
int row = (int) Math.floor(y * GRID_SIZE / rows); |
||||
int col = (int) Math.floor(x * GRID_SIZE / cols); |
||||
|
||||
if (row < 0 || row >= GRID_SIZE || col < 0 || col >= GRID_SIZE) { |
||||
Log.e(TAG, "It is not expected to get touch event outside of picture"); |
||||
return ; |
||||
} |
||||
|
||||
int idx = row * GRID_SIZE + col; |
||||
int idxtoswap = -1; |
||||
|
||||
// left
|
||||
if (idxtoswap < 0 && col > 0) |
||||
if (mIndexes[idx - 1] == GRID_EMPTY_INDEX) |
||||
idxtoswap = idx - 1; |
||||
// right
|
||||
if (idxtoswap < 0 && col < GRID_SIZE - 1) |
||||
if (mIndexes[idx + 1] == GRID_EMPTY_INDEX) |
||||
idxtoswap = idx + 1; |
||||
// top
|
||||
if (idxtoswap < 0 && row > 0) |
||||
if (mIndexes[idx - GRID_SIZE] == GRID_EMPTY_INDEX) |
||||
idxtoswap = idx - GRID_SIZE; |
||||
// bottom
|
||||
if (idxtoswap < 0 && row < GRID_SIZE - 1) |
||||
if (mIndexes[idx + GRID_SIZE] == GRID_EMPTY_INDEX) |
||||
idxtoswap = idx + GRID_SIZE; |
||||
|
||||
// swap
|
||||
if (idxtoswap >= 0) { |
||||
synchronized (this) { |
||||
int touched = mIndexes[idx]; |
||||
mIndexes[idx] = mIndexes[idxtoswap]; |
||||
mIndexes[idxtoswap] = touched; |
||||
} |
||||
} |
||||
} |
||||
|
||||
private void drawGrid(int cols, int rows, Mat drawMat) { |
||||
for (int i = 1; i < GRID_SIZE; i++) { |
||||
Core.line(drawMat, new Point(0, i * rows / GRID_SIZE), new Point(cols, i * rows / GRID_SIZE), new Scalar(0, 255, 0, 255), 3); |
||||
Core.line(drawMat, new Point(i * cols / GRID_SIZE, 0), new Point(i * cols / GRID_SIZE, rows), new Scalar(0, 255, 0, 255), 3); |
||||
} |
||||
} |
||||
|
||||
private static void shuffle(int[] array) { |
||||
for (int i = array.length; i > 1; i--) { |
||||
int temp = array[i - 1]; |
||||
int randIx = (int) (Math.random() * i); |
||||
array[i - 1] = array[randIx]; |
||||
array[randIx] = temp; |
||||
} |
||||
} |
||||
|
||||
private boolean isPuzzleSolvable() { |
||||
|
||||
int sum = 0; |
||||
for (int i = 0; i < GRID_AREA; i++) { |
||||
if (mIndexes[i] == GRID_EMPTY_INDEX) |
||||
sum += (i / GRID_SIZE) + 1; |
||||
else { |
||||
int smaller = 0; |
||||
for (int j = i + 1; j < GRID_AREA; j++) { |
||||
if (mIndexes[j] < mIndexes[i]) |
||||
smaller++; |
||||
} |
||||
sum += smaller; |
||||
} |
||||
} |
||||
return sum % 2 == 0; |
||||
} |
||||
} |
@ -1,8 +0,0 @@ |
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<classpath> |
||||
<classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/> |
||||
<classpathentry kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/> |
||||
<classpathentry kind="src" path="src"/> |
||||
<classpathentry kind="src" path="gen"/> |
||||
<classpathentry kind="output" path="bin/classes"/> |
||||
</classpath> |
@ -1,33 +0,0 @@ |
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<projectDescription> |
||||
<name>OpenCV Sample - color-blob-detection</name> |
||||
<comment></comment> |
||||
<projects> |
||||
</projects> |
||||
<buildSpec> |
||||
<buildCommand> |
||||
<name>com.android.ide.eclipse.adt.ResourceManagerBuilder</name> |
||||
<arguments> |
||||
</arguments> |
||||
</buildCommand> |
||||
<buildCommand> |
||||
<name>com.android.ide.eclipse.adt.PreCompilerBuilder</name> |
||||
<arguments> |
||||
</arguments> |
||||
</buildCommand> |
||||
<buildCommand> |
||||
<name>org.eclipse.jdt.core.javabuilder</name> |
||||
<arguments> |
||||
</arguments> |
||||
</buildCommand> |
||||
<buildCommand> |
||||
<name>com.android.ide.eclipse.adt.ApkBuilder</name> |
||||
<arguments> |
||||
</arguments> |
||||
</buildCommand> |
||||
</buildSpec> |
||||
<natures> |
||||
<nature>com.android.ide.eclipse.adt.AndroidNature</nature> |
||||
<nature>org.eclipse.jdt.core.javanature</nature> |
||||
</natures> |
||||
</projectDescription> |
@ -1,4 +0,0 @@ |
||||
eclipse.preferences.version=1 |
||||
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6 |
||||
org.eclipse.jdt.core.compiler.compliance=1.6 |
||||
org.eclipse.jdt.core.compiler.source=1.6 |
@ -1,38 +0,0 @@ |
||||
<?xml version="1.0" encoding="utf-8"?> |
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android" |
||||
package="org.opencv.samples.colorblobdetect" |
||||
android:versionCode="21" |
||||
android:versionName="2.1"> |
||||
|
||||
<application |
||||
android:label="@string/app_name" |
||||
android:icon="@drawable/icon" |
||||
android:theme="@android:style/Theme.NoTitleBar.Fullscreen" > |
||||
|
||||
<activity android:name="ColorBlobDetectionActivity" |
||||
android:label="@string/app_name" |
||||
android:screenOrientation="landscape" |
||||
android:configChanges="keyboardHidden|orientation"> |
||||
<intent-filter> |
||||
<action android:name="android.intent.action.MAIN" /> |
||||
<category android:name="android.intent.category.LAUNCHER" /> |
||||
</intent-filter> |
||||
</activity> |
||||
</application> |
||||
|
||||
<supports-screens android:resizeable="true" |
||||
android:smallScreens="true" |
||||
android:normalScreens="true" |
||||
android:largeScreens="true" |
||||
android:anyDensity="true" /> |
||||
|
||||
<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="11" /> |
||||
|
||||
<uses-permission android:name="android.permission.CAMERA"/> |
||||
|
||||
<uses-feature android:name="android.hardware.camera" android:required="false"/> |
||||
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false"/> |
||||
<uses-feature android:name="android.hardware.camera.front" android:required="false"/> |
||||
<uses-feature android:name="android.hardware.camera.front.autofocus" android:required="false"/> |
||||
|
||||
</manifest> |
@ -1,7 +0,0 @@ |
||||
set(sample example-color-blob-detection) |
||||
|
||||
add_android_project(${sample} "${CMAKE_CURRENT_SOURCE_DIR}" LIBRARY_DEPS ${OpenCV_BINARY_DIR} SDK_TARGET 11 ${ANDROID_SDK_TARGET}) |
||||
if(TARGET ${sample}) |
||||
add_dependencies(opencv_android_examples ${sample}) |
||||
endif() |
||||
|
Before Width: | Height: | Size: 2.0 KiB |
@ -1,11 +0,0 @@ |
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" |
||||
xmlns:tools="http://schemas.android.com/tools" |
||||
android:layout_width="match_parent" |
||||
android:layout_height="match_parent" > |
||||
|
||||
<org.opencv.android.JavaCameraView |
||||
android:layout_width="fill_parent" |
||||
android:layout_height="fill_parent" |
||||
android:id="@+id/color_blob_detection_activity_surface_view" /> |
||||
|
||||
</LinearLayout> |
@ -1,4 +0,0 @@ |
||||
<?xml version="1.0" encoding="utf-8"?> |
||||
<resources> |
||||
<string name="app_name">OCV Color Blob Detection</string> |
||||
</resources> |
@ -1,190 +0,0 @@ |
||||
package org.opencv.samples.colorblobdetect; |
||||
|
||||
import java.util.List; |
||||
|
||||
import org.opencv.android.BaseLoaderCallback; |
||||
import org.opencv.android.CameraBridgeViewBase.CvCameraViewFrame; |
||||
import org.opencv.android.LoaderCallbackInterface; |
||||
import org.opencv.android.OpenCVLoader; |
||||
import org.opencv.core.Core; |
||||
import org.opencv.core.CvType; |
||||
import org.opencv.core.Mat; |
||||
import org.opencv.core.MatOfPoint; |
||||
import org.opencv.core.Rect; |
||||
import org.opencv.core.Scalar; |
||||
import org.opencv.core.Size; |
||||
import org.opencv.android.CameraBridgeViewBase; |
||||
import org.opencv.android.CameraBridgeViewBase.CvCameraViewListener2; |
||||
import org.opencv.imgproc.Imgproc; |
||||
|
||||
import android.app.Activity; |
||||
import android.os.Bundle; |
||||
import android.util.Log; |
||||
import android.view.MotionEvent; |
||||
import android.view.View; |
||||
import android.view.Window; |
||||
import android.view.WindowManager; |
||||
import android.view.View.OnTouchListener; |
||||
|
||||
public class ColorBlobDetectionActivity extends Activity implements OnTouchListener, CvCameraViewListener2 { |
||||
private static final String TAG = "OCVSample::Activity"; |
||||
|
||||
private boolean mIsColorSelected = false; |
||||
private Mat mRgba; |
||||
private Scalar mBlobColorRgba; |
||||
private Scalar mBlobColorHsv; |
||||
private ColorBlobDetector mDetector; |
||||
private Mat mSpectrum; |
||||
private Size SPECTRUM_SIZE; |
||||
private Scalar CONTOUR_COLOR; |
||||
|
||||
private CameraBridgeViewBase mOpenCvCameraView; |
||||
|
||||
private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) { |
||||
@Override |
||||
public void onManagerConnected(int status) { |
||||
switch (status) { |
||||
case LoaderCallbackInterface.SUCCESS: |
||||
{ |
||||
Log.i(TAG, "OpenCV loaded successfully"); |
||||
mOpenCvCameraView.enableView(); |
||||
mOpenCvCameraView.setOnTouchListener(ColorBlobDetectionActivity.this); |
||||
} break; |
||||
default: |
||||
{ |
||||
super.onManagerConnected(status); |
||||
} break; |
||||
} |
||||
} |
||||
}; |
||||
|
||||
public ColorBlobDetectionActivity() { |
||||
Log.i(TAG, "Instantiated new " + this.getClass()); |
||||
} |
||||
|
||||
/** Called when the activity is first created. */ |
||||
@Override |
||||
public void onCreate(Bundle savedInstanceState) { |
||||
Log.i(TAG, "called onCreate"); |
||||
super.onCreate(savedInstanceState); |
||||
requestWindowFeature(Window.FEATURE_NO_TITLE); |
||||
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); |
||||
|
||||
setContentView(R.layout.color_blob_detection_surface_view); |
||||
|
||||
mOpenCvCameraView = (CameraBridgeViewBase) findViewById(R.id.color_blob_detection_activity_surface_view); |
||||
mOpenCvCameraView.setCvCameraViewListener(this); |
||||
} |
||||
|
||||
@Override |
||||
public void onPause() |
||||
{ |
||||
super.onPause(); |
||||
if (mOpenCvCameraView != null) |
||||
mOpenCvCameraView.disableView(); |
||||
} |
||||
|
||||
@Override |
||||
public void onResume() |
||||
{ |
||||
super.onResume(); |
||||
OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_3, this, mLoaderCallback); |
||||
} |
||||
|
||||
public void onDestroy() { |
||||
super.onDestroy(); |
||||
if (mOpenCvCameraView != null) |
||||
mOpenCvCameraView.disableView(); |
||||
} |
||||
|
||||
public void onCameraViewStarted(int width, int height) { |
||||
mRgba = new Mat(height, width, CvType.CV_8UC4); |
||||
mDetector = new ColorBlobDetector(); |
||||
mSpectrum = new Mat(); |
||||
mBlobColorRgba = new Scalar(255); |
||||
mBlobColorHsv = new Scalar(255); |
||||
SPECTRUM_SIZE = new Size(200, 64); |
||||
CONTOUR_COLOR = new Scalar(255,0,0,255); |
||||
} |
||||
|
||||
public void onCameraViewStopped() { |
||||
mRgba.release(); |
||||
} |
||||
|
||||
public boolean onTouch(View v, MotionEvent event) { |
||||
int cols = mRgba.cols(); |
||||
int rows = mRgba.rows(); |
||||
|
||||
int xOffset = (mOpenCvCameraView.getWidth() - cols) / 2; |
||||
int yOffset = (mOpenCvCameraView.getHeight() - rows) / 2; |
||||
|
||||
int x = (int)event.getX() - xOffset; |
||||
int y = (int)event.getY() - yOffset; |
||||
|
||||
Log.i(TAG, "Touch image coordinates: (" + x + ", " + y + ")"); |
||||
|
||||
if ((x < 0) || (y < 0) || (x > cols) || (y > rows)) return false; |
||||
|
||||
Rect touchedRect = new Rect(); |
||||
|
||||
touchedRect.x = (x>4) ? x-4 : 0; |
||||
touchedRect.y = (y>4) ? y-4 : 0; |
||||
|
||||
touchedRect.width = (x+4 < cols) ? x + 4 - touchedRect.x : cols - touchedRect.x; |
||||
touchedRect.height = (y+4 < rows) ? y + 4 - touchedRect.y : rows - touchedRect.y; |
||||
|
||||
Mat touchedRegionRgba = mRgba.submat(touchedRect); |
||||
|
||||
Mat touchedRegionHsv = new Mat(); |
||||
Imgproc.cvtColor(touchedRegionRgba, touchedRegionHsv, Imgproc.COLOR_RGB2HSV_FULL); |
||||
|
||||
// Calculate average color of touched region
|
||||
mBlobColorHsv = Core.sumElems(touchedRegionHsv); |
||||
int pointCount = touchedRect.width*touchedRect.height; |
||||
for (int i = 0; i < mBlobColorHsv.val.length; i++) |
||||
mBlobColorHsv.val[i] /= pointCount; |
||||
|
||||
mBlobColorRgba = converScalarHsv2Rgba(mBlobColorHsv); |
||||
|
||||
Log.i(TAG, "Touched rgba color: (" + mBlobColorRgba.val[0] + ", " + mBlobColorRgba.val[1] + |
||||
", " + mBlobColorRgba.val[2] + ", " + mBlobColorRgba.val[3] + ")"); |
||||
|
||||
mDetector.setHsvColor(mBlobColorHsv); |
||||
|
||||
Imgproc.resize(mDetector.getSpectrum(), mSpectrum, SPECTRUM_SIZE); |
||||
|
||||
mIsColorSelected = true; |
||||
|
||||
touchedRegionRgba.release(); |
||||
touchedRegionHsv.release(); |
||||
|
||||
return false; // don't need subsequent touch events
|
||||
} |
||||
|
||||
public Mat onCameraFrame(CvCameraViewFrame inputFrame) { |
||||
mRgba = inputFrame.rgba(); |
||||
|
||||
if (mIsColorSelected) { |
||||
mDetector.process(mRgba); |
||||
List<MatOfPoint> contours = mDetector.getContours(); |
||||
Log.e(TAG, "Contours count: " + contours.size()); |
||||
Core.drawContours(mRgba, contours, -1, CONTOUR_COLOR); |
||||
|
||||
Mat colorLabel = mRgba.submat(4, 68, 4, 68); |
||||
colorLabel.setTo(mBlobColorRgba); |
||||
|
||||
Mat spectrumLabel = mRgba.submat(4, 4 + mSpectrum.rows(), 70, 70 + mSpectrum.cols()); |
||||
mSpectrum.copyTo(spectrumLabel); |
||||
} |
||||
|
||||
return mRgba; |
||||
} |
||||
|
||||
private Scalar converScalarHsv2Rgba(Scalar hsvColor) { |
||||
Mat pointMatRgba = new Mat(); |
||||
Mat pointMatHsv = new Mat(1, 1, CvType.CV_8UC3, hsvColor); |
||||
Imgproc.cvtColor(pointMatHsv, pointMatRgba, Imgproc.COLOR_HSV2RGB_FULL, 4); |
||||
|
||||
return new Scalar(pointMatRgba.get(0, 0)); |
||||
} |
||||
} |
@ -1,108 +0,0 @@ |
||||
package org.opencv.samples.colorblobdetect; |
||||
|
||||
import java.util.ArrayList; |
||||
import java.util.Iterator; |
||||
import java.util.List; |
||||
|
||||
import org.opencv.core.Core; |
||||
import org.opencv.core.CvType; |
||||
import org.opencv.core.Mat; |
||||
import org.opencv.core.MatOfPoint; |
||||
import org.opencv.core.Scalar; |
||||
import org.opencv.imgproc.Imgproc; |
||||
|
||||
public class ColorBlobDetector { |
||||
// Lower and Upper bounds for range checking in HSV color space
|
||||
private Scalar mLowerBound = new Scalar(0); |
||||
private Scalar mUpperBound = new Scalar(0); |
||||
// Minimum contour area in percent for contours filtering
|
||||
private static double mMinContourArea = 0.1; |
||||
// Color radius for range checking in HSV color space
|
||||
private Scalar mColorRadius = new Scalar(25,50,50,0); |
||||
private Mat mSpectrum = new Mat(); |
||||
private List<MatOfPoint> mContours = new ArrayList<MatOfPoint>(); |
||||
|
||||
// Cache
|
||||
Mat mPyrDownMat = new Mat(); |
||||
Mat mHsvMat = new Mat(); |
||||
Mat mMask = new Mat(); |
||||
Mat mDilatedMask = new Mat(); |
||||
Mat mHierarchy = new Mat(); |
||||
|
||||
public void setColorRadius(Scalar radius) { |
||||
mColorRadius = radius; |
||||
} |
||||
|
||||
public void setHsvColor(Scalar hsvColor) { |
||||
double minH = (hsvColor.val[0] >= mColorRadius.val[0]) ? hsvColor.val[0]-mColorRadius.val[0] : 0; |
||||
double maxH = (hsvColor.val[0]+mColorRadius.val[0] <= 255) ? hsvColor.val[0]+mColorRadius.val[0] : 255; |
||||
|
||||
mLowerBound.val[0] = minH; |
||||
mUpperBound.val[0] = maxH; |
||||
|
||||
mLowerBound.val[1] = hsvColor.val[1] - mColorRadius.val[1]; |
||||
mUpperBound.val[1] = hsvColor.val[1] + mColorRadius.val[1]; |
||||
|
||||
mLowerBound.val[2] = hsvColor.val[2] - mColorRadius.val[2]; |
||||
mUpperBound.val[2] = hsvColor.val[2] + mColorRadius.val[2]; |
||||
|
||||
mLowerBound.val[3] = 0; |
||||
mUpperBound.val[3] = 255; |
||||
|
||||
Mat spectrumHsv = new Mat(1, (int)(maxH-minH), CvType.CV_8UC3); |
||||
|
||||
for (int j = 0; j < maxH-minH; j++) { |
||||
byte[] tmp = {(byte)(minH+j), (byte)255, (byte)255}; |
||||
spectrumHsv.put(0, j, tmp); |
||||
} |
||||
|
||||
Imgproc.cvtColor(spectrumHsv, mSpectrum, Imgproc.COLOR_HSV2RGB_FULL, 4); |
||||
} |
||||
|
||||
public Mat getSpectrum() { |
||||
return mSpectrum; |
||||
} |
||||
|
||||
public void setMinContourArea(double area) { |
||||
mMinContourArea = area; |
||||
} |
||||
|
||||
public void process(Mat rgbaImage) { |
||||
Imgproc.pyrDown(rgbaImage, mPyrDownMat); |
||||
Imgproc.pyrDown(mPyrDownMat, mPyrDownMat); |
||||
|
||||
Imgproc.cvtColor(mPyrDownMat, mHsvMat, Imgproc.COLOR_RGB2HSV_FULL); |
||||
|
||||
Core.inRange(mHsvMat, mLowerBound, mUpperBound, mMask); |
||||
Imgproc.dilate(mMask, mDilatedMask, new Mat()); |
||||
|
||||
List<MatOfPoint> contours = new ArrayList<MatOfPoint>(); |
||||
|
||||
Imgproc.findContours(mDilatedMask, contours, mHierarchy, Imgproc.RETR_EXTERNAL, Imgproc.CHAIN_APPROX_SIMPLE); |
||||
|
||||
// Find max contour area
|
||||
double maxArea = 0; |
||||
Iterator<MatOfPoint> each = contours.iterator(); |
||||
while (each.hasNext()) { |
||||
MatOfPoint wrapper = each.next(); |
||||
double area = Imgproc.contourArea(wrapper); |
||||
if (area > maxArea) |
||||
maxArea = area; |
||||
} |
||||
|
||||
// Filter contours by area and resize to fit the original image size
|
||||
mContours.clear(); |
||||
each = contours.iterator(); |
||||
while (each.hasNext()) { |
||||
MatOfPoint contour = each.next(); |
||||
if (Imgproc.contourArea(contour) > mMinContourArea*maxArea) { |
||||
Core.multiply(contour, new Scalar(4,4), contour); |
||||
mContours.add(contour); |
||||
} |
||||
} |
||||
} |
||||
|
||||
public List<MatOfPoint> getContours() { |
||||
return mContours; |
||||
} |
||||
} |
@ -1,8 +0,0 @@ |
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<classpath> |
||||
<classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/> |
||||
<classpathentry kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/> |
||||
<classpathentry kind="src" path="src"/> |
||||
<classpathentry kind="src" path="gen"/> |
||||
<classpathentry kind="output" path="bin/classes"/> |
||||
</classpath> |
@ -1,75 +0,0 @@ |
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?> |
||||
<?fileVersion 4.0.0?> |
||||
|
||||
<cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage"> |
||||
<storageModule moduleId="org.eclipse.cdt.core.settings"> |
||||
<cconfiguration id="0.129633445"> |
||||
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="0.129633445" moduleId="org.eclipse.cdt.core.settings" name="Default"> |
||||
<externalSettings/> |
||||
<extensions> |
||||
<extension id="org.eclipse.cdt.core.VCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> |
||||
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> |
||||
<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/> |
||||
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> |
||||
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> |
||||
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> |
||||
</extensions> |
||||
</storageModule> |
||||
<storageModule moduleId="cdtBuildSystem" version="4.0.0"> |
||||
<configuration artifactName="${ProjName}" buildProperties="" description="" id="0.129633445" name="Default" parent="org.eclipse.cdt.build.core.prefbase.cfg"> |
||||
<folderInfo id="0.129633445." name="/" resourcePath=""> |
||||
<toolChain id="org.eclipse.cdt.build.core.prefbase.toolchain.2006441180" name="No ToolChain" resourceTypeBasedDiscovery="false" superClass="org.eclipse.cdt.build.core.prefbase.toolchain"> |
||||
<targetPlatform id="org.eclipse.cdt.build.core.prefbase.toolchain.2006441180.527973180" name=""/> |
||||
<builder autoBuildTarget="" command="${NDKROOT}/ndk-build.cmd" enableAutoBuild="true" enableCleanBuild="false" id="org.eclipse.cdt.build.core.settings.default.builder.180541221" incrementalBuildTarget="" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Gnu Make Builder" superClass="org.eclipse.cdt.build.core.settings.default.builder"/> |
||||
<tool id="org.eclipse.cdt.build.core.settings.holder.libs.791069665" name="holder for library settings" superClass="org.eclipse.cdt.build.core.settings.holder.libs"/> |
||||
<tool id="org.eclipse.cdt.build.core.settings.holder.1894181736" name="Assembly" superClass="org.eclipse.cdt.build.core.settings.holder"> |
||||
<inputType id="org.eclipse.cdt.build.core.settings.holder.inType.588929884" languageId="org.eclipse.cdt.core.assembly" languageName="Assembly" sourceContentType="org.eclipse.cdt.core.asmSource" superClass="org.eclipse.cdt.build.core.settings.holder.inType"/> |
||||
</tool> |
||||
<tool id="org.eclipse.cdt.build.core.settings.holder.303359177" name="GNU C++" superClass="org.eclipse.cdt.build.core.settings.holder"> |
||||
<option id="org.eclipse.cdt.build.core.settings.holder.incpaths.373249505" name="Include Paths" superClass="org.eclipse.cdt.build.core.settings.holder.incpaths" valueType="includePath"> |
||||
<listOptionValue builtIn="false" value=""${NDKROOT}/platforms/android-9/arch-arm/usr/include""/> |
||||
<listOptionValue builtIn="false" value=""${NDKROOT}/sources/cxx-stl/gnu-libstdc++/4.6/include""/> |
||||
<listOptionValue builtIn="false" value=""${NDKROOT}/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi-v7a/include""/> |
||||
<listOptionValue builtIn="false" value=""${ProjDirPath}/../../sdk/native/jni/include""/> |
||||
</option> |
||||
<option id="org.eclipse.cdt.build.core.settings.holder.symbols.1424359063" name="Symbols" superClass="org.eclipse.cdt.build.core.settings.holder.symbols" valueType="definedSymbols"> |
||||
<listOptionValue builtIn="false" value="ANDROID=1"/> |
||||
</option> |
||||
<inputType id="org.eclipse.cdt.build.core.settings.holder.inType.360067880" languageId="org.eclipse.cdt.core.g++" languageName="GNU C++" sourceContentType="org.eclipse.cdt.core.cxxSource,org.eclipse.cdt.core.cxxHeader" superClass="org.eclipse.cdt.build.core.settings.holder.inType"/> |
||||
</tool> |
||||
<tool id="org.eclipse.cdt.build.core.settings.holder.1156172258" name="GNU C" superClass="org.eclipse.cdt.build.core.settings.holder"> |
||||
<option id="org.eclipse.cdt.build.core.settings.holder.incpaths.149918263" name="Include Paths" superClass="org.eclipse.cdt.build.core.settings.holder.incpaths" valueType="includePath"> |
||||
<listOptionValue builtIn="false" value=""${NDKROOT}/platforms/android-9/arch-arm/usr/include""/> |
||||
<listOptionValue builtIn="false" value=""${NDKROOT}/sources/cxx-stl/gnu-libstdc++/4.6/include""/> |
||||
<listOptionValue builtIn="false" value=""${NDKROOT}/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi-v7a/include""/> |
||||
<listOptionValue builtIn="false" value=""${ProjDirPath}/../../sdk/native/jni/include""/> |
||||
</option> |
||||
<option id="org.eclipse.cdt.build.core.settings.holder.symbols.719752707" name="Symbols" superClass="org.eclipse.cdt.build.core.settings.holder.symbols" valueType="definedSymbols"> |
||||
<listOptionValue builtIn="false" value="ANDROID=1"/> |
||||
</option> |
||||
<inputType id="org.eclipse.cdt.build.core.settings.holder.inType.232493949" languageId="org.eclipse.cdt.core.gcc" languageName="GNU C" sourceContentType="org.eclipse.cdt.core.cSource,org.eclipse.cdt.core.cHeader" superClass="org.eclipse.cdt.build.core.settings.holder.inType"/> |
||||
</tool> |
||||
</toolChain> |
||||
</folderInfo> |
||||
<sourceEntries> |
||||
<entry flags="VALUE_WORKSPACE_PATH" kind="sourcePath" name="jni"/> |
||||
</sourceEntries> |
||||
</configuration> |
||||
</storageModule> |
||||
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/> |
||||
</cconfiguration> |
||||
</storageModule> |
||||
<storageModule moduleId="cdtBuildSystem" version="4.0.0"> |
||||
<project id="OpenCV Sample - face-detection.null.1639518055" name="OpenCV Sample - face-detection"/> |
||||
</storageModule> |
||||
<storageModule moduleId="scannerConfiguration"> |
||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/> |
||||
<scannerConfigBuildInfo instanceId="0.129633445"> |
||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/> |
||||
</scannerConfigBuildInfo> |
||||
</storageModule> |
||||
<storageModule moduleId="refreshScope" versionNumber="1"> |
||||
<resource resourceType="PROJECT" workspacePath="/OpenCV Sample - face-detection"/> |
||||
</storageModule> |
||||
<storageModule moduleId="org.eclipse.cdt.internal.ui.text.commentOwnerProjectMappings"/> |
||||
</cproject> |
@ -1,101 +0,0 @@ |
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<projectDescription> |
||||
<name>OpenCV Sample - face-detection</name> |
||||
<comment></comment> |
||||
<projects> |
||||
</projects> |
||||
<buildSpec> |
||||
<buildCommand> |
||||
<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name> |
||||
<triggers>auto,full,incremental,</triggers> |
||||
<arguments> |
||||
<dictionary> |
||||
<key>?name?</key> |
||||
<value></value> |
||||
</dictionary> |
||||
<dictionary> |
||||
<key>org.eclipse.cdt.make.core.append_environment</key> |
||||
<value>true</value> |
||||
</dictionary> |
||||
<dictionary> |
||||
<key>org.eclipse.cdt.make.core.autoBuildTarget</key> |
||||
<value></value> |
||||
</dictionary> |
||||
<dictionary> |
||||
<key>org.eclipse.cdt.make.core.buildArguments</key> |
||||
<value></value> |
||||
</dictionary> |
||||
<dictionary> |
||||
<key>org.eclipse.cdt.make.core.buildCommand</key> |
||||
<value>${NDKROOT}/ndk-build.cmd</value> |
||||
</dictionary> |
||||
<dictionary> |
||||
<key>org.eclipse.cdt.make.core.cleanBuildTarget</key> |
||||
<value>clean</value> |
||||
</dictionary> |
||||
<dictionary> |
||||
<key>org.eclipse.cdt.make.core.contents</key> |
||||
<value>org.eclipse.cdt.make.core.activeConfigSettings</value> |
||||
</dictionary> |
||||
<dictionary> |
||||
<key>org.eclipse.cdt.make.core.enableAutoBuild</key> |
||||
<value>true</value> |
||||
</dictionary> |
||||
<dictionary> |
||||
<key>org.eclipse.cdt.make.core.enableCleanBuild</key> |
||||
<value>false</value> |
||||
</dictionary> |
||||
<dictionary> |
||||
<key>org.eclipse.cdt.make.core.enableFullBuild</key> |
||||
<value>true</value> |
||||
</dictionary> |
||||
<dictionary> |
||||
<key>org.eclipse.cdt.make.core.fullBuildTarget</key> |
||||
<value></value> |
||||
</dictionary> |
||||
<dictionary> |
||||
<key>org.eclipse.cdt.make.core.stopOnError</key> |
||||
<value>true</value> |
||||
</dictionary> |
||||
<dictionary> |
||||
<key>org.eclipse.cdt.make.core.useDefaultBuildCmd</key> |
||||
<value>false</value> |
||||
</dictionary> |
||||
</arguments> |
||||
</buildCommand> |
||||
<buildCommand> |
||||
<name>com.android.ide.eclipse.adt.ResourceManagerBuilder</name> |
||||
<arguments> |
||||
</arguments> |
||||
</buildCommand> |
||||
<buildCommand> |
||||
<name>com.android.ide.eclipse.adt.PreCompilerBuilder</name> |
||||
<arguments> |
||||
</arguments> |
||||
</buildCommand> |
||||
<buildCommand> |
||||
<name>org.eclipse.jdt.core.javabuilder</name> |
||||
<arguments> |
||||
</arguments> |
||||
</buildCommand> |
||||
<buildCommand> |
||||
<name>com.android.ide.eclipse.adt.ApkBuilder</name> |
||||
<arguments> |
||||
</arguments> |
||||
</buildCommand> |
||||
<buildCommand> |
||||
<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name> |
||||
<triggers>full,incremental,</triggers> |
||||
<arguments> |
||||
</arguments> |
||||
</buildCommand> |
||||
</buildSpec> |
||||
<natures> |
||||
<nature>com.android.ide.eclipse.adt.AndroidNature</nature> |
||||
<nature>org.eclipse.jdt.core.javanature</nature> |
||||
<nature>org.eclipse.cdt.core.cnature</nature> |
||||
<nature>org.eclipse.cdt.core.ccnature</nature> |
||||
<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature> |
||||
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature> |
||||
</natures> |
||||
</projectDescription> |
@ -1,4 +0,0 @@ |
||||
eclipse.preferences.version=1 |
||||
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6 |
||||
org.eclipse.jdt.core.compiler.compliance=1.6 |
||||
org.eclipse.jdt.core.compiler.source=1.6 |
@ -1,38 +0,0 @@ |
||||
<?xml version="1.0" encoding="utf-8"?> |
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android" |
||||
package="org.opencv.samples.facedetect" |
||||
android:versionCode="21" |
||||
android:versionName="2.1"> |
||||
|
||||
<application |
||||
android:label="@string/app_name" |
||||
android:icon="@drawable/icon" |
||||
android:theme="@android:style/Theme.NoTitleBar.Fullscreen" > |
||||
|
||||
<activity android:name="FdActivity" |
||||
android:label="@string/app_name" |
||||
android:screenOrientation="landscape" |
||||
android:configChanges="keyboardHidden|orientation"> |
||||
<intent-filter> |
||||
<action android:name="android.intent.action.MAIN" /> |
||||
<category android:name="android.intent.category.LAUNCHER" /> |
||||
</intent-filter> |
||||
</activity> |
||||
</application> |
||||
|
||||
<supports-screens android:resizeable="true" |
||||
android:smallScreens="true" |
||||
android:normalScreens="true" |
||||
android:largeScreens="true" |
||||
android:anyDensity="true" /> |
||||
|
||||
<uses-sdk android:minSdkVersion="8" /> |
||||
|
||||
<uses-permission android:name="android.permission.CAMERA"/> |
||||
|
||||
<uses-feature android:name="android.hardware.camera" android:required="false"/> |
||||
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false"/> |
||||
<uses-feature android:name="android.hardware.camera.front" android:required="false"/> |
||||
<uses-feature android:name="android.hardware.camera.front.autofocus" android:required="false"/> |
||||
|
||||
</manifest> |
@ -1,13 +0,0 @@ |
||||
set(sample example-face-detection) |
||||
|
||||
if(BUILD_FAT_JAVA_LIB) |
||||
set(native_deps opencv_java) |
||||
else() |
||||
set(native_deps opencv_contrib) |
||||
endif() |
||||
|
||||
add_android_project(${sample} "${CMAKE_CURRENT_SOURCE_DIR}" LIBRARY_DEPS ${OpenCV_BINARY_DIR} SDK_TARGET 11 ${ANDROID_SDK_TARGET} NATIVE_DEPS ${native_deps}) |
||||
if(TARGET ${sample}) |
||||
add_dependencies(opencv_android_examples ${sample}) |
||||
endif() |
||||
|
@ -1,16 +0,0 @@ |
||||
LOCAL_PATH := $(call my-dir)
|
||||
|
||||
include $(CLEAR_VARS) |
||||
|
||||
#OPENCV_CAMERA_MODULES:=off
|
||||
#OPENCV_INSTALL_MODULES:=off
|
||||
#OPENCV_LIB_TYPE:=SHARED
|
||||
include ../../sdk/native/jni/OpenCV.mk |
||||
|
||||
LOCAL_SRC_FILES := DetectionBasedTracker_jni.cpp
|
||||
LOCAL_C_INCLUDES += $(LOCAL_PATH)
|
||||
LOCAL_LDLIBS += -llog -ldl
|
||||
|
||||
LOCAL_MODULE := detection_based_tracker
|
||||
|
||||
include $(BUILD_SHARED_LIBRARY) |
@ -1,4 +0,0 @@ |
||||
APP_STL := gnustl_static
|
||||
APP_CPPFLAGS := -frtti -fexceptions
|
||||
APP_ABI := armeabi-v7a
|
||||
APP_PLATFORM := android-8
|
@ -1,249 +0,0 @@ |
||||
#include <DetectionBasedTracker_jni.h> |
||||
#include <opencv2/core/core.hpp> |
||||
#include <opencv2/contrib/detection_based_tracker.hpp> |
||||
|
||||
#include <string> |
||||
#include <vector> |
||||
|
||||
#include <android/log.h> |
||||
|
||||
#define LOG_TAG "FaceDetection/DetectionBasedTracker" |
||||
#define LOGD(...) ((void)__android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__)) |
||||
|
||||
using namespace std; |
||||
using namespace cv; |
||||
|
||||
inline void vector_Rect_to_Mat(vector<Rect>& v_rect, Mat& mat) |
||||
{ |
||||
mat = Mat(v_rect, true); |
||||
} |
||||
|
||||
class CascadeDetectorAdapter: public DetectionBasedTracker::IDetector |
||||
{ |
||||
public: |
||||
CascadeDetectorAdapter(cv::Ptr<cv::CascadeClassifier> detector): |
||||
IDetector(), |
||||
Detector(detector) |
||||
{ |
||||
LOGD("CascadeDetectorAdapter::Detect::Detect"); |
||||
CV_Assert(!detector.empty()); |
||||
} |
||||
|
||||
void detect(const cv::Mat &Image, std::vector<cv::Rect> &objects) |
||||
{ |
||||
LOGD("CascadeDetectorAdapter::Detect: begin"); |
||||
LOGD("CascadeDetectorAdapter::Detect: scaleFactor=%.2f, minNeighbours=%d, minObjSize=(%dx%d), maxObjSize=(%dx%d)", scaleFactor, minNeighbours, minObjSize.width, minObjSize.height, maxObjSize.width, maxObjSize.height); |
||||
Detector->detectMultiScale(Image, objects, scaleFactor, minNeighbours, 0, minObjSize, maxObjSize); |
||||
LOGD("CascadeDetectorAdapter::Detect: end"); |
||||
} |
||||
|
||||
virtual ~CascadeDetectorAdapter() |
||||
{ |
||||
LOGD("CascadeDetectorAdapter::Detect::~Detect"); |
||||
} |
||||
|
||||
private: |
||||
CascadeDetectorAdapter(); |
||||
cv::Ptr<cv::CascadeClassifier> Detector; |
||||
}; |
||||
|
||||
struct DetectorAgregator |
||||
{ |
||||
cv::Ptr<CascadeDetectorAdapter> mainDetector; |
||||
cv::Ptr<CascadeDetectorAdapter> trackingDetector; |
||||
|
||||
cv::Ptr<DetectionBasedTracker> tracker; |
||||
DetectorAgregator(cv::Ptr<CascadeDetectorAdapter>& _mainDetector, cv::Ptr<CascadeDetectorAdapter>& _trackingDetector): |
||||
mainDetector(_mainDetector), |
||||
trackingDetector(_trackingDetector) |
||||
{ |
||||
CV_Assert(!_mainDetector.empty()); |
||||
CV_Assert(!_trackingDetector.empty()); |
||||
|
||||
DetectionBasedTracker::Parameters DetectorParams; |
||||
tracker = new DetectionBasedTracker(mainDetector.ptr<DetectionBasedTracker::IDetector>(), trackingDetector.ptr<DetectionBasedTracker::IDetector>(), DetectorParams); |
||||
} |
||||
}; |
||||
|
||||
JNIEXPORT jlong JNICALL Java_org_opencv_samples_facedetect_DetectionBasedTracker_nativeCreateObject |
||||
(JNIEnv * jenv, jclass, jstring jFileName, jint faceSize) |
||||
{ |
||||
LOGD("Java_org_opencv_samples_facedetect_DetectionBasedTracker_nativeCreateObject enter"); |
||||
const char* jnamestr = jenv->GetStringUTFChars(jFileName, NULL); |
||||
string stdFileName(jnamestr); |
||||
jlong result = 0; |
||||
|
||||
LOGD("Java_org_opencv_samples_facedetect_DetectionBasedTracker_nativeCreateObject"); |
||||
|
||||
try |
||||
{ |
||||
cv::Ptr<CascadeDetectorAdapter> mainDetector = new CascadeDetectorAdapter(new CascadeClassifier(stdFileName)); |
||||
cv::Ptr<CascadeDetectorAdapter> trackingDetector = new CascadeDetectorAdapter(new CascadeClassifier(stdFileName)); |
||||
result = (jlong)new DetectorAgregator(mainDetector, trackingDetector); |
||||
if (faceSize > 0) |
||||
{ |
||||
mainDetector->setMinObjectSize(Size(faceSize, faceSize)); |
||||
//trackingDetector->setMinObjectSize(Size(faceSize, faceSize));
|
||||
} |
||||
} |
||||
catch(cv::Exception& e) |
||||
{ |
||||
LOGD("nativeCreateObject caught cv::Exception: %s", e.what()); |
||||
jclass je = jenv->FindClass("org/opencv/core/CvException"); |
||||
if(!je) |
||||
je = jenv->FindClass("java/lang/Exception"); |
||||
jenv->ThrowNew(je, e.what()); |
||||
} |
||||
catch (...) |
||||
{ |
||||
LOGD("nativeCreateObject caught unknown exception"); |
||||
jclass je = jenv->FindClass("java/lang/Exception"); |
||||
jenv->ThrowNew(je, "Unknown exception in JNI code {Java_org_opencv_samples_facedetect_DetectionBasedTracker_nativeCreateObject(...)}"); |
||||
return 0; |
||||
} |
||||
|
||||
LOGD("Java_org_opencv_samples_facedetect_DetectionBasedTracker_nativeCreateObject exit"); |
||||
return result; |
||||
} |
||||
|
||||
JNIEXPORT void JNICALL Java_org_opencv_samples_facedetect_DetectionBasedTracker_nativeDestroyObject |
||||
(JNIEnv * jenv, jclass, jlong thiz) |
||||
{ |
||||
LOGD("Java_org_opencv_samples_facedetect_DetectionBasedTracker_nativeDestroyObject"); |
||||
|
||||
try |
||||
{ |
||||
if(thiz != 0) |
||||
{ |
||||
((DetectorAgregator*)thiz)->tracker->stop(); |
||||
delete (DetectorAgregator*)thiz; |
||||
} |
||||
} |
||||
catch(cv::Exception& e) |
||||
{ |
||||
LOGD("nativeestroyObject caught cv::Exception: %s", e.what()); |
||||
jclass je = jenv->FindClass("org/opencv/core/CvException"); |
||||
if(!je) |
||||
je = jenv->FindClass("java/lang/Exception"); |
||||
jenv->ThrowNew(je, e.what()); |
||||
} |
||||
catch (...) |
||||
{ |
||||
LOGD("nativeDestroyObject caught unknown exception"); |
||||
jclass je = jenv->FindClass("java/lang/Exception"); |
||||
jenv->ThrowNew(je, "Unknown exception in JNI code {Java_org_opencv_samples_facedetect_DetectionBasedTracker_nativeDestroyObject(...)}"); |
||||
} |
||||
LOGD("Java_org_opencv_samples_facedetect_DetectionBasedTracker_nativeDestroyObject exit"); |
||||
} |
||||
|
||||
JNIEXPORT void JNICALL Java_org_opencv_samples_facedetect_DetectionBasedTracker_nativeStart |
||||
(JNIEnv * jenv, jclass, jlong thiz) |
||||
{ |
||||
LOGD("Java_org_opencv_samples_facedetect_DetectionBasedTracker_nativeStart"); |
||||
|
||||
try |
||||
{ |
||||
((DetectorAgregator*)thiz)->tracker->run(); |
||||
} |
||||
catch(cv::Exception& e) |
||||
{ |
||||
LOGD("nativeStart caught cv::Exception: %s", e.what()); |
||||
jclass je = jenv->FindClass("org/opencv/core/CvException"); |
||||
if(!je) |
||||
je = jenv->FindClass("java/lang/Exception"); |
||||
jenv->ThrowNew(je, e.what()); |
||||
} |
||||
catch (...) |
||||
{ |
||||
LOGD("nativeStart caught unknown exception"); |
||||
jclass je = jenv->FindClass("java/lang/Exception"); |
||||
jenv->ThrowNew(je, "Unknown exception in JNI code {Java_org_opencv_samples_facedetect_DetectionBasedTracker_nativeStart(...)}"); |
||||
} |
||||
LOGD("Java_org_opencv_samples_facedetect_DetectionBasedTracker_nativeStart exit"); |
||||
} |
||||
|
||||
JNIEXPORT void JNICALL Java_org_opencv_samples_facedetect_DetectionBasedTracker_nativeStop |
||||
(JNIEnv * jenv, jclass, jlong thiz) |
||||
{ |
||||
LOGD("Java_org_opencv_samples_facedetect_DetectionBasedTracker_nativeStop"); |
||||
|
||||
try |
||||
{ |
||||
((DetectorAgregator*)thiz)->tracker->stop(); |
||||
} |
||||
catch(cv::Exception& e) |
||||
{ |
||||
LOGD("nativeStop caught cv::Exception: %s", e.what()); |
||||
jclass je = jenv->FindClass("org/opencv/core/CvException"); |
||||
if(!je) |
||||
je = jenv->FindClass("java/lang/Exception"); |
||||
jenv->ThrowNew(je, e.what()); |
||||
} |
||||
catch (...) |
||||
{ |
||||
LOGD("nativeStop caught unknown exception"); |
||||
jclass je = jenv->FindClass("java/lang/Exception"); |
||||
jenv->ThrowNew(je, "Unknown exception in JNI code {Java_org_opencv_samples_facedetect_DetectionBasedTracker_nativeStop(...)}"); |
||||
} |
||||
LOGD("Java_org_opencv_samples_facedetect_DetectionBasedTracker_nativeStop exit"); |
||||
} |
||||
|
||||
JNIEXPORT void JNICALL Java_org_opencv_samples_facedetect_DetectionBasedTracker_nativeSetFaceSize |
||||
(JNIEnv * jenv, jclass, jlong thiz, jint faceSize) |
||||
{ |
||||
LOGD("Java_org_opencv_samples_facedetect_DetectionBasedTracker_nativeSetFaceSize -- BEGIN"); |
||||
|
||||
try |
||||
{ |
||||
if (faceSize > 0) |
||||
{ |
||||
((DetectorAgregator*)thiz)->mainDetector->setMinObjectSize(Size(faceSize, faceSize)); |
||||
//((DetectorAgregator*)thiz)->trackingDetector->setMinObjectSize(Size(faceSize, faceSize));
|
||||
} |
||||
} |
||||
catch(cv::Exception& e) |
||||
{ |
||||
LOGD("nativeStop caught cv::Exception: %s", e.what()); |
||||
jclass je = jenv->FindClass("org/opencv/core/CvException"); |
||||
if(!je) |
||||
je = jenv->FindClass("java/lang/Exception"); |
||||
jenv->ThrowNew(je, e.what()); |
||||
} |
||||
catch (...) |
||||
{ |
||||
LOGD("nativeSetFaceSize caught unknown exception"); |
||||
jclass je = jenv->FindClass("java/lang/Exception"); |
||||
jenv->ThrowNew(je, "Unknown exception in JNI code {Java_org_opencv_samples_facedetect_DetectionBasedTracker_nativeSetFaceSize(...)}"); |
||||
} |
||||
LOGD("Java_org_opencv_samples_facedetect_DetectionBasedTracker_nativeSetFaceSize -- END"); |
||||
} |
||||
|
||||
|
||||
JNIEXPORT void JNICALL Java_org_opencv_samples_facedetect_DetectionBasedTracker_nativeDetect |
||||
(JNIEnv * jenv, jclass, jlong thiz, jlong imageGray, jlong faces) |
||||
{ |
||||
LOGD("Java_org_opencv_samples_facedetect_DetectionBasedTracker_nativeDetect"); |
||||
|
||||
try |
||||
{ |
||||
vector<Rect> RectFaces; |
||||
((DetectorAgregator*)thiz)->tracker->process(*((Mat*)imageGray)); |
||||
((DetectorAgregator*)thiz)->tracker->getObjects(RectFaces); |
||||
*((Mat*)faces) = Mat(RectFaces, true); |
||||
} |
||||
catch(cv::Exception& e) |
||||
{ |
||||
LOGD("nativeCreateObject caught cv::Exception: %s", e.what()); |
||||
jclass je = jenv->FindClass("org/opencv/core/CvException"); |
||||
if(!je) |
||||
je = jenv->FindClass("java/lang/Exception"); |
||||
jenv->ThrowNew(je, e.what()); |
||||
} |
||||
catch (...) |
||||
{ |
||||
LOGD("nativeDetect caught unknown exception"); |
||||
jclass je = jenv->FindClass("java/lang/Exception"); |
||||
jenv->ThrowNew(je, "Unknown exception in JNI code {Java_org_opencv_samples_facedetect_DetectionBasedTracker_nativeDetect(...)}"); |
||||
} |
||||
LOGD("Java_org_opencv_samples_facedetect_DetectionBasedTracker_nativeDetect END"); |
||||
} |
@ -1,61 +0,0 @@ |
||||
/* DO NOT EDIT THIS FILE - it is machine generated */ |
||||
#include <jni.h> |
||||
/* Header for class org_opencv_samples_fd_DetectionBasedTracker */ |
||||
|
||||
#ifndef _Included_org_opencv_samples_fd_DetectionBasedTracker |
||||
#define _Included_org_opencv_samples_fd_DetectionBasedTracker |
||||
#ifdef __cplusplus |
||||
extern "C" { |
||||
#endif |
||||
/*
|
||||
* Class: org_opencv_samples_fd_DetectionBasedTracker |
||||
* Method: nativeCreateObject |
||||
* Signature: (Ljava/lang/String;F)J |
||||
*/ |
||||
JNIEXPORT jlong JNICALL Java_org_opencv_samples_facedetect_DetectionBasedTracker_nativeCreateObject |
||||
(JNIEnv *, jclass, jstring, jint); |
||||
|
||||
/*
|
||||
* Class: org_opencv_samples_fd_DetectionBasedTracker |
||||
* Method: nativeDestroyObject |
||||
* Signature: (J)V |
||||
*/ |
||||
JNIEXPORT void JNICALL Java_org_opencv_samples_facedetect_DetectionBasedTracker_nativeDestroyObject |
||||
(JNIEnv *, jclass, jlong); |
||||
|
||||
/*
|
||||
* Class: org_opencv_samples_fd_DetectionBasedTracker |
||||
* Method: nativeStart |
||||
* Signature: (J)V |
||||
*/ |
||||
JNIEXPORT void JNICALL Java_org_opencv_samples_facedetect_DetectionBasedTracker_nativeStart |
||||
(JNIEnv *, jclass, jlong); |
||||
|
||||
/*
|
||||
* Class: org_opencv_samples_fd_DetectionBasedTracker |
||||
* Method: nativeStop |
||||
* Signature: (J)V |
||||
*/ |
||||
JNIEXPORT void JNICALL Java_org_opencv_samples_facedetect_DetectionBasedTracker_nativeStop |
||||
(JNIEnv *, jclass, jlong); |
||||
|
||||
/*
|
||||
* Class: org_opencv_samples_fd_DetectionBasedTracker |
||||
* Method: nativeSetFaceSize |
||||
* Signature: (JI)V |
||||
*/ |
||||
JNIEXPORT void JNICALL Java_org_opencv_samples_facedetect_DetectionBasedTracker_nativeSetFaceSize |
||||
(JNIEnv *, jclass, jlong, jint); |
||||
|
||||
/*
|
||||
* Class: org_opencv_samples_fd_DetectionBasedTracker |
||||
* Method: nativeDetect |
||||
* Signature: (JJJ)V |
||||
*/ |
||||
JNIEXPORT void JNICALL Java_org_opencv_samples_facedetect_DetectionBasedTracker_nativeDetect |
||||
(JNIEnv *, jclass, jlong, jlong, jlong); |
||||
|
||||
#ifdef __cplusplus |
||||
} |
||||
#endif |
||||
#endif |
Before Width: | Height: | Size: 2.0 KiB |
@ -1,11 +0,0 @@ |
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" |
||||
xmlns:tools="http://schemas.android.com/tools" |
||||
android:layout_width="match_parent" |
||||
android:layout_height="match_parent" > |
||||
|
||||
<org.opencv.android.JavaCameraView |
||||
android:layout_width="fill_parent" |
||||
android:layout_height="fill_parent" |
||||
android:id="@+id/fd_activity_surface_view" /> |
||||
|
||||
</LinearLayout> |
@ -1,4 +0,0 @@ |
||||
<?xml version="1.0" encoding="utf-8"?> |
||||
<resources> |
||||
<string name="app_name">OCV Face Detection</string> |
||||
</resources> |
@ -1,41 +0,0 @@ |
||||
package org.opencv.samples.facedetect; |
||||
|
||||
import org.opencv.core.Mat; |
||||
import org.opencv.core.MatOfRect; |
||||
|
||||
public class DetectionBasedTracker |
||||
{ |
||||
public DetectionBasedTracker(String cascadeName, int minFaceSize) { |
||||
mNativeObj = nativeCreateObject(cascadeName, minFaceSize); |
||||
} |
||||
|
||||
public void start() { |
||||
nativeStart(mNativeObj); |
||||
} |
||||
|
||||
public void stop() { |
||||
nativeStop(mNativeObj); |
||||
} |
||||
|
||||
public void setMinFaceSize(int size) { |
||||
nativeSetFaceSize(mNativeObj, size); |
||||
} |
||||
|
||||
public void detect(Mat imageGray, MatOfRect faces) { |
||||
nativeDetect(mNativeObj, imageGray.getNativeObjAddr(), faces.getNativeObjAddr()); |
||||
} |
||||
|
||||
public void release() { |
||||
nativeDestroyObject(mNativeObj); |
||||
mNativeObj = 0; |
||||
} |
||||
|
||||
private long mNativeObj = 0; |
||||
|
||||
private static native long nativeCreateObject(String cascadeName, int minFaceSize); |
||||
private static native void nativeDestroyObject(long thiz); |
||||
private static native void nativeStart(long thiz); |
||||
private static native void nativeStop(long thiz); |
||||
private static native void nativeSetFaceSize(long thiz, int size); |
||||
private static native void nativeDetect(long thiz, long inputImage, long faces); |
||||
} |
@ -1,66 +0,0 @@ |
||||
CMAKE_MINIMUM_REQUIRED( VERSION 2.8 ) |
||||
|
||||
######################################################### |
||||
# Set project name |
||||
######################################################### |
||||
|
||||
IF( NOT PROJECT_NAME ) |
||||
IF ( NOT "x$ENV{PROJECT_NAME}" STREQUAL "x" ) |
||||
SET( PROJECT_NAME $ENV{PROJECT_NAME} ) |
||||
ELSE() |
||||
SET( PROJECT_NAME hello-android ) |
||||
ENDIF() |
||||
ENDIF() |
||||
SET( PROJECT_NAME ${PROJECT_NAME} CACHE STRING "The name of your project") |
||||
|
||||
PROJECT( ${PROJECT_NAME} ) |
||||
|
||||
######################################################### |
||||
# Find OpenCV |
||||
######################################################### |
||||
|
||||
FIND_PACKAGE( OpenCV REQUIRED ) |
||||
|
||||
######################################################### |
||||
# c/c++ flags, includes and lib dependencies |
||||
######################################################### |
||||
|
||||
#notice the "recycling" of CMAKE_C_FLAGS |
||||
#this is necessary to pick up android flags |
||||
SET( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -pedantic" ) |
||||
SET( CMAKE_CPP_FLAGS "${CMAKE_CPP_FLAGS} -Wall -pedantic" ) |
||||
|
||||
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}) |
||||
|
||||
SET( LIBRARY_DEPS ${OpenCV_LIBS} ) |
||||
IF( ANDROID ) |
||||
SET( LIBRARY_DEPS ${LIBRARY_DEPS} log dl ) |
||||
ENDIF() |
||||
|
||||
######################################################### |
||||
# source files |
||||
######################################################### |
||||
|
||||
FILE( GLOB hdrs "*.h*" ) |
||||
FILE( GLOB srcs "*.cpp" ) |
||||
|
||||
ADD_EXECUTABLE( ${PROJECT_NAME} ${srcs} ) |
||||
TARGET_LINK_LIBRARIES( ${PROJECT_NAME} ${LIBRARY_DEPS} ) |
||||
|
||||
######################################################### |
||||
# Summary report |
||||
######################################################### |
||||
message( STATUS "") |
||||
message( STATUS "General configuration for ${PROJECT_NAME} =====================================") |
||||
message( STATUS "") |
||||
message( STATUS " OpenCV path: ${OpenCV_DIR}") |
||||
message( STATUS " Compiler: ${CMAKE_CXX_COMPILER}") |
||||
message( STATUS " C++ flags (Release): ${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_RELEASE}") |
||||
message( STATUS " C++ flags (Debug): ${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_DEBUG}") |
||||
if(WIN32) |
||||
message( STATUS " Linker flags (Release): ${CMAKE_EXE_LINKER_FLAGS} ${CMAKE_EXE_LINKER_FLAGS_RELEASE}") |
||||
message( STATUS " Linker flags (Debug): ${CMAKE_EXE_LINKER_FLAGS} ${CMAKE_EXE_LINKER_FLAGS_DEBUG}") |
||||
else() |
||||
message( STATUS " Linker flags (Release): ${CMAKE_SHARED_LINKER_FLAGS} ${CMAKE_SHARED_LINKER_FLAGS_RELEASE}") |
||||
message( STATUS " Linker flags (Debug): ${CMAKE_SHARED_LINKER_FLAGS} ${CMAKE_SHARED_LINKER_FLAGS_DEBUG}") |
||||
endif() |
@ -1,9 +0,0 @@ |
||||
@ECHO OFF |
||||
SETLOCAL |
||||
PUSHD %~dp0 |
||||
SET PROJECT_NAME=hello-android |
||||
SET BUILD_DIR=build_armeabi |
||||
SET ANDROID_ABI=armeabi |
||||
CALL ..\..\..\android\scripts\build.cmd %* |
||||
POPD |
||||
ENDLOCAL |
@ -1,13 +0,0 @@ |
||||
#!/bin/sh |
||||
cd `dirname $0` |
||||
|
||||
BUILD_DIR=build_armeabi |
||||
opencv_android=`pwd`/../../../android |
||||
opencv_build_dir=$opencv_android/$BUILD_DIR |
||||
|
||||
mkdir -p $BUILD_DIR |
||||
cd $BUILD_DIR |
||||
|
||||
RUN_CMAKE="cmake -DOpenCV_DIR=$opencv_build_dir -DARM_TARGET=armeabi -DCMAKE_TOOLCHAIN_FILE=$opencv_android/android.toolchain.cmake .." |
||||
echo $RUN_CMAKE |
||||
$RUN_CMAKE |
@ -1,49 +0,0 @@ |
||||
:: this batch file copies compiled executable to the device, |
||||
:: runs it and gets resulting image back to the host |
||||
:: |
||||
:: Here is sample output of successful run: |
||||
:: |
||||
:: 204 KB/s (2887388 bytes in 13.790s) |
||||
:: Hello Android! |
||||
:: 304 KB/s (8723 bytes in 0.028s) |
||||
|
||||
@ECHO OFF |
||||
|
||||
:: enable command extensions |
||||
VERIFY BADVALUE 2>NUL |
||||
SETLOCAL ENABLEEXTENSIONS || (ECHO Unable to enable command extensions. & EXIT \B) |
||||
|
||||
PUSHD %~dp0 |
||||
:: project specific settings |
||||
SET PROJECT_NAME=hello-android |
||||
|
||||
:: try to load config file |
||||
SET CFG_PATH=..\..\..\android\scripts\wincfg.cmd |
||||
IF EXIST %CFG_PATH% CALL %CFG_PATH% |
||||
|
||||
:: check if sdk path defined |
||||
IF NOT DEFINED ANDROID_SDK (ECHO. & ECHO You should set an environment variable ANDROID_SDK to the full path to your copy of Android SDK & GOTO end) |
||||
(PUSHD "%ANDROID_SDK%" 2>NUL && POPD) || (ECHO. & ECHO Directory "%ANDROID_SDK%" specified by ANDROID_SDK variable does not exist & GOTO end) |
||||
SET adb=%ANDROID_SDK%\platform-tools\adb.exe |
||||
|
||||
:: copy file to device (usually takes 10 seconds or more) |
||||
%adb% push .\bin\%PROJECT_NAME% /data/bin/sample/%PROJECT_NAME% || GOTO end |
||||
|
||||
:: set execute permission |
||||
%adb% shell chmod 777 /data/bin/sample/%PROJECT_NAME% || GOTO end |
||||
|
||||
:: execute our application |
||||
%adb% shell /data/bin/sample/%PROJECT_NAME% || GOTO end |
||||
|
||||
:: get image result from device |
||||
%adb% pull /mnt/sdcard/HelloAndroid.png || GOTO end |
||||
|
||||
GOTO end |
||||
|
||||
:: cleanup (comment out GOTO above to enable cleanup) |
||||
%adb% shell rm /data/bin/sample/%PROJECT_NAME% |
||||
%adb% shell rm /mnt/sdcard/HelloAndroid.png |
||||
|
||||
:end |
||||
POPD |
||||
ENDLOCAL |
@ -1,15 +0,0 @@ |
||||
#!/bin/sh |
||||
cd `dirname $0` |
||||
PROJECT_NAME=hello-android |
||||
|
||||
# copy file to device (usually takes 10 seconds or more) |
||||
adb push ./bin/$PROJECT_NAME /data/bin/sample/$PROJECT_NAME || return |
||||
|
||||
# set execute permission |
||||
adb shell chmod 777 /data/bin/sample/$PROJECT_NAME || return |
||||
|
||||
# execute our application |
||||
adb shell /data/bin/sample/$PROJECT_NAME || return |
||||
|
||||
# get image result from device |
||||
adb pull /mnt/sdcard/HelloAndroid.png || return |
@ -1,8 +0,0 @@ |
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<classpath> |
||||
<classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/> |
||||
<classpathentry kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/> |
||||
<classpathentry kind="src" path="src"/> |
||||
<classpathentry kind="src" path="gen"/> |
||||
<classpathentry kind="output" path="bin/classes"/> |
||||
</classpath> |
@ -1,33 +0,0 @@ |
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<projectDescription> |
||||
<name>OpenCV Sample - image-manipulations</name> |
||||
<comment></comment> |
||||
<projects> |
||||
</projects> |
||||
<buildSpec> |
||||
<buildCommand> |
||||
<name>com.android.ide.eclipse.adt.ResourceManagerBuilder</name> |
||||
<arguments> |
||||
</arguments> |
||||
</buildCommand> |
||||
<buildCommand> |
||||
<name>com.android.ide.eclipse.adt.PreCompilerBuilder</name> |
||||
<arguments> |
||||
</arguments> |
||||
</buildCommand> |
||||
<buildCommand> |
||||
<name>org.eclipse.jdt.core.javabuilder</name> |
||||
<arguments> |
||||
</arguments> |
||||
</buildCommand> |
||||
<buildCommand> |
||||
<name>com.android.ide.eclipse.adt.ApkBuilder</name> |
||||
<arguments> |
||||
</arguments> |
||||
</buildCommand> |
||||
</buildSpec> |
||||
<natures> |
||||
<nature>com.android.ide.eclipse.adt.AndroidNature</nature> |
||||
<nature>org.eclipse.jdt.core.javanature</nature> |
||||
</natures> |
||||
</projectDescription> |
@ -1,4 +0,0 @@ |
||||
eclipse.preferences.version=1 |
||||
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6 |
||||
org.eclipse.jdt.core.compiler.compliance=1.6 |
||||
org.eclipse.jdt.core.compiler.source=1.6 |
@ -1,38 +0,0 @@ |
||||
<?xml version="1.0" encoding="utf-8"?> |
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android" |
||||
package="org.opencv.samples.imagemanipulations" |
||||
android:versionCode="21" |
||||
android:versionName="2.1"> |
||||
|
||||
<application |
||||
android:label="@string/app_name" |
||||
android:icon="@drawable/icon" |
||||
android:theme="@android:style/Theme.NoTitleBar.Fullscreen" > |
||||
|
||||
<activity android:name="ImageManipulationsActivity" |
||||
android:label="@string/app_name" |
||||
android:screenOrientation="landscape" |
||||
android:configChanges="keyboardHidden|orientation"> |
||||
<intent-filter> |
||||
<action android:name="android.intent.action.MAIN" /> |
||||
<category android:name="android.intent.category.LAUNCHER" /> |
||||
</intent-filter> |
||||
</activity> |
||||
</application> |
||||
|
||||
<supports-screens android:resizeable="true" |
||||
android:smallScreens="true" |
||||
android:normalScreens="true" |
||||
android:largeScreens="true" |
||||
android:anyDensity="true" /> |
||||
|
||||
<uses-sdk android:minSdkVersion="8" /> |
||||
|
||||
<uses-permission android:name="android.permission.CAMERA"/> |
||||
|
||||
<uses-feature android:name="android.hardware.camera" android:required="false"/> |
||||
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false"/> |
||||
<uses-feature android:name="android.hardware.camera.front" android:required="false"/> |
||||
<uses-feature android:name="android.hardware.camera.front.autofocus" android:required="false"/> |
||||
|
||||
</manifest> |
@ -1,6 +0,0 @@ |
||||
set(sample example-image-manipulations) |
||||
|
||||
add_android_project(${sample} "${CMAKE_CURRENT_SOURCE_DIR}" LIBRARY_DEPS ${OpenCV_BINARY_DIR} SDK_TARGET 11 ${ANDROID_SDK_TARGET}) |
||||
if(TARGET ${sample}) |
||||
add_dependencies(opencv_android_examples ${sample}) |
||||
endif() |
Before Width: | Height: | Size: 2.0 KiB |
@ -1,11 +0,0 @@ |
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" |
||||
xmlns:tools="http://schemas.android.com/tools" |
||||
android:layout_width="match_parent" |
||||
android:layout_height="match_parent" > |
||||
|
||||
<org.opencv.android.JavaCameraView |
||||
android:layout_width="fill_parent" |
||||
android:layout_height="fill_parent" |
||||
android:id="@+id/image_manipulations_activity_surface_view" /> |
||||
|
||||
</LinearLayout> |
@ -1,4 +0,0 @@ |
||||
<?xml version="1.0" encoding="utf-8"?> |
||||
<resources> |
||||
<string name="app_name">OCV Image Manipulations</string> |
||||
</resources> |
@ -1,362 +0,0 @@ |
||||
package org.opencv.samples.imagemanipulations; |
||||
|
||||
import java.util.Arrays; |
||||
|
||||
import org.opencv.android.BaseLoaderCallback; |
||||
import org.opencv.android.CameraBridgeViewBase.CvCameraViewFrame; |
||||
import org.opencv.android.LoaderCallbackInterface; |
||||
import org.opencv.android.OpenCVLoader; |
||||
import org.opencv.core.Core; |
||||
import org.opencv.core.CvType; |
||||
import org.opencv.core.Mat; |
||||
import org.opencv.core.MatOfFloat; |
||||
import org.opencv.core.MatOfInt; |
||||
import org.opencv.core.Point; |
||||
import org.opencv.core.Scalar; |
||||
import org.opencv.core.Size; |
||||
import org.opencv.android.CameraBridgeViewBase; |
||||
import org.opencv.android.CameraBridgeViewBase.CvCameraViewListener2; |
||||
import org.opencv.imgproc.Imgproc; |
||||
|
||||
import android.app.Activity; |
||||
import android.os.Bundle; |
||||
import android.util.Log; |
||||
import android.view.Menu; |
||||
import android.view.MenuItem; |
||||
import android.view.WindowManager; |
||||
|
||||
public class ImageManipulationsActivity extends Activity implements CvCameraViewListener2 { |
||||
private static final String TAG = "OCVSample::Activity"; |
||||
|
||||
public static final int VIEW_MODE_RGBA = 0; |
||||
public static final int VIEW_MODE_HIST = 1; |
||||
public static final int VIEW_MODE_CANNY = 2; |
||||
public static final int VIEW_MODE_SEPIA = 3; |
||||
public static final int VIEW_MODE_SOBEL = 4; |
||||
public static final int VIEW_MODE_ZOOM = 5; |
||||
public static final int VIEW_MODE_PIXELIZE = 6; |
||||
public static final int VIEW_MODE_POSTERIZE = 7; |
||||
|
||||
private MenuItem mItemPreviewRGBA; |
||||
private MenuItem mItemPreviewHist; |
||||
private MenuItem mItemPreviewCanny; |
||||
private MenuItem mItemPreviewSepia; |
||||
private MenuItem mItemPreviewSobel; |
||||
private MenuItem mItemPreviewZoom; |
||||
private MenuItem mItemPreviewPixelize; |
||||
private MenuItem mItemPreviewPosterize; |
||||
private CameraBridgeViewBase mOpenCvCameraView; |
||||
|
||||
private Size mSize0; |
||||
private Size mSizeRgba; |
||||
private Size mSizeRgbaInner; |
||||
|
||||
private Mat mRgba; |
||||
private Mat mGray; |
||||
private Mat mIntermediateMat; |
||||
private Mat mHist; |
||||
private Mat mMat0; |
||||
private MatOfInt mChannels[]; |
||||
private MatOfInt mHistSize; |
||||
private int mHistSizeNum; |
||||
private MatOfFloat mRanges; |
||||
private Scalar mColorsRGB[]; |
||||
private Scalar mColorsHue[]; |
||||
private Scalar mWhilte; |
||||
private Point mP1; |
||||
private Point mP2; |
||||
private float mBuff[]; |
||||
private Mat mRgbaInnerWindow; |
||||
private Mat mGrayInnerWindow; |
||||
private Mat mZoomWindow; |
||||
private Mat mZoomCorner; |
||||
private Mat mSepiaKernel; |
||||
|
||||
public static int viewMode = VIEW_MODE_RGBA; |
||||
|
||||
private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) { |
||||
@Override |
||||
public void onManagerConnected(int status) { |
||||
switch (status) { |
||||
case LoaderCallbackInterface.SUCCESS: |
||||
{ |
||||
Log.i(TAG, "OpenCV loaded successfully"); |
||||
mOpenCvCameraView.enableView(); |
||||
} break; |
||||
default: |
||||
{ |
||||
super.onManagerConnected(status); |
||||
} break; |
||||
} |
||||
} |
||||
}; |
||||
|
||||
public ImageManipulationsActivity() { |
||||
Log.i(TAG, "Instantiated new " + this.getClass()); |
||||
} |
||||
|
||||
/** Called when the activity is first created. */ |
||||
@Override |
||||
public void onCreate(Bundle savedInstanceState) { |
||||
Log.i(TAG, "called onCreate"); |
||||
super.onCreate(savedInstanceState); |
||||
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); |
||||
|
||||
setContentView(R.layout.image_manipulations_surface_view); |
||||
|
||||
mOpenCvCameraView = (CameraBridgeViewBase) findViewById(R.id.image_manipulations_activity_surface_view); |
||||
mOpenCvCameraView.setCvCameraViewListener(this); |
||||
} |
||||
|
||||
@Override |
||||
public void onPause() |
||||
{ |
||||
super.onPause(); |
||||
if (mOpenCvCameraView != null) |
||||
mOpenCvCameraView.disableView(); |
||||
} |
||||
|
||||
@Override |
||||
public void onResume() |
||||
{ |
||||
super.onResume(); |
||||
OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_3, this, mLoaderCallback); |
||||
} |
||||
|
||||
public void onDestroy() { |
||||
super.onDestroy(); |
||||
if (mOpenCvCameraView != null) |
||||
mOpenCvCameraView.disableView(); |
||||
} |
||||
|
||||
@Override |
||||
public boolean onCreateOptionsMenu(Menu menu) { |
||||
Log.i(TAG, "called onCreateOptionsMenu"); |
||||
mItemPreviewRGBA = menu.add("Preview RGBA"); |
||||
mItemPreviewHist = menu.add("Histograms"); |
||||
mItemPreviewCanny = menu.add("Canny"); |
||||
mItemPreviewSepia = menu.add("Sepia"); |
||||
mItemPreviewSobel = menu.add("Sobel"); |
||||
mItemPreviewZoom = menu.add("Zoom"); |
||||
mItemPreviewPixelize = menu.add("Pixelize"); |
||||
mItemPreviewPosterize = menu.add("Posterize"); |
||||
return true; |
||||
} |
||||
|
||||
@Override |
||||
public boolean onOptionsItemSelected(MenuItem item) { |
||||
Log.i(TAG, "called onOptionsItemSelected; selected item: " + item); |
||||
if (item == mItemPreviewRGBA) |
||||
viewMode = VIEW_MODE_RGBA; |
||||
if (item == mItemPreviewHist) |
||||
viewMode = VIEW_MODE_HIST; |
||||
else if (item == mItemPreviewCanny) |
||||
viewMode = VIEW_MODE_CANNY; |
||||
else if (item == mItemPreviewSepia) |
||||
viewMode = VIEW_MODE_SEPIA; |
||||
else if (item == mItemPreviewSobel) |
||||
viewMode = VIEW_MODE_SOBEL; |
||||
else if (item == mItemPreviewZoom) |
||||
viewMode = VIEW_MODE_ZOOM; |
||||
else if (item == mItemPreviewPixelize) |
||||
viewMode = VIEW_MODE_PIXELIZE; |
||||
else if (item == mItemPreviewPosterize) |
||||
viewMode = VIEW_MODE_POSTERIZE; |
||||
return true; |
||||
} |
||||
|
||||
public void onCameraViewStarted(int width, int height) { |
||||
mGray = new Mat(); |
||||
mRgba = new Mat(); |
||||
mIntermediateMat = new Mat(); |
||||
mSize0 = new Size(); |
||||
mHist = new Mat(); |
||||
mChannels = new MatOfInt[] { new MatOfInt(0), new MatOfInt(1), new MatOfInt(2) }; |
||||
mHistSizeNum = 25; |
||||
mBuff = new float[mHistSizeNum]; |
||||
mHistSize = new MatOfInt(mHistSizeNum); |
||||
mRanges = new MatOfFloat(0f, 256f); |
||||
mMat0 = new Mat(); |
||||
mColorsRGB = new Scalar[] { new Scalar(200, 0, 0, 255), new Scalar(0, 200, 0, 255), new Scalar(0, 0, 200, 255) }; |
||||
mColorsHue = new Scalar[] { |
||||
new Scalar(255, 0, 0, 255), new Scalar(255, 60, 0, 255), new Scalar(255, 120, 0, 255), new Scalar(255, 180, 0, 255), new Scalar(255, 240, 0, 255), |
||||
new Scalar(215, 213, 0, 255), new Scalar(150, 255, 0, 255), new Scalar(85, 255, 0, 255), new Scalar(20, 255, 0, 255), new Scalar(0, 255, 30, 255), |
||||
new Scalar(0, 255, 85, 255), new Scalar(0, 255, 150, 255), new Scalar(0, 255, 215, 255), new Scalar(0, 234, 255, 255), new Scalar(0, 170, 255, 255), |
||||
new Scalar(0, 120, 255, 255), new Scalar(0, 60, 255, 255), new Scalar(0, 0, 255, 255), new Scalar(64, 0, 255, 255), new Scalar(120, 0, 255, 255), |
||||
new Scalar(180, 0, 255, 255), new Scalar(255, 0, 255, 255), new Scalar(255, 0, 215, 255), new Scalar(255, 0, 85, 255), new Scalar(255, 0, 0, 255) |
||||
}; |
||||
mWhilte = Scalar.all(255); |
||||
mP1 = new Point(); |
||||
mP2 = new Point(); |
||||
|
||||
// Fill sepia kernel
|
||||
mSepiaKernel = new Mat(4, 4, CvType.CV_32F); |
||||
mSepiaKernel.put(0, 0, /* R */0.189f, 0.769f, 0.393f, 0f); |
||||
mSepiaKernel.put(1, 0, /* G */0.168f, 0.686f, 0.349f, 0f); |
||||
mSepiaKernel.put(2, 0, /* B */0.131f, 0.534f, 0.272f, 0f); |
||||
mSepiaKernel.put(3, 0, /* A */0.000f, 0.000f, 0.000f, 1f); |
||||
} |
||||
|
||||
private void CreateAuxiliaryMats() { |
||||
if (mRgba.empty()) |
||||
return; |
||||
|
||||
mSizeRgba = mRgba.size(); |
||||
|
||||
int rows = (int) mSizeRgba.height; |
||||
int cols = (int) mSizeRgba.width; |
||||
|
||||
int left = cols / 8; |
||||
int top = rows / 8; |
||||
|
||||
int width = cols * 3 / 4; |
||||
int height = rows * 3 / 4; |
||||
|
||||
if (mRgbaInnerWindow == null) |
||||
mRgbaInnerWindow = mRgba.submat(top, top + height, left, left + width); |
||||
mSizeRgbaInner = mRgbaInnerWindow.size(); |
||||
|
||||
if (mGrayInnerWindow == null && !mGray.empty()) |
||||
mGrayInnerWindow = mGray.submat(top, top + height, left, left + width); |
||||
|
||||
if (mZoomCorner == null) |
||||
mZoomCorner = mRgba.submat(0, rows / 2 - rows / 10, 0, cols / 2 - cols / 10); |
||||
|
||||
if (mZoomWindow == null) |
||||
mZoomWindow = mRgba.submat(rows / 2 - 9 * rows / 100, rows / 2 + 9 * rows / 100, cols / 2 - 9 * cols / 100, cols / 2 + 9 * cols / 100); |
||||
} |
||||
|
||||
public void onCameraViewStopped() { |
||||
// Explicitly deallocate Mats
|
||||
if (mZoomWindow != null) |
||||
mZoomWindow.release(); |
||||
if (mZoomCorner != null) |
||||
mZoomCorner.release(); |
||||
if (mGrayInnerWindow != null) |
||||
mGrayInnerWindow.release(); |
||||
if (mRgbaInnerWindow != null) |
||||
mRgbaInnerWindow.release(); |
||||
if (mRgba != null) |
||||
mRgba.release(); |
||||
if (mGray != null) |
||||
mGray.release(); |
||||
if (mIntermediateMat != null) |
||||
mIntermediateMat.release(); |
||||
|
||||
mRgba = null; |
||||
mGray = null; |
||||
mIntermediateMat = null; |
||||
mRgbaInnerWindow = null; |
||||
mGrayInnerWindow = null; |
||||
mZoomCorner = null; |
||||
mZoomWindow = null; |
||||
} |
||||
|
||||
public Mat onCameraFrame(CvCameraViewFrame inputFrame) { |
||||
mRgba = inputFrame.rgba(); |
||||
|
||||
switch (ImageManipulationsActivity.viewMode) { |
||||
case ImageManipulationsActivity.VIEW_MODE_RGBA: |
||||
break; |
||||
|
||||
case ImageManipulationsActivity.VIEW_MODE_HIST: |
||||
if ((mSizeRgba == null) || (mRgba.cols() != mSizeRgba.width) || (mRgba.height() != mSizeRgba.height)) |
||||
CreateAuxiliaryMats(); |
||||
int thikness = (int) (mSizeRgba.width / (mHistSizeNum + 10) / 5); |
||||
if(thikness > 5) thikness = 5; |
||||
int offset = (int) ((mSizeRgba.width - (5*mHistSizeNum + 4*10)*thikness)/2); |
||||
// RGB
|
||||
for(int c=0; c<3; c++) { |
||||
Imgproc.calcHist(Arrays.asList(mRgba), mChannels[c], mMat0, mHist, mHistSize, mRanges); |
||||
Core.normalize(mHist, mHist, mSizeRgba.height/2, 0, Core.NORM_INF); |
||||
mHist.get(0, 0, mBuff); |
||||
for(int h=0; h<mHistSizeNum; h++) { |
||||
mP1.x = mP2.x = offset + (c * (mHistSizeNum + 10) + h) * thikness; |
||||
mP1.y = mSizeRgba.height-1; |
||||
mP2.y = mP1.y - 2 - (int)mBuff[h]; |
||||
Core.line(mRgba, mP1, mP2, mColorsRGB[c], thikness); |
||||
} |
||||
} |
||||
// Value and Hue
|
||||
Imgproc.cvtColor(mRgba, mIntermediateMat, Imgproc.COLOR_RGB2HSV_FULL); |
||||
// Value
|
||||
Imgproc.calcHist(Arrays.asList(mIntermediateMat), mChannels[2], mMat0, mHist, mHistSize, mRanges); |
||||
Core.normalize(mHist, mHist, mSizeRgba.height/2, 0, Core.NORM_INF); |
||||
mHist.get(0, 0, mBuff); |
||||
for(int h=0; h<mHistSizeNum; h++) { |
||||
mP1.x = mP2.x = offset + (3 * (mHistSizeNum + 10) + h) * thikness; |
||||
mP1.y = mSizeRgba.height-1; |
||||
mP2.y = mP1.y - 2 - (int)mBuff[h]; |
||||
Core.line(mRgba, mP1, mP2, mWhilte, thikness); |
||||
} |
||||
// Hue
|
||||
Imgproc.calcHist(Arrays.asList(mIntermediateMat), mChannels[0], mMat0, mHist, mHistSize, mRanges); |
||||
Core.normalize(mHist, mHist, mSizeRgba.height/2, 0, Core.NORM_INF); |
||||
mHist.get(0, 0, mBuff); |
||||
for(int h=0; h<mHistSizeNum; h++) { |
||||
mP1.x = mP2.x = offset + (4 * (mHistSizeNum + 10) + h) * thikness; |
||||
mP1.y = mSizeRgba.height-1; |
||||
mP2.y = mP1.y - 2 - (int)mBuff[h]; |
||||
Core.line(mRgba, mP1, mP2, mColorsHue[h], thikness); |
||||
} |
||||
break; |
||||
|
||||
case ImageManipulationsActivity.VIEW_MODE_CANNY: |
||||
if ((mRgbaInnerWindow == null) || (mGrayInnerWindow == null) || (mRgba.cols() != mSizeRgba.width) || (mRgba.height() != mSizeRgba.height)) |
||||
CreateAuxiliaryMats(); |
||||
Imgproc.Canny(mRgbaInnerWindow, mIntermediateMat, 80, 90); |
||||
Imgproc.cvtColor(mIntermediateMat, mRgbaInnerWindow, Imgproc.COLOR_GRAY2BGRA, 4); |
||||
break; |
||||
|
||||
case ImageManipulationsActivity.VIEW_MODE_SOBEL: |
||||
mGray = inputFrame.gray(); |
||||
|
||||
if ((mRgbaInnerWindow == null) || (mGrayInnerWindow == null) || (mRgba.cols() != mSizeRgba.width) || (mRgba.height() != mSizeRgba.height)) |
||||
CreateAuxiliaryMats(); |
||||
|
||||
Imgproc.Sobel(mGrayInnerWindow, mIntermediateMat, CvType.CV_8U, 1, 1); |
||||
Core.convertScaleAbs(mIntermediateMat, mIntermediateMat, 10, 0); |
||||
Imgproc.cvtColor(mIntermediateMat, mRgbaInnerWindow, Imgproc.COLOR_GRAY2BGRA, 4); |
||||
break; |
||||
|
||||
case ImageManipulationsActivity.VIEW_MODE_SEPIA: |
||||
if ((mRgbaInnerWindow == null) || (mRgba.cols() != mSizeRgba.width) || (mRgba.height() != mSizeRgba.height)) |
||||
CreateAuxiliaryMats(); |
||||
Core.transform(mRgbaInnerWindow, mRgbaInnerWindow, mSepiaKernel); |
||||
break; |
||||
|
||||
case ImageManipulationsActivity.VIEW_MODE_ZOOM: |
||||
if ((mZoomCorner == null) || (mZoomWindow == null) || (mRgba.cols() != mSizeRgba.width) || (mRgba.height() != mSizeRgba.height)) |
||||
CreateAuxiliaryMats(); |
||||
Imgproc.resize(mZoomWindow, mZoomCorner, mZoomCorner.size()); |
||||
|
||||
Size wsize = mZoomWindow.size(); |
||||
Core.rectangle(mZoomWindow, new Point(1, 1), new Point(wsize.width - 2, wsize.height - 2), new Scalar(255, 0, 0, 255), 2); |
||||
break; |
||||
|
||||
case ImageManipulationsActivity.VIEW_MODE_PIXELIZE: |
||||
if ((mRgbaInnerWindow == null) || (mRgba.cols() != mSizeRgba.width) || (mRgba.height() != mSizeRgba.height)) |
||||
CreateAuxiliaryMats(); |
||||
Imgproc.resize(mRgbaInnerWindow, mIntermediateMat, mSize0, 0.1, 0.1, Imgproc.INTER_NEAREST); |
||||
Imgproc.resize(mIntermediateMat, mRgbaInnerWindow, mSizeRgbaInner, 0., 0., Imgproc.INTER_NEAREST); |
||||
break; |
||||
|
||||
case ImageManipulationsActivity.VIEW_MODE_POSTERIZE: |
||||
if ((mRgbaInnerWindow == null) || (mRgba.cols() != mSizeRgba.width) || (mRgba.height() != mSizeRgba.height)) |
||||
CreateAuxiliaryMats(); |
||||
/* |
||||
Imgproc.cvtColor(mRgbaInnerWindow, mIntermediateMat, Imgproc.COLOR_RGBA2RGB); |
||||
Imgproc.pyrMeanShiftFiltering(mIntermediateMat, mIntermediateMat, 5, 50); |
||||
Imgproc.cvtColor(mIntermediateMat, mRgbaInnerWindow, Imgproc.COLOR_RGB2RGBA); |
||||
*/ |
||||
|
||||
Imgproc.Canny(mRgbaInnerWindow, mIntermediateMat, 80, 90); |
||||
mRgbaInnerWindow.setTo(new Scalar(0, 0, 0, 255), mIntermediateMat); |
||||
Core.convertScaleAbs(mRgbaInnerWindow, mIntermediateMat, 1./16, 0); |
||||
Core.convertScaleAbs(mIntermediateMat, mRgbaInnerWindow, 16, 0); |
||||
break; |
||||
} |
||||
|
||||
return mRgba; |
||||
} |
||||
} |
@ -1,8 +0,0 @@ |
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<classpath> |
||||
<classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/> |
||||
<classpathentry kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/> |
||||
<classpathentry kind="src" path="src"/> |
||||
<classpathentry kind="src" path="gen"/> |
||||
<classpathentry kind="output" path="bin/classes"/> |
||||
</classpath> |
@ -1,33 +0,0 @@ |
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<projectDescription> |
||||
<name>OpenCV Tutorial 1 - Camera Preview</name> |
||||
<comment></comment> |
||||
<projects> |
||||
</projects> |
||||
<buildSpec> |
||||
<buildCommand> |
||||
<name>com.android.ide.eclipse.adt.ResourceManagerBuilder</name> |
||||
<arguments> |
||||
</arguments> |
||||
</buildCommand> |
||||
<buildCommand> |
||||
<name>com.android.ide.eclipse.adt.PreCompilerBuilder</name> |
||||
<arguments> |
||||
</arguments> |
||||
</buildCommand> |
||||
<buildCommand> |
||||
<name>org.eclipse.jdt.core.javabuilder</name> |
||||
<arguments> |
||||
</arguments> |
||||
</buildCommand> |
||||
<buildCommand> |
||||
<name>com.android.ide.eclipse.adt.ApkBuilder</name> |
||||
<arguments> |
||||
</arguments> |
||||
</buildCommand> |
||||
</buildSpec> |
||||
<natures> |
||||
<nature>com.android.ide.eclipse.adt.AndroidNature</nature> |
||||
<nature>org.eclipse.jdt.core.javanature</nature> |
||||
</natures> |
||||
</projectDescription> |
@ -1,4 +0,0 @@ |
||||
eclipse.preferences.version=1 |
||||
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6 |
||||
org.eclipse.jdt.core.compiler.compliance=1.6 |
||||
org.eclipse.jdt.core.compiler.source=1.6 |
@ -1,38 +0,0 @@ |
||||
<?xml version="1.0" encoding="utf-8"?> |
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android" |
||||
package="org.opencv.samples.tutorial1" |
||||
android:versionCode="21" |
||||
android:versionName="2.1"> |
||||
|
||||
<application |
||||
android:label="@string/app_name" |
||||
android:icon="@drawable/icon" |
||||
android:theme="@android:style/Theme.NoTitleBar.Fullscreen" > |
||||
|
||||
<activity android:name="Tutorial1Activity" |
||||
android:label="@string/app_name" |
||||
android:screenOrientation="landscape" |
||||
android:configChanges="keyboardHidden|orientation"> |
||||
<intent-filter> |
||||
<action android:name="android.intent.action.MAIN" /> |
||||
<category android:name="android.intent.category.LAUNCHER" /> |
||||
</intent-filter> |
||||
</activity> |
||||
</application> |
||||
|
||||
<supports-screens android:resizeable="true" |
||||
android:smallScreens="true" |
||||
android:normalScreens="true" |
||||
android:largeScreens="true" |
||||
android:anyDensity="true" /> |
||||
|
||||
<uses-sdk android:minSdkVersion="8" /> |
||||
|
||||
<uses-permission android:name="android.permission.CAMERA"/> |
||||
|
||||
<uses-feature android:name="android.hardware.camera" android:required="false"/> |
||||
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false"/> |
||||
<uses-feature android:name="android.hardware.camera.front" android:required="false"/> |
||||
<uses-feature android:name="android.hardware.camera.front.autofocus" android:required="false"/> |
||||
|
||||
</manifest> |
@ -1,6 +0,0 @@ |
||||
set(sample example-tutorial-1-camerapreview) |
||||
|
||||
add_android_project(${sample} "${CMAKE_CURRENT_SOURCE_DIR}" LIBRARY_DEPS ${OpenCV_BINARY_DIR} SDK_TARGET 11 ${ANDROID_SDK_TARGET}) |
||||
if(TARGET ${sample}) |
||||
add_dependencies(opencv_android_examples ${sample}) |
||||
endif() |
Before Width: | Height: | Size: 2.0 KiB |
@ -1,4 +0,0 @@ |
||||
<?xml version="1.0" encoding="utf-8"?> |
||||
<resources> |
||||
<string name="app_name">OCV T1 Preview</string> |
||||
</resources> |
@ -1,131 +0,0 @@ |
||||
package org.opencv.samples.tutorial1; |
||||
|
||||
import org.opencv.android.BaseLoaderCallback; |
||||
import org.opencv.android.CameraBridgeViewBase.CvCameraViewFrame; |
||||
import org.opencv.android.LoaderCallbackInterface; |
||||
import org.opencv.android.OpenCVLoader; |
||||
import org.opencv.core.Mat; |
||||
import org.opencv.android.CameraBridgeViewBase; |
||||
import org.opencv.android.CameraBridgeViewBase.CvCameraViewListener2; |
||||
|
||||
import android.app.Activity; |
||||
import android.os.Bundle; |
||||
import android.util.Log; |
||||
import android.view.Menu; |
||||
import android.view.MenuItem; |
||||
import android.view.SurfaceView; |
||||
import android.view.WindowManager; |
||||
import android.widget.Toast; |
||||
|
||||
public class Tutorial1Activity extends Activity implements CvCameraViewListener2 { |
||||
private static final String TAG = "OCVSample::Activity"; |
||||
|
||||
private CameraBridgeViewBase mOpenCvCameraView; |
||||
private boolean mIsJavaCamera = true; |
||||
private MenuItem mItemSwitchCamera = null; |
||||
|
||||
private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) { |
||||
@Override |
||||
public void onManagerConnected(int status) { |
||||
switch (status) { |
||||
case LoaderCallbackInterface.SUCCESS: |
||||
{ |
||||
Log.i(TAG, "OpenCV loaded successfully"); |
||||
mOpenCvCameraView.enableView(); |
||||
} break; |
||||
default: |
||||
{ |
||||
super.onManagerConnected(status); |
||||
} break; |
||||
} |
||||
} |
||||
}; |
||||
|
||||
public Tutorial1Activity() { |
||||
Log.i(TAG, "Instantiated new " + this.getClass()); |
||||
} |
||||
|
||||
/** Called when the activity is first created. */ |
||||
@Override |
||||
public void onCreate(Bundle savedInstanceState) { |
||||
Log.i(TAG, "called onCreate"); |
||||
super.onCreate(savedInstanceState); |
||||
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); |
||||
|
||||
setContentView(R.layout.tutorial1_surface_view); |
||||
|
||||
if (mIsJavaCamera) |
||||
mOpenCvCameraView = (CameraBridgeViewBase) findViewById(R.id.tutorial1_activity_java_surface_view); |
||||
else |
||||
mOpenCvCameraView = (CameraBridgeViewBase) findViewById(R.id.tutorial1_activity_native_surface_view); |
||||
|
||||
mOpenCvCameraView.setVisibility(SurfaceView.VISIBLE); |
||||
|
||||
mOpenCvCameraView.setCvCameraViewListener(this); |
||||
} |
||||
|
||||
@Override |
||||
public void onPause() |
||||
{ |
||||
super.onPause(); |
||||
if (mOpenCvCameraView != null) |
||||
mOpenCvCameraView.disableView(); |
||||
} |
||||
|
||||
@Override |
||||
public void onResume() |
||||
{ |
||||
super.onResume(); |
||||
OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_3, this, mLoaderCallback); |
||||
} |
||||
|
||||
public void onDestroy() { |
||||
super.onDestroy(); |
||||
if (mOpenCvCameraView != null) |
||||
mOpenCvCameraView.disableView(); |
||||
} |
||||
|
||||
@Override |
||||
public boolean onCreateOptionsMenu(Menu menu) { |
||||
Log.i(TAG, "called onCreateOptionsMenu"); |
||||
mItemSwitchCamera = menu.add("Toggle Native/Java camera"); |
||||
return true; |
||||
} |
||||
|
||||
@Override |
||||
public boolean onOptionsItemSelected(MenuItem item) { |
||||
String toastMesage = new String(); |
||||
Log.i(TAG, "called onOptionsItemSelected; selected item: " + item); |
||||
|
||||
if (item == mItemSwitchCamera) { |
||||
mOpenCvCameraView.setVisibility(SurfaceView.GONE); |
||||
mIsJavaCamera = !mIsJavaCamera; |
||||
|
||||
if (mIsJavaCamera) { |
||||
mOpenCvCameraView = (CameraBridgeViewBase) findViewById(R.id.tutorial1_activity_java_surface_view); |
||||
toastMesage = "Java Camera"; |
||||
} else { |
||||
mOpenCvCameraView = (CameraBridgeViewBase) findViewById(R.id.tutorial1_activity_native_surface_view); |
||||
toastMesage = "Native Camera"; |
||||
} |
||||
|
||||
mOpenCvCameraView.setVisibility(SurfaceView.VISIBLE); |
||||
mOpenCvCameraView.setCvCameraViewListener(this); |
||||
mOpenCvCameraView.enableView(); |
||||
Toast toast = Toast.makeText(this, toastMesage, Toast.LENGTH_LONG); |
||||
toast.show(); |
||||
} |
||||
|
||||
return true; |
||||
} |
||||
|
||||
public void onCameraViewStarted(int width, int height) { |
||||
} |
||||
|
||||
public void onCameraViewStopped() { |
||||
} |
||||
|
||||
public Mat onCameraFrame(CvCameraViewFrame inputFrame) { |
||||
return inputFrame.rgba(); |
||||
} |
||||
} |
@ -1,8 +0,0 @@ |
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<classpath> |
||||
<classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/> |
||||
<classpathentry kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/> |
||||
<classpathentry kind="src" path="src"/> |
||||
<classpathentry kind="src" path="gen"/> |
||||
<classpathentry kind="output" path="bin/classes"/> |
||||
</classpath> |
@ -1,74 +0,0 @@ |
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?> |
||||
<?fileVersion 4.0.0?> |
||||
|
||||
<cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage"> |
||||
<storageModule moduleId="org.eclipse.cdt.core.settings"> |
||||
<cconfiguration id="0.1227367918"> |
||||
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="0.1227367918" moduleId="org.eclipse.cdt.core.settings" name="Default"> |
||||
<externalSettings/> |
||||
<extensions> |
||||
<extension id="org.eclipse.cdt.core.VCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> |
||||
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> |
||||
<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/> |
||||
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> |
||||
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> |
||||
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> |
||||
</extensions> |
||||
</storageModule> |
||||
<storageModule moduleId="cdtBuildSystem" version="4.0.0"> |
||||
<configuration artifactName="${ProjName}" buildProperties="" description="" id="0.1227367918" name="Default" parent="org.eclipse.cdt.build.core.prefbase.cfg"> |
||||
<folderInfo id="0.1227367918." name="/" resourcePath=""> |
||||
<toolChain id="org.eclipse.cdt.build.core.prefbase.toolchain.1817556292" name="No ToolChain" resourceTypeBasedDiscovery="false" superClass="org.eclipse.cdt.build.core.prefbase.toolchain"> |
||||
<targetPlatform id="org.eclipse.cdt.build.core.prefbase.toolchain.1817556292.437475188" name=""/> |
||||
<builder autoBuildTarget="" command="${NDKROOT}/ndk-build.cmd" enableAutoBuild="true" enableCleanBuild="false" id="org.eclipse.cdt.build.core.settings.default.builder.141883337" incrementalBuildTarget="" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Gnu Make Builder" superClass="org.eclipse.cdt.build.core.settings.default.builder"/> |
||||
<tool id="org.eclipse.cdt.build.core.settings.holder.libs.914869649" name="holder for library settings" superClass="org.eclipse.cdt.build.core.settings.holder.libs"/> |
||||
<tool id="org.eclipse.cdt.build.core.settings.holder.1504728878" name="Assembly" superClass="org.eclipse.cdt.build.core.settings.holder"> |
||||
<inputType id="org.eclipse.cdt.build.core.settings.holder.inType.1470189286" languageId="org.eclipse.cdt.core.assembly" languageName="Assembly" sourceContentType="org.eclipse.cdt.core.asmSource" superClass="org.eclipse.cdt.build.core.settings.holder.inType"/> |
||||
</tool> |
||||
<tool id="org.eclipse.cdt.build.core.settings.holder.260316541" name="GNU C++" superClass="org.eclipse.cdt.build.core.settings.holder"> |
||||
<option id="org.eclipse.cdt.build.core.settings.holder.symbols.892620793" superClass="org.eclipse.cdt.build.core.settings.holder.symbols" valueType="definedSymbols"> |
||||
<listOptionValue builtIn="false" value="ANDROID=1"/> |
||||
</option> |
||||
<option id="org.eclipse.cdt.build.core.settings.holder.incpaths.1772035264" superClass="org.eclipse.cdt.build.core.settings.holder.incpaths" valueType="includePath"> |
||||
<listOptionValue builtIn="false" value=""${NDKROOT}/platforms/android-9/arch-arm/usr/include""/> |
||||
<listOptionValue builtIn="false" value=""${NDKROOT}/sources/cxx-stl/gnu-libstdc++/4.6/include""/> |
||||
<listOptionValue builtIn="false" value=""${NDKROOT}/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi-v7a/include""/> |
||||
<listOptionValue builtIn="false" value=""${ProjDirPath}/../../sdk/native/jni/include""/> |
||||
</option> |
||||
<inputType id="org.eclipse.cdt.build.core.settings.holder.inType.159439464" languageId="org.eclipse.cdt.core.g++" languageName="GNU C++" sourceContentType="org.eclipse.cdt.core.cxxSource,org.eclipse.cdt.core.cxxHeader" superClass="org.eclipse.cdt.build.core.settings.holder.inType"/> |
||||
</tool> |
||||
<tool id="org.eclipse.cdt.build.core.settings.holder.1147885196" name="GNU C" superClass="org.eclipse.cdt.build.core.settings.holder"> |
||||
<option id="org.eclipse.cdt.build.core.settings.holder.symbols.1153621931" superClass="org.eclipse.cdt.build.core.settings.holder.symbols" valueType="definedSymbols"> |
||||
<listOptionValue builtIn="false" value="ANDROID=1"/> |
||||
</option> |
||||
<option id="org.eclipse.cdt.build.core.settings.holder.incpaths.1841493632" superClass="org.eclipse.cdt.build.core.settings.holder.incpaths" valueType="includePath"> |
||||
<listOptionValue builtIn="false" value=""${NDKROOT}/platforms/android-9/arch-arm/usr/include""/> |
||||
<listOptionValue builtIn="false" value=""${NDKROOT}/sources/cxx-stl/gnu-libstdc++/4.6/include""/> |
||||
<listOptionValue builtIn="false" value=""${NDKROOT}/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi-v7a/include""/> |
||||
<listOptionValue builtIn="false" value=""${ProjDirPath}/../../sdk/native/jni/include""/> |
||||
</option> |
||||
<inputType id="org.eclipse.cdt.build.core.settings.holder.inType.608739504" languageId="org.eclipse.cdt.core.gcc" languageName="GNU C" sourceContentType="org.eclipse.cdt.core.cSource,org.eclipse.cdt.core.cHeader" superClass="org.eclipse.cdt.build.core.settings.holder.inType"/> |
||||
</tool> |
||||
</toolChain> |
||||
</folderInfo> |
||||
<sourceEntries> |
||||
<entry flags="VALUE_WORKSPACE_PATH" kind="sourcePath" name="jni"/> |
||||
</sourceEntries> |
||||
</configuration> |
||||
</storageModule> |
||||
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/> |
||||
</cconfiguration> |
||||
</storageModule> |
||||
<storageModule moduleId="cdtBuildSystem" version="4.0.0"> |
||||
<project id="OpenCV Tutorial 2 - Mixed Processing OpenCV.null.1819504790" name="OpenCV Tutorial 2 - Mixed Processing"/> |
||||
</storageModule> |
||||
<storageModule moduleId="scannerConfiguration"> |
||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/> |
||||
<scannerConfigBuildInfo instanceId="0.1227367918"> |
||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/> |
||||
</scannerConfigBuildInfo> |
||||
</storageModule> |
||||
<storageModule moduleId="refreshScope" versionNumber="1"> |
||||
<resource resourceType="PROJECT" workspacePath="/OpenCV Tutorial 2 - Mixed Processing"/> |
||||
</storageModule> |
||||
</cproject> |
@ -1,101 +0,0 @@ |
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<projectDescription> |
||||
<name>OpenCV Tutorial 2 - Mixed Processing</name> |
||||
<comment></comment> |
||||
<projects> |
||||
</projects> |
||||
<buildSpec> |
||||
<buildCommand> |
||||
<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name> |
||||
<triggers>auto,full,incremental,</triggers> |
||||
<arguments> |
||||
<dictionary> |
||||
<key>?name?</key> |
||||
<value></value> |
||||
</dictionary> |
||||
<dictionary> |
||||
<key>org.eclipse.cdt.make.core.append_environment</key> |
||||
<value>true</value> |
||||
</dictionary> |
||||
<dictionary> |
||||
<key>org.eclipse.cdt.make.core.autoBuildTarget</key> |
||||
<value></value> |
||||
</dictionary> |
||||
<dictionary> |
||||
<key>org.eclipse.cdt.make.core.buildArguments</key> |
||||
<value></value> |
||||
</dictionary> |
||||
<dictionary> |
||||
<key>org.eclipse.cdt.make.core.buildCommand</key> |
||||
<value>${NDKROOT}/ndk-build.cmd</value> |
||||
</dictionary> |
||||
<dictionary> |
||||
<key>org.eclipse.cdt.make.core.cleanBuildTarget</key> |
||||
<value>clean</value> |
||||
</dictionary> |
||||
<dictionary> |
||||
<key>org.eclipse.cdt.make.core.contents</key> |
||||
<value>org.eclipse.cdt.make.core.activeConfigSettings</value> |
||||
</dictionary> |
||||
<dictionary> |
||||
<key>org.eclipse.cdt.make.core.enableAutoBuild</key> |
||||
<value>true</value> |
||||
</dictionary> |
||||
<dictionary> |
||||
<key>org.eclipse.cdt.make.core.enableCleanBuild</key> |
||||
<value>false</value> |
||||
</dictionary> |
||||
<dictionary> |
||||
<key>org.eclipse.cdt.make.core.enableFullBuild</key> |
||||
<value>true</value> |
||||
</dictionary> |
||||
<dictionary> |
||||
<key>org.eclipse.cdt.make.core.fullBuildTarget</key> |
||||
<value></value> |
||||
</dictionary> |
||||
<dictionary> |
||||
<key>org.eclipse.cdt.make.core.stopOnError</key> |
||||
<value>true</value> |
||||
</dictionary> |
||||
<dictionary> |
||||
<key>org.eclipse.cdt.make.core.useDefaultBuildCmd</key> |
||||
<value>false</value> |
||||
</dictionary> |
||||
</arguments> |
||||
</buildCommand> |
||||
<buildCommand> |
||||
<name>com.android.ide.eclipse.adt.ResourceManagerBuilder</name> |
||||
<arguments> |
||||
</arguments> |
||||
</buildCommand> |
||||
<buildCommand> |
||||
<name>com.android.ide.eclipse.adt.PreCompilerBuilder</name> |
||||
<arguments> |
||||
</arguments> |
||||
</buildCommand> |
||||
<buildCommand> |
||||
<name>org.eclipse.jdt.core.javabuilder</name> |
||||
<arguments> |
||||
</arguments> |
||||
</buildCommand> |
||||
<buildCommand> |
||||
<name>com.android.ide.eclipse.adt.ApkBuilder</name> |
||||
<arguments> |
||||
</arguments> |
||||
</buildCommand> |
||||
<buildCommand> |
||||
<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name> |
||||
<triggers>full,incremental,</triggers> |
||||
<arguments> |
||||
</arguments> |
||||
</buildCommand> |
||||
</buildSpec> |
||||
<natures> |
||||
<nature>com.android.ide.eclipse.adt.AndroidNature</nature> |
||||
<nature>org.eclipse.jdt.core.javanature</nature> |
||||
<nature>org.eclipse.cdt.core.cnature</nature> |
||||
<nature>org.eclipse.cdt.core.ccnature</nature> |
||||
<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature> |
||||
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature> |
||||
</natures> |
||||
</projectDescription> |
@ -1,4 +0,0 @@ |
||||
eclipse.preferences.version=1 |
||||
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6 |
||||
org.eclipse.jdt.core.compiler.compliance=1.6 |
||||
org.eclipse.jdt.core.compiler.source=1.6 |
@ -1,38 +0,0 @@ |
||||
<?xml version="1.0" encoding="utf-8"?> |
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android" |
||||
package="org.opencv.samples.tutorial2" |
||||
android:versionCode="21" |
||||
android:versionName="2.1"> |
||||
|
||||
<application |
||||
android:label="@string/app_name" |
||||
android:icon="@drawable/icon" |
||||
android:theme="@android:style/Theme.NoTitleBar.Fullscreen" > |
||||
|
||||
<activity android:name="Tutorial2Activity" |
||||
android:label="@string/app_name" |
||||
android:screenOrientation="landscape" |
||||
android:configChanges="keyboardHidden|orientation"> |
||||
<intent-filter> |
||||
<action android:name="android.intent.action.MAIN" /> |
||||
<category android:name="android.intent.category.LAUNCHER" /> |
||||
</intent-filter> |
||||
</activity> |
||||
</application> |
||||
|
||||
<supports-screens android:resizeable="true" |
||||
android:smallScreens="true" |
||||
android:normalScreens="true" |
||||
android:largeScreens="true" |
||||
android:anyDensity="true" /> |
||||
|
||||
<uses-sdk android:minSdkVersion="8" /> |
||||
|
||||
<uses-permission android:name="android.permission.CAMERA"/> |
||||
|
||||
<uses-feature android:name="android.hardware.camera" android:required="false"/> |
||||
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false"/> |
||||
<uses-feature android:name="android.hardware.camera.front" android:required="false"/> |
||||
<uses-feature android:name="android.hardware.camera.front.autofocus" android:required="false"/> |
||||
|
||||
</manifest> |
@ -1,12 +0,0 @@ |
||||
set(sample example-tutorial-2-mixedprocessing) |
||||
|
||||
if(BUILD_FAT_JAVA_LIB) |
||||
set(native_deps opencv_java) |
||||
else() |
||||
set(native_deps opencv_features2d) |
||||
endif() |
||||
|
||||
add_android_project(${sample} "${CMAKE_CURRENT_SOURCE_DIR}" LIBRARY_DEPS ${OpenCV_BINARY_DIR} SDK_TARGET 11 ${ANDROID_SDK_TARGET} NATIVE_DEPS ${native_deps}) |
||||
if(TARGET ${sample}) |
||||
add_dependencies(opencv_android_examples ${sample}) |
||||
endif() |
@ -1,11 +0,0 @@ |
||||
LOCAL_PATH := $(call my-dir)
|
||||
|
||||
include $(CLEAR_VARS) |
||||
|
||||
include ../../sdk/native/jni/OpenCV.mk |
||||
|
||||
LOCAL_MODULE := mixed_sample
|
||||
LOCAL_SRC_FILES := jni_part.cpp
|
||||
LOCAL_LDLIBS += -llog -ldl
|
||||
|
||||
include $(BUILD_SHARED_LIBRARY) |
@ -1,4 +0,0 @@ |
||||
APP_STL := gnustl_static
|
||||
APP_CPPFLAGS := -frtti -fexceptions
|
||||
APP_ABI := armeabi-v7a
|
||||
APP_PLATFORM := android-8
|
Before Width: | Height: | Size: 2.0 KiB |
@ -1,11 +0,0 @@ |
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" |
||||
xmlns:tools="http://schemas.android.com/tools" |
||||
android:layout_width="match_parent" |
||||
android:layout_height="match_parent" > |
||||
|
||||
<org.opencv.android.JavaCameraView |
||||
android:layout_width="fill_parent" |
||||
android:layout_height="fill_parent" |
||||
android:id="@+id/tutorial2_activity_surface_view" /> |
||||
|
||||
</LinearLayout> |
@ -1,4 +0,0 @@ |
||||
<?xml version="1.0" encoding="utf-8"?> |
||||
<resources> |
||||
<string name="app_name">OCV T2 Mixed Processing</string> |
||||
</resources> |
@ -1,166 +0,0 @@ |
||||
package org.opencv.samples.tutorial2; |
||||
|
||||
import org.opencv.android.BaseLoaderCallback; |
||||
import org.opencv.android.CameraBridgeViewBase.CvCameraViewFrame; |
||||
import org.opencv.android.LoaderCallbackInterface; |
||||
import org.opencv.android.OpenCVLoader; |
||||
import org.opencv.core.CvType; |
||||
import org.opencv.core.Mat; |
||||
import org.opencv.android.CameraBridgeViewBase; |
||||
import org.opencv.android.CameraBridgeViewBase.CvCameraViewListener2; |
||||
import org.opencv.imgproc.Imgproc; |
||||
|
||||
import android.app.Activity; |
||||
import android.os.Bundle; |
||||
import android.util.Log; |
||||
import android.view.Menu; |
||||
import android.view.MenuItem; |
||||
import android.view.WindowManager; |
||||
|
||||
public class Tutorial2Activity extends Activity implements CvCameraViewListener2 { |
||||
private static final String TAG = "OCVSample::Activity"; |
||||
|
||||
private static final int VIEW_MODE_RGBA = 0; |
||||
private static final int VIEW_MODE_GRAY = 1; |
||||
private static final int VIEW_MODE_CANNY = 2; |
||||
private static final int VIEW_MODE_FEATURES = 5; |
||||
|
||||
private int mViewMode; |
||||
private Mat mRgba; |
||||
private Mat mIntermediateMat; |
||||
private Mat mGray; |
||||
|
||||
private MenuItem mItemPreviewRGBA; |
||||
private MenuItem mItemPreviewGray; |
||||
private MenuItem mItemPreviewCanny; |
||||
private MenuItem mItemPreviewFeatures; |
||||
|
||||
private CameraBridgeViewBase mOpenCvCameraView; |
||||
|
||||
private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) { |
||||
@Override |
||||
public void onManagerConnected(int status) { |
||||
switch (status) { |
||||
case LoaderCallbackInterface.SUCCESS: |
||||
{ |
||||
Log.i(TAG, "OpenCV loaded successfully"); |
||||
|
||||
// Load native library after(!) OpenCV initialization
|
||||
System.loadLibrary("mixed_sample"); |
||||
|
||||
mOpenCvCameraView.enableView(); |
||||
} break; |
||||
default: |
||||
{ |
||||
super.onManagerConnected(status); |
||||
} break; |
||||
} |
||||
} |
||||
}; |
||||
|
||||
public Tutorial2Activity() { |
||||
Log.i(TAG, "Instantiated new " + this.getClass()); |
||||
} |
||||
|
||||
/** Called when the activity is first created. */ |
||||
@Override |
||||
public void onCreate(Bundle savedInstanceState) { |
||||
Log.i(TAG, "called onCreate"); |
||||
super.onCreate(savedInstanceState); |
||||
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); |
||||
|
||||
setContentView(R.layout.tutorial2_surface_view); |
||||
|
||||
mOpenCvCameraView = (CameraBridgeViewBase) findViewById(R.id.tutorial2_activity_surface_view); |
||||
mOpenCvCameraView.setCvCameraViewListener(this); |
||||
} |
||||
|
||||
@Override |
||||
public boolean onCreateOptionsMenu(Menu menu) { |
||||
Log.i(TAG, "called onCreateOptionsMenu"); |
||||
mItemPreviewRGBA = menu.add("Preview RGBA"); |
||||
mItemPreviewGray = menu.add("Preview GRAY"); |
||||
mItemPreviewCanny = menu.add("Canny"); |
||||
mItemPreviewFeatures = menu.add("Find features"); |
||||
return true; |
||||
} |
||||
|
||||
@Override |
||||
public void onPause() |
||||
{ |
||||
super.onPause(); |
||||
if (mOpenCvCameraView != null) |
||||
mOpenCvCameraView.disableView(); |
||||
} |
||||
|
||||
@Override |
||||
public void onResume() |
||||
{ |
||||
super.onResume(); |
||||
OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_3, this, mLoaderCallback); |
||||
} |
||||
|
||||
public void onDestroy() { |
||||
super.onDestroy(); |
||||
if (mOpenCvCameraView != null) |
||||
mOpenCvCameraView.disableView(); |
||||
} |
||||
|
||||
public void onCameraViewStarted(int width, int height) { |
||||
mRgba = new Mat(height, width, CvType.CV_8UC4); |
||||
mIntermediateMat = new Mat(height, width, CvType.CV_8UC4); |
||||
mGray = new Mat(height, width, CvType.CV_8UC1); |
||||
} |
||||
|
||||
public void onCameraViewStopped() { |
||||
mRgba.release(); |
||||
mGray.release(); |
||||
mIntermediateMat.release(); |
||||
} |
||||
|
||||
public Mat onCameraFrame(CvCameraViewFrame inputFrame) { |
||||
final int viewMode = mViewMode; |
||||
switch (viewMode) { |
||||
case VIEW_MODE_GRAY: |
||||
// input frame has gray scale format
|
||||
Imgproc.cvtColor(inputFrame.gray(), mRgba, Imgproc.COLOR_GRAY2RGBA, 4); |
||||
break; |
||||
case VIEW_MODE_RGBA: |
||||
// input frame has RBGA format
|
||||
mRgba = inputFrame.rgba(); |
||||
break; |
||||
case VIEW_MODE_CANNY: |
||||
// input frame has gray scale format
|
||||
mRgba = inputFrame.rgba(); |
||||
Imgproc.Canny(inputFrame.gray(), mIntermediateMat, 80, 100); |
||||
Imgproc.cvtColor(mIntermediateMat, mRgba, Imgproc.COLOR_GRAY2RGBA, 4); |
||||
break; |
||||
case VIEW_MODE_FEATURES: |
||||
// input frame has RGBA format
|
||||
mRgba = inputFrame.rgba(); |
||||
mGray = inputFrame.gray(); |
||||
FindFeatures(mGray.getNativeObjAddr(), mRgba.getNativeObjAddr()); |
||||
break; |
||||
} |
||||
|
||||
return mRgba; |
||||
} |
||||
|
||||
public boolean onOptionsItemSelected(MenuItem item) { |
||||
Log.i(TAG, "called onOptionsItemSelected; selected item: " + item); |
||||
|
||||
if (item == mItemPreviewRGBA) { |
||||
mViewMode = VIEW_MODE_RGBA; |
||||
} else if (item == mItemPreviewGray) { |
||||
mViewMode = VIEW_MODE_GRAY; |
||||
} else if (item == mItemPreviewCanny) { |
||||
mViewMode = VIEW_MODE_CANNY; |
||||
} else if (item == mItemPreviewFeatures) { |
||||
mViewMode = VIEW_MODE_FEATURES; |
||||
} |
||||
|
||||
return true; |
||||
} |
||||
|
||||
public native void FindFeatures(long matAddrGr, long matAddrRgba); |
||||
} |
@ -1,8 +0,0 @@ |
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<classpath> |
||||
<classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/> |
||||
<classpathentry kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/> |
||||
<classpathentry kind="src" path="src"/> |
||||
<classpathentry kind="src" path="gen"/> |
||||
<classpathentry kind="output" path="bin/classes"/> |
||||
</classpath> |
@ -1,33 +0,0 @@ |
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<projectDescription> |
||||
<name>OpenCV Tutorial 3 - Camera Control</name> |
||||
<comment></comment> |
||||
<projects> |
||||
</projects> |
||||
<buildSpec> |
||||
<buildCommand> |
||||
<name>com.android.ide.eclipse.adt.ResourceManagerBuilder</name> |
||||
<arguments> |
||||
</arguments> |
||||
</buildCommand> |
||||
<buildCommand> |
||||
<name>com.android.ide.eclipse.adt.PreCompilerBuilder</name> |
||||
<arguments> |
||||
</arguments> |
||||
</buildCommand> |
||||
<buildCommand> |
||||
<name>org.eclipse.jdt.core.javabuilder</name> |
||||
<arguments> |
||||
</arguments> |
||||
</buildCommand> |
||||
<buildCommand> |
||||
<name>com.android.ide.eclipse.adt.ApkBuilder</name> |
||||
<arguments> |
||||
</arguments> |
||||
</buildCommand> |
||||
</buildSpec> |
||||
<natures> |
||||
<nature>com.android.ide.eclipse.adt.AndroidNature</nature> |
||||
<nature>org.eclipse.jdt.core.javanature</nature> |
||||
</natures> |
||||
</projectDescription> |
@ -1,4 +0,0 @@ |
||||
eclipse.preferences.version=1 |
||||
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6 |
||||
org.eclipse.jdt.core.compiler.compliance=1.6 |
||||
org.eclipse.jdt.core.compiler.source=1.6 |
@ -1,39 +0,0 @@ |
||||
<?xml version="1.0" encoding="utf-8"?> |
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android" |
||||
package="org.opencv.samples.tutorial3" |
||||
android:versionCode="21" |
||||
android:versionName="2.1"> |
||||
|
||||
<application |
||||
android:label="@string/app_name" |
||||
android:icon="@drawable/icon" |
||||
android:theme="@android:style/Theme.NoTitleBar.Fullscreen" > |
||||
|
||||
<activity android:name="Tutorial3Activity" |
||||
android:label="@string/app_name" |
||||
android:screenOrientation="landscape" |
||||
android:configChanges="keyboardHidden|orientation"> |
||||
<intent-filter> |
||||
<action android:name="android.intent.action.MAIN" /> |
||||
<category android:name="android.intent.category.LAUNCHER" /> |
||||
</intent-filter> |
||||
</activity> |
||||
</application> |
||||
|
||||
<supports-screens android:resizeable="true" |
||||
android:smallScreens="true" |
||||
android:normalScreens="true" |
||||
android:largeScreens="true" |
||||
android:anyDensity="true" /> |
||||
|
||||
<uses-sdk android:minSdkVersion="8" /> |
||||
|
||||
<uses-permission android:name="android.permission.CAMERA"/> |
||||
|
||||
<uses-feature android:name="android.hardware.camera" android:required="false"/> |
||||
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false"/> |
||||
<uses-feature android:name="android.hardware.camera.front" android:required="false"/> |
||||
<uses-feature android:name="android.hardware.camera.front.autofocus" android:required="false"/> |
||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> |
||||
|
||||
</manifest> |
@ -1,6 +0,0 @@ |
||||
set(sample example-tutorial-3-cameracontrol) |
||||
|
||||
add_android_project(${sample} "${CMAKE_CURRENT_SOURCE_DIR}" LIBRARY_DEPS ${OpenCV_BINARY_DIR} SDK_TARGET 11 ${ANDROID_SDK_TARGET}) |
||||
if(TARGET ${sample}) |
||||
add_dependencies(opencv_android_examples ${sample}) |
||||
endif() |
Before Width: | Height: | Size: 2.0 KiB |
@ -1,4 +0,0 @@ |
||||
<?xml version="1.0" encoding="utf-8"?> |
||||
<resources> |
||||
<string name="app_name">OCV T3 Camera Control</string> |
||||
</resources> |
@ -1,178 +0,0 @@ |
||||
package org.opencv.samples.tutorial3; |
||||
|
||||
import java.text.SimpleDateFormat; |
||||
import java.util.Date; |
||||
import java.util.List; |
||||
import java.util.ListIterator; |
||||
|
||||
import org.opencv.android.BaseLoaderCallback; |
||||
import org.opencv.android.CameraBridgeViewBase.CvCameraViewFrame; |
||||
import org.opencv.android.LoaderCallbackInterface; |
||||
import org.opencv.android.OpenCVLoader; |
||||
import org.opencv.core.Mat; |
||||
import org.opencv.android.CameraBridgeViewBase.CvCameraViewListener2; |
||||
|
||||
import android.annotation.SuppressLint; |
||||
import android.app.Activity; |
||||
import android.hardware.Camera.Size; |
||||
import android.os.Bundle; |
||||
import android.os.Environment; |
||||
import android.util.Log; |
||||
import android.view.Menu; |
||||
import android.view.MenuItem; |
||||
import android.view.MotionEvent; |
||||
import android.view.SubMenu; |
||||
import android.view.SurfaceView; |
||||
import android.view.View; |
||||
import android.view.View.OnTouchListener; |
||||
import android.view.WindowManager; |
||||
import android.widget.Toast; |
||||
|
||||
public class Tutorial3Activity extends Activity implements CvCameraViewListener2, OnTouchListener { |
||||
private static final String TAG = "OCVSample::Activity"; |
||||
|
||||
private Tutorial3View mOpenCvCameraView; |
||||
private List<Size> mResolutionList; |
||||
private MenuItem[] mEffectMenuItems; |
||||
private SubMenu mColorEffectsMenu; |
||||
private MenuItem[] mResolutionMenuItems; |
||||
private SubMenu mResolutionMenu; |
||||
|
||||
private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) { |
||||
@Override |
||||
public void onManagerConnected(int status) { |
||||
switch (status) { |
||||
case LoaderCallbackInterface.SUCCESS: |
||||
{ |
||||
Log.i(TAG, "OpenCV loaded successfully"); |
||||
mOpenCvCameraView.enableView(); |
||||
mOpenCvCameraView.setOnTouchListener(Tutorial3Activity.this); |
||||
} break; |
||||
default: |
||||
{ |
||||
super.onManagerConnected(status); |
||||
} break; |
||||
} |
||||
} |
||||
}; |
||||
|
||||
public Tutorial3Activity() { |
||||
Log.i(TAG, "Instantiated new " + this.getClass()); |
||||
} |
||||
|
||||
/** Called when the activity is first created. */ |
||||
@Override |
||||
public void onCreate(Bundle savedInstanceState) { |
||||
Log.i(TAG, "called onCreate"); |
||||
super.onCreate(savedInstanceState); |
||||
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); |
||||
|
||||
setContentView(R.layout.tutorial3_surface_view); |
||||
|
||||
mOpenCvCameraView = (Tutorial3View) findViewById(R.id.tutorial3_activity_java_surface_view); |
||||
|
||||
mOpenCvCameraView.setVisibility(SurfaceView.VISIBLE); |
||||
|
||||
mOpenCvCameraView.setCvCameraViewListener(this); |
||||
} |
||||
|
||||
@Override |
||||
public void onPause() |
||||
{ |
||||
super.onPause(); |
||||
if (mOpenCvCameraView != null) |
||||
mOpenCvCameraView.disableView(); |
||||
} |
||||
|
||||
@Override |
||||
public void onResume() |
||||
{ |
||||
super.onResume(); |
||||
OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_3, this, mLoaderCallback); |
||||
} |
||||
|
||||
public void onDestroy() { |
||||
super.onDestroy(); |
||||
if (mOpenCvCameraView != null) |
||||
mOpenCvCameraView.disableView(); |
||||
} |
||||
|
||||
public void onCameraViewStarted(int width, int height) { |
||||
} |
||||
|
||||
public void onCameraViewStopped() { |
||||
} |
||||
|
||||
public Mat onCameraFrame(CvCameraViewFrame inputFrame) { |
||||
return inputFrame.rgba(); |
||||
} |
||||
|
||||
@Override |
||||
public boolean onCreateOptionsMenu(Menu menu) { |
||||
List<String> effects = mOpenCvCameraView.getEffectList(); |
||||
|
||||
if (effects == null) { |
||||
Log.e(TAG, "Color effects are not supported by device!"); |
||||
return true; |
||||
} |
||||
|
||||
mColorEffectsMenu = menu.addSubMenu("Color Effect"); |
||||
mEffectMenuItems = new MenuItem[effects.size()]; |
||||
|
||||
int idx = 0; |
||||
ListIterator<String> effectItr = effects.listIterator(); |
||||
while(effectItr.hasNext()) { |
||||
String element = effectItr.next(); |
||||
mEffectMenuItems[idx] = mColorEffectsMenu.add(1, idx, Menu.NONE, element); |
||||
idx++; |
||||
} |
||||
|
||||
mResolutionMenu = menu.addSubMenu("Resolution"); |
||||
mResolutionList = mOpenCvCameraView.getResolutionList(); |
||||
mResolutionMenuItems = new MenuItem[mResolutionList.size()]; |
||||
|
||||
ListIterator<Size> resolutionItr = mResolutionList.listIterator(); |
||||
idx = 0; |
||||
while(resolutionItr.hasNext()) { |
||||
Size element = resolutionItr.next(); |
||||
mResolutionMenuItems[idx] = mResolutionMenu.add(2, idx, Menu.NONE, |
||||
Integer.valueOf(element.width).toString() + "x" + Integer.valueOf(element.height).toString()); |
||||
idx++; |
||||
} |
||||
|
||||
return true; |
||||
} |
||||
|
||||
public boolean onOptionsItemSelected(MenuItem item) { |
||||
Log.i(TAG, "called onOptionsItemSelected; selected item: " + item); |
||||
if (item.getGroupId() == 1) |
||||
{ |
||||
mOpenCvCameraView.setEffect((String) item.getTitle()); |
||||
Toast.makeText(this, mOpenCvCameraView.getEffect(), Toast.LENGTH_SHORT).show(); |
||||
} |
||||
else if (item.getGroupId() == 2) |
||||
{ |
||||
int id = item.getItemId(); |
||||
Size resolution = mResolutionList.get(id); |
||||
mOpenCvCameraView.setResolution(resolution); |
||||
resolution = mOpenCvCameraView.getResolution(); |
||||
String caption = Integer.valueOf(resolution.width).toString() + "x" + Integer.valueOf(resolution.height).toString(); |
||||
Toast.makeText(this, caption, Toast.LENGTH_SHORT).show(); |
||||
} |
||||
|
||||
return true; |
||||
} |
||||
|
||||
@SuppressLint("SimpleDateFormat") |
||||
@Override |
||||
public boolean onTouch(View v, MotionEvent event) { |
||||
Log.i(TAG,"onTouch event"); |
||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd_HH-mm-ss"); |
||||
String currentDateandTime = sdf.format(new Date()); |
||||
String fileName = Environment.getExternalStorageDirectory().getPath() + |
||||
"/sample_picture_" + currentDateandTime + ".jpg"; |
||||
mOpenCvCameraView.takePicture(fileName); |
||||
Toast.makeText(this, fileName + " saved", Toast.LENGTH_SHORT).show(); |
||||
return false; |
||||
} |
||||
} |
@ -1,60 +0,0 @@ |
||||
# ---------------------------------------------------------------------------- |
||||
# CMake file for C samples. See root CMakeLists.txt |
||||
# |
||||
# ---------------------------------------------------------------------------- |
||||
|
||||
SET(OPENCV_C_SAMPLES_REQUIRED_DEPS opencv_core opencv_flann opencv_imgproc |
||||
opencv_highgui opencv_ml opencv_video opencv_objdetect opencv_photo opencv_nonfree |
||||
opencv_features2d opencv_calib3d opencv_legacy opencv_contrib) |
||||
|
||||
ocv_check_dependencies(${OPENCV_C_SAMPLES_REQUIRED_DEPS}) |
||||
|
||||
if(BUILD_EXAMPLES AND OCV_DEPENDENCIES_FOUND) |
||||
project(c_samples) |
||||
|
||||
if(CMAKE_COMPILER_IS_GNUCXX AND NOT ENABLE_NOISY_WARNINGS) |
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-unused-function") |
||||
endif() |
||||
|
||||
ocv_include_modules(${OPENCV_C_SAMPLES_REQUIRED_DEPS}) |
||||
|
||||
# --------------------------------------------- |
||||
# Define executable targets |
||||
# --------------------------------------------- |
||||
MACRO(OPENCV_DEFINE_C_EXAMPLE name srcs) |
||||
set(the_target "example_${name}") |
||||
add_executable(${the_target} ${srcs}) |
||||
target_link_libraries(${the_target} ${OPENCV_LINKER_LIBS} ${OPENCV_C_SAMPLES_REQUIRED_DEPS}) |
||||
|
||||
set_target_properties(${the_target} PROPERTIES |
||||
OUTPUT_NAME "c-example-${name}" |
||||
PROJECT_LABEL "(EXAMPLE) ${name}") |
||||
|
||||
if(ENABLE_SOLUTION_FOLDERS) |
||||
set_target_properties(${the_target} PROPERTIES FOLDER "samples//c") |
||||
endif() |
||||
|
||||
if(WIN32) |
||||
if(MSVC AND NOT BUILD_SHARED_LIBS) |
||||
set_target_properties(${the_target} PROPERTIES LINK_FLAGS "/NODEFAULTLIB:atlthunk.lib /NODEFAULTLIB:atlsd.lib /DEBUG") |
||||
endif() |
||||
install(TARGETS ${the_target} |
||||
RUNTIME DESTINATION "samples/c" COMPONENT main) |
||||
endif() |
||||
ENDMACRO() |
||||
|
||||
file(GLOB cpp_samples RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *.cpp *.c) |
||||
|
||||
foreach(sample_filename ${cpp_samples}) |
||||
get_filename_component(sample ${sample_filename} NAME_WE) |
||||
OPENCV_DEFINE_C_EXAMPLE(${sample} ${sample_filename}) |
||||
endforeach() |
||||
endif() |
||||
|
||||
if (INSTALL_C_EXAMPLES AND NOT WIN32) |
||||
file(GLOB C_SAMPLES *.c *.cpp *.jpg *.png *.data makefile.* build_all.sh *.dsp *.cmd ) |
||||
install(FILES ${C_SAMPLES} |
||||
DESTINATION share/OpenCV/samples/c |
||||
PERMISSIONS OWNER_READ GROUP_READ WORLD_READ) |
||||
endif () |
||||
|
Before Width: | Height: | Size: 372 B |
Before Width: | Height: | Size: 83 KiB |
Before Width: | Height: | Size: 176 KiB |
Before Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 50 KiB |
Before Width: | Height: | Size: 120 KiB |
@ -1,16 +0,0 @@ |
||||
#!/bin/sh |
||||
|
||||
if [ $# -gt 0 ] ; then |
||||
base=`basename $1 .c` |
||||
echo "compiling $base" |
||||
gcc -ggdb `pkg-config opencv --cflags --libs` $base.c -o $base |
||||
else |
||||
for i in *.c; do |
||||
echo "compiling $i" |
||||
gcc -ggdb `pkg-config --cflags opencv` -o `basename $i .c` $i `pkg-config --libs opencv`; |
||||
done |
||||
for i in *.cpp; do |
||||
echo "compiling $i" |
||||
g++ -ggdb `pkg-config --cflags opencv` -o `basename $i .cpp` $i `pkg-config --libs opencv`; |
||||
done |
||||
fi |
@ -1,10 +0,0 @@ |
||||
<?xml version="1.0"?> |
||||
<opencv_storage> |
||||
<numTrees>20</numTrees> |
||||
<depth>7</depth> |
||||
<views>1000</views> |
||||
<patchSize>20</patchSize> |
||||
<reducedNumDim>30</reducedNumDim> |
||||
<numQuantBits>4</numQuantBits> |
||||
<printStatus>1</printStatus> |
||||
</opencv_storage> |
Before Width: | Height: | Size: 64 KiB |
@ -1,167 +0,0 @@ |
||||
#include "opencv2/imgproc/imgproc_c.h" |
||||
#include "opencv2/highgui/highgui_c.h" |
||||
#include <stdio.h> |
||||
|
||||
static void help(void) |
||||
{ |
||||
printf("\nThis program creates an image to demonstrate the use of the \"c\" contour\n" |
||||
"functions: cvFindContours() and cvApproxPoly() along with the storage\n" |
||||
"functions cvCreateMemStorage() and cvDrawContours().\n" |
||||
"It also shows the use of a trackbar to control contour retrieval.\n" |
||||
"\n" |
||||
"Usage :\n" |
||||
"./contours\n"); |
||||
} |
||||
|
||||
#define w 500 |
||||
int levels = 3; |
||||
CvSeq* contours = 0; |
||||
|
||||
static void on_trackbar(int pos) |
||||
{ |
||||
IplImage* cnt_img = cvCreateImage( cvSize(w,w), 8, 3 ); |
||||
CvSeq* _contours = contours; |
||||
int _levels = levels - 3; |
||||
(void)pos; |
||||
|
||||
if( _levels <= 0 ) // get to the nearest face to make it look more funny
|
||||
_contours = _contours->h_next->h_next->h_next; |
||||
cvZero( cnt_img ); |
||||
cvDrawContours( cnt_img, _contours, CV_RGB(255,0,0), CV_RGB(0,255,0), _levels, 3, CV_AA, cvPoint(0,0) ); |
||||
cvShowImage( "contours", cnt_img ); |
||||
cvReleaseImage( &cnt_img ); |
||||
} |
||||
|
||||
static void findCComp( IplImage* img ) |
||||
{ |
||||
int x, y, cidx = 1; |
||||
IplImage* mask = cvCreateImage( cvSize(img->width+2, img->height+2), 8, 1 ); |
||||
cvZero(mask); |
||||
cvRectangle( mask, cvPoint(0, 0), cvPoint(mask->width-1, mask->height-1), |
||||
cvScalarAll(1), 1, 8, 0 ); |
||||
|
||||
for( y = 0; y < img->height; y++ ) |
||||
for( x = 0; x < img->width; x++ ) |
||||
{ |
||||
if( CV_IMAGE_ELEM(mask, uchar, y+1, x+1) != 0 ) |
||||
continue; |
||||
cvFloodFill(img, cvPoint(x,y), cvScalarAll(cidx), |
||||
cvScalarAll(0), cvScalarAll(0), 0, 4, mask); |
||||
cidx++; |
||||
} |
||||
} |
||||
|
||||
|
||||
int main(int argc, char* argv[]) |
||||
{ |
||||
int i, j; |
||||
CvMemStorage* storage = cvCreateMemStorage(0); |
||||
IplImage* img = cvCreateImage( cvSize(w,w), 8, 1 ); |
||||
IplImage* img32f = cvCreateImage( cvSize(w,w), IPL_DEPTH_32F, 1 ); |
||||
IplImage* img32s = cvCreateImage( cvSize(w,w), IPL_DEPTH_32S, 1 ); |
||||
IplImage* img3 = cvCreateImage( cvSize(w,w), 8, 3 ); |
||||
(void)argc; (void)argv; |
||||
|
||||
help(); |
||||
cvZero( img ); |
||||
|
||||
for( i=0; i < 6; i++ ) |
||||
{ |
||||
int dx = (i%2)*250 - 30; |
||||
int dy = (i/2)*150; |
||||
CvScalar white = cvRealScalar(255); |
||||
CvScalar black = cvRealScalar(0); |
||||
|
||||
if( i == 0 ) |
||||
{ |
||||
for( j = 0; j <= 10; j++ ) |
||||
{ |
||||
double angle = (j+5)*CV_PI/21; |
||||
cvLine(img, cvPoint(cvRound(dx+100+j*10-80*cos(angle)), |
||||
cvRound(dy+100-90*sin(angle))), |
||||
cvPoint(cvRound(dx+100+j*10-30*cos(angle)), |
||||
cvRound(dy+100-30*sin(angle))), white, 3, 8, 0); |
||||
} |
||||
} |
||||
|
||||
cvEllipse( img, cvPoint(dx+150, dy+100), cvSize(100,70), 0, 0, 360, white, -1, 8, 0 ); |
||||
cvEllipse( img, cvPoint(dx+115, dy+70), cvSize(30,20), 0, 0, 360, black, -1, 8, 0 ); |
||||
cvEllipse( img, cvPoint(dx+185, dy+70), cvSize(30,20), 0, 0, 360, black, -1, 8, 0 ); |
||||
cvEllipse( img, cvPoint(dx+115, dy+70), cvSize(15,15), 0, 0, 360, white, -1, 8, 0 ); |
||||
cvEllipse( img, cvPoint(dx+185, dy+70), cvSize(15,15), 0, 0, 360, white, -1, 8, 0 ); |
||||
cvEllipse( img, cvPoint(dx+115, dy+70), cvSize(5,5), 0, 0, 360, black, -1, 8, 0 ); |
||||
cvEllipse( img, cvPoint(dx+185, dy+70), cvSize(5,5), 0, 0, 360, black, -1, 8, 0 ); |
||||
cvEllipse( img, cvPoint(dx+150, dy+100), cvSize(10,5), 0, 0, 360, black, -1, 8, 0 ); |
||||
cvEllipse( img, cvPoint(dx+150, dy+150), cvSize(40,10), 0, 0, 360, black, -1, 8, 0 ); |
||||
cvEllipse( img, cvPoint(dx+27, dy+100), cvSize(20,35), 0, 0, 360, white, -1, 8, 0 ); |
||||
cvEllipse( img, cvPoint(dx+273, dy+100), cvSize(20,35), 0, 0, 360, white, -1, 8, 0 ); |
||||
} |
||||
|
||||
cvNamedWindow( "image", 1 ); |
||||
cvShowImage( "image", img ); |
||||
cvConvert( img, img32f ); |
||||
findCComp( img32f ); |
||||
cvConvert( img32f, img32s ); |
||||
|
||||
cvFindContours( img32s, storage, &contours, sizeof(CvContour), |
||||
CV_RETR_CCOMP, CV_CHAIN_APPROX_SIMPLE, cvPoint(0,0) ); |
||||
|
||||
//cvFindContours( img, storage, &contours, sizeof(CvContour),
|
||||
// CV_RETR_TREE, CV_CHAIN_APPROX_SIMPLE, cvPoint(0,0) );
|
||||
|
||||
|
||||
{ |
||||
const char* attrs[] = {"recursive", "1", 0}; |
||||
cvSave("contours.xml", contours, 0, 0, cvAttrList(attrs, 0)); |
||||
contours = (CvSeq*)cvLoad("contours.xml", storage, 0, 0); |
||||
} |
||||
|
||||
// comment this out if you do not want approximation
|
||||
contours = cvApproxPoly( contours, sizeof(CvContour), storage, CV_POLY_APPROX_DP, 3, 1 ); |
||||
|
||||
cvNamedWindow( "contours", 1 ); |
||||
cvCreateTrackbar( "levels+3", "contours", &levels, 7, on_trackbar ); |
||||
|
||||
{ |
||||
CvRNG rng = cvRNG(-1); |
||||
|
||||
CvSeq* tcontours = contours; |
||||
cvCvtColor( img, img3, CV_GRAY2BGR ); |
||||
while( tcontours->h_next ) |
||||
tcontours = tcontours->h_next; |
||||
|
||||
for( ; tcontours != 0; tcontours = tcontours->h_prev ) |
||||
{ |
||||
CvScalar color; |
||||
color.val[0] = cvRandInt(&rng) % 256; |
||||
color.val[1] = cvRandInt(&rng) % 256; |
||||
color.val[2] = cvRandInt(&rng) % 256; |
||||
color.val[3] = cvRandInt(&rng) % 256; |
||||
cvDrawContours(img3, tcontours, color, color, 0, -1, 8, cvPoint(0,0)); |
||||
if( tcontours->v_next ) |
||||
{ |
||||
color.val[0] = cvRandInt(&rng) % 256; |
||||
color.val[1] = cvRandInt(&rng) % 256; |
||||
color.val[2] = cvRandInt(&rng) % 256; |
||||
color.val[3] = cvRandInt(&rng) % 256; |
||||
cvDrawContours(img3, tcontours->v_next, color, color, 1, -1, 8, cvPoint(0,0)); |
||||
} |
||||
} |
||||
|
||||
} |
||||
|
||||
cvShowImage( "colored", img3 ); |
||||
on_trackbar(0); |
||||
cvWaitKey(0); |
||||
cvReleaseMemStorage( &storage ); |
||||
cvReleaseImage( &img ); |
||||
cvReleaseImage( &img32f ); |
||||
cvReleaseImage( &img32s ); |
||||
cvReleaseImage( &img3 ); |
||||
|
||||
return 0; |
||||
} |
||||
|
||||
#ifdef _EiC |
||||
main(1,""); |
||||
#endif |
@ -1,92 +0,0 @@ |
||||
# Microsoft Developer Studio Project File - Name="cvsample" - Package Owner=<4> |
||||
# Microsoft Developer Studio Generated Build File, Format Version 6.00 |
||||
# ** DO NOT EDIT ** |
||||
|
||||
# TARGTYPE "Win32 (x86) Console Application" 0x0103 |
||||
|
||||
CFG=cvsample - Win32 Release |
||||
!MESSAGE This is not a valid makefile. To build this project using NMAKE, |
||||
!MESSAGE use the Export Makefile command and run |
||||
!MESSAGE |
||||
!MESSAGE NMAKE /f "cvsample.mak". |
||||
!MESSAGE |
||||
!MESSAGE You can specify a configuration when running NMAKE |
||||
!MESSAGE by defining the macro CFG on the command line. For example: |
||||
!MESSAGE |
||||
!MESSAGE NMAKE /f "cvsample.mak" CFG="cvsample - Win32 Release" |
||||
!MESSAGE |
||||
!MESSAGE Possible choices for configuration are: |
||||
!MESSAGE |
||||
!MESSAGE "cvsample - Win32 Release" (based on "Win32 (x86) Console Application") |
||||
!MESSAGE "cvsample - Win32 Debug" (based on "Win32 (x86) Console Application") |
||||
!MESSAGE |
||||
|
||||
# Begin Project |
||||
# PROP AllowPerConfigDependencies 0 |
||||
# PROP Scc_ProjName "" |
||||
# PROP Scc_LocalPath "" |
||||
CPP=cl.exe |
||||
RSC=rc.exe |
||||
|
||||
!IF "$(CFG)" == "cvsample - Win32 Release" |
||||
|
||||
# PROP BASE Use_MFC 0 |
||||
# PROP BASE Use_Debug_Libraries 0 |
||||
# PROP BASE Output_Dir "Release" |
||||
# PROP BASE Intermediate_Dir "Release" |
||||
# PROP BASE Target_Dir "" |
||||
# PROP Use_MFC 0 |
||||
# PROP Use_Debug_Libraries 0 |
||||
# PROP Output_Dir "..\..\_temp\cvsample_Release" |
||||
# PROP Intermediate_Dir "..\..\_temp\cvsample_Release" |
||||
# PROP Ignore_Export_Lib 0 |
||||
# PROP Target_Dir "" |
||||
F90=df.exe |
||||
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c |
||||
# ADD CPP /nologo /MD /W4 /Gm /GX /Zi /O2 /I "../../cxcore/include" /I "../../cv/include" /I "../../otherlibs/highgui" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c |
||||
# ADD BASE RSC /l 0x409 /d "NDEBUG" |
||||
# ADD RSC /l 0x409 /d "NDEBUG" |
||||
BSC32=bscmake.exe |
||||
# ADD BASE BSC32 /nologo |
||||
# ADD BSC32 /nologo |
||||
LINK32=link.exe |
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 |
||||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib cxcore.lib cv.lib highgui.lib /nologo /subsystem:console /debug /machine:I386 /nodefaultlib:"libmmd.lib" /out:".\cvsample.exe" /libpath:"../../lib" |
||||
|
||||
!ELSEIF "$(CFG)" == "cvsample - Win32 Debug" |
||||
|
||||
# PROP BASE Use_MFC 0 |
||||
# PROP BASE Use_Debug_Libraries 1 |
||||
# PROP BASE Output_Dir "Debug" |
||||
# PROP BASE Intermediate_Dir "Debug" |
||||
# PROP BASE Target_Dir "" |
||||
# PROP Use_MFC 0 |
||||
# PROP Use_Debug_Libraries 1 |
||||
# PROP Output_Dir "..\..\_temp\cvsample_Debug" |
||||
# PROP Intermediate_Dir "..\..\_temp\cvsample_Debug" |
||||
# PROP Ignore_Export_Lib 0 |
||||
# PROP Target_Dir "" |
||||
F90=df.exe |
||||
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c |
||||
# ADD CPP /nologo /MDd /W4 /Gm /GX /Zi /Od /I "../../cxcore/include" /I "../../cv/include" /I "../../otherlibs/highgui" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c |
||||
# ADD BASE RSC /l 0x409 /d "_DEBUG" |
||||
# ADD RSC /l 0x409 /d "_DEBUG" |
||||
BSC32=bscmake.exe |
||||
# ADD BASE BSC32 /nologo |
||||
# ADD BSC32 /nologo |
||||
LINK32=link.exe |
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept |
||||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib cxcored.lib cvd.lib highguid.lib /nologo /subsystem:console /debug /machine:I386 /nodefaultlib:"libmmdd.lib" /out:".\cvsampled.exe" /pdbtype:sept /libpath:"../../lib" |
||||
|
||||
!ENDIF |
||||
|
||||
# Begin Target |
||||
|
||||
# Name "cvsample - Win32 Release" |
||||
# Name "cvsample - Win32 Debug" |
||||
# Begin Source File |
||||
|
||||
SOURCE=.\squares.c |
||||
# End Source File |
||||
# End Target |
||||
# End Project |
@ -1,413 +0,0 @@ |
||||
<?xml version="1.0" encoding="windows-1251"?> |
||||
<VisualStudioProject |
||||
ProjectType="Visual C++" |
||||
Version="8,00" |
||||
Name="cvsample" |
||||
ProjectGUID="{2820F96A-13D2-4EFE-BC9F-A9AF482026AE}" |
||||
RootNamespace="cvsample" |
||||
> |
||||
<Platforms> |
||||
<Platform |
||||
Name="Win32" |
||||
/> |
||||
<Platform |
||||
Name="x64" |
||||
/> |
||||
</Platforms> |
||||
<ToolFiles> |
||||
</ToolFiles> |
||||
<Configurations> |
||||
<Configuration |
||||
Name="Debug|Win32" |
||||
OutputDirectory="$(TEMP)\opencv.build\$(ProjectName)_$(ConfigurationName).$(PlatformName)" |
||||
IntermediateDirectory="$(OutDir)" |
||||
ConfigurationType="1" |
||||
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops" |
||||
UseOfMFC="0" |
||||
ATLMinimizesCRunTimeLibraryUsage="false" |
||||
CharacterSet="2" |
||||
> |
||||
<Tool |
||||
Name="VCPreBuildEventTool" |
||||
/> |
||||
<Tool |
||||
Name="VCCustomBuildTool" |
||||
/> |
||||
<Tool |
||||
Name="VCXMLDataGeneratorTool" |
||||
/> |
||||
<Tool |
||||
Name="VCWebServiceProxyGeneratorTool" |
||||
/> |
||||
<Tool |
||||
Name="VCMIDLTool" |
||||
TypeLibraryName=".\..\..\_temp\cvsample_Dbg/cvsample.tlb" |
||||
HeaderFileName="" |
||||
/> |
||||
<Tool |
||||
Name="VCCLCompilerTool" |
||||
Optimization="0" |
||||
AdditionalIncludeDirectories="../../cxcore/include,../../cv/include,../../otherlibs/highgui" |
||||
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE" |
||||
MinimalRebuild="true" |
||||
BasicRuntimeChecks="3" |
||||
RuntimeLibrary="3" |
||||
PrecompiledHeaderFile=".\..\..\_temp\cvsample_Dbg/cvsample.pch" |
||||
AssemblerListingLocation="$(IntDir)\" |
||||
ObjectFile="$(IntDir)\" |
||||
ProgramDataBaseFileName="$(IntDir)\" |
||||
WarningLevel="4" |
||||
SuppressStartupBanner="true" |
||||
DebugInformationFormat="3" |
||||
/> |
||||
<Tool |
||||
Name="VCManagedResourceCompilerTool" |
||||
/> |
||||
<Tool |
||||
Name="VCResourceCompilerTool" |
||||
PreprocessorDefinitions="_DEBUG" |
||||
Culture="1033" |
||||
/> |
||||
<Tool |
||||
Name="VCPreLinkEventTool" |
||||
/> |
||||
<Tool |
||||
Name="VCLinkerTool" |
||||
AdditionalDependencies="odbc32.lib odbccp32.lib cxcored.lib cvd.lib highguid.lib" |
||||
OutputFile=".\cvsampled.exe" |
||||
LinkIncremental="2" |
||||
SuppressStartupBanner="true" |
||||
AdditionalLibraryDirectories="../../lib" |
||||
IgnoreDefaultLibraryNames="libmmdd.lib" |
||||
GenerateDebugInformation="true" |
||||
ProgramDatabaseFile="$(IntDir)/$(ProjectName)d.pdb" |
||||
SubSystem="1" |
||||
TargetMachine="1" |
||||
/> |
||||
<Tool |
||||
Name="VCALinkTool" |
||||
/> |
||||
<Tool |
||||
Name="VCManifestTool" |
||||
/> |
||||
<Tool |
||||
Name="VCXDCMakeTool" |
||||
/> |
||||
<Tool |
||||
Name="VCBscMakeTool" |
||||
SuppressStartupBanner="true" |
||||
OutputFile="$(IntDir)\$(ProjectName).bsc" |
||||
/> |
||||
<Tool |
||||
Name="VCFxCopTool" |
||||
/> |
||||
<Tool |
||||
Name="VCAppVerifierTool" |
||||
/> |
||||
<Tool |
||||
Name="VCWebDeploymentTool" |
||||
/> |
||||
<Tool |
||||
Name="VCPostBuildEventTool" |
||||
/> |
||||
</Configuration> |
||||
<Configuration |
||||
Name="Debug|x64" |
||||
OutputDirectory="$(TEMP)\opencv.build\$(ProjectName)_$(ConfigurationName).$(PlatformName)" |
||||
IntermediateDirectory="$(OutDir)" |
||||
ConfigurationType="1" |
||||
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops" |
||||
UseOfMFC="0" |
||||
ATLMinimizesCRunTimeLibraryUsage="false" |
||||
CharacterSet="2" |
||||
> |
||||
<Tool |
||||
Name="VCPreBuildEventTool" |
||||
/> |
||||
<Tool |
||||
Name="VCCustomBuildTool" |
||||
/> |
||||
<Tool |
||||
Name="VCXMLDataGeneratorTool" |
||||
/> |
||||
<Tool |
||||
Name="VCWebServiceProxyGeneratorTool" |
||||
/> |
||||
<Tool |
||||
Name="VCMIDLTool" |
||||
TargetEnvironment="3" |
||||
TypeLibraryName=".\..\..\_temp\cvsample_Dbg64/cvsample.tlb" |
||||
HeaderFileName="" |
||||
/> |
||||
<Tool |
||||
Name="VCCLCompilerTool" |
||||
Optimization="0" |
||||
AdditionalIncludeDirectories="../../cxcore/include,../../cv/include,../../otherlibs/highgui" |
||||
PreprocessorDefinitions="WIN32;WIN64;EM64T;_DEBUG;_CONSOLE" |
||||
MinimalRebuild="true" |
||||
BasicRuntimeChecks="3" |
||||
RuntimeLibrary="3" |
||||
PrecompiledHeaderFile=".\..\..\_temp\cvsample_Dbg64/cvsample.pch" |
||||
AssemblerListingLocation="$(IntDir)\" |
||||
ObjectFile="$(IntDir)\" |
||||
ProgramDataBaseFileName="$(IntDir)\" |
||||
WarningLevel="4" |
||||
SuppressStartupBanner="true" |
||||
DebugInformationFormat="3" |
||||
/> |
||||
<Tool |
||||
Name="VCManagedResourceCompilerTool" |
||||
/> |
||||
<Tool |
||||
Name="VCResourceCompilerTool" |
||||
PreprocessorDefinitions="_DEBUG" |
||||
Culture="1033" |
||||
/> |
||||
<Tool |
||||
Name="VCPreLinkEventTool" |
||||
/> |
||||
<Tool |
||||
Name="VCLinkerTool" |
||||
AdditionalDependencies="odbc32.lib odbccp32.lib cxcored_64.lib cvd_64.lib highguid_64.lib" |
||||
OutputFile=".\cvsampled_64.exe" |
||||
LinkIncremental="2" |
||||
SuppressStartupBanner="true" |
||||
AdditionalLibraryDirectories="../../lib" |
||||
IgnoreDefaultLibraryNames="libmmdd.lib" |
||||
GenerateDebugInformation="true" |
||||
ProgramDatabaseFile="$(IntDir)/$(ProjectName)d_64.pdb" |
||||
SubSystem="1" |
||||
TargetMachine="17" |
||||
/> |
||||
<Tool |
||||
Name="VCALinkTool" |
||||
/> |
||||
<Tool |
||||
Name="VCManifestTool" |
||||
/> |
||||
<Tool |
||||
Name="VCXDCMakeTool" |
||||
/> |
||||
<Tool |
||||
Name="VCBscMakeTool" |
||||
SuppressStartupBanner="true" |
||||
OutputFile="$(IntDir)\$(ProjectName).bsc" |
||||
/> |
||||
<Tool |
||||
Name="VCFxCopTool" |
||||
/> |
||||
<Tool |
||||
Name="VCAppVerifierTool" |
||||
/> |
||||
<Tool |
||||
Name="VCWebDeploymentTool" |
||||
/> |
||||
<Tool |
||||
Name="VCPostBuildEventTool" |
||||
/> |
||||
</Configuration> |
||||
<Configuration |
||||
Name="Release|Win32" |
||||
OutputDirectory="$(TEMP)\opencv.build\$(ProjectName)_$(ConfigurationName).$(PlatformName)" |
||||
IntermediateDirectory="$(OutDir)" |
||||
ConfigurationType="1" |
||||
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops" |
||||
UseOfMFC="0" |
||||
ATLMinimizesCRunTimeLibraryUsage="false" |
||||
CharacterSet="2" |
||||
> |
||||
<Tool |
||||
Name="VCPreBuildEventTool" |
||||
/> |
||||
<Tool |
||||
Name="VCCustomBuildTool" |
||||
/> |
||||
<Tool |
||||
Name="VCXMLDataGeneratorTool" |
||||
/> |
||||
<Tool |
||||
Name="VCWebServiceProxyGeneratorTool" |
||||
/> |
||||
<Tool |
||||
Name="VCMIDLTool" |
||||
TypeLibraryName=".\..\..\_temp\cvsample_Rls/cvsample.tlb" |
||||
HeaderFileName="" |
||||
/> |
||||
<Tool |
||||
Name="VCCLCompilerTool" |
||||
Optimization="2" |
||||
InlineFunctionExpansion="1" |
||||
AdditionalIncludeDirectories="../../cxcore/include,../../cv/include,../../otherlibs/highgui" |
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE" |
||||
StringPooling="true" |
||||
MinimalRebuild="true" |
||||
RuntimeLibrary="2" |
||||
EnableFunctionLevelLinking="true" |
||||
PrecompiledHeaderFile=".\..\..\_temp\cvsample_Rls/cvsample.pch" |
||||
AssemblerListingLocation="$(IntDir)\" |
||||
ObjectFile="$(IntDir)\" |
||||
ProgramDataBaseFileName="$(IntDir)\" |
||||
WarningLevel="4" |
||||
SuppressStartupBanner="true" |
||||
DebugInformationFormat="3" |
||||
/> |
||||
<Tool |
||||
Name="VCManagedResourceCompilerTool" |
||||
/> |
||||
<Tool |
||||
Name="VCResourceCompilerTool" |
||||
PreprocessorDefinitions="NDEBUG" |
||||
Culture="1033" |
||||
/> |
||||
<Tool |
||||
Name="VCPreLinkEventTool" |
||||
/> |
||||
<Tool |
||||
Name="VCLinkerTool" |
||||
AdditionalDependencies="odbc32.lib odbccp32.lib cxcore.lib cv.lib highgui.lib" |
||||
OutputFile=".\cvsample.exe" |
||||
LinkIncremental="1" |
||||
SuppressStartupBanner="true" |
||||
AdditionalLibraryDirectories="../../lib" |
||||
IgnoreDefaultLibraryNames="libmmd.lib" |
||||
GenerateDebugInformation="true" |
||||
ProgramDatabaseFile="$(IntDir)/$(ProjectName).pdb" |
||||
SubSystem="1" |
||||
TargetMachine="1" |
||||
/> |
||||
<Tool |
||||
Name="VCALinkTool" |
||||
/> |
||||
<Tool |
||||
Name="VCManifestTool" |
||||
/> |
||||
<Tool |
||||
Name="VCXDCMakeTool" |
||||
/> |
||||
<Tool |
||||
Name="VCBscMakeTool" |
||||
SuppressStartupBanner="true" |
||||
OutputFile="$(IntDir)\$(ProjectName).bsc" |
||||
/> |
||||
<Tool |
||||
Name="VCFxCopTool" |
||||
/> |
||||
<Tool |
||||
Name="VCAppVerifierTool" |
||||
/> |
||||
<Tool |
||||
Name="VCWebDeploymentTool" |
||||
/> |
||||
<Tool |
||||
Name="VCPostBuildEventTool" |
||||
/> |
||||
</Configuration> |
||||
<Configuration |
||||
Name="Release|x64" |
||||
OutputDirectory="$(TEMP)\opencv.build\$(ProjectName)_$(ConfigurationName).$(PlatformName)" |
||||
IntermediateDirectory="$(OutDir)" |
||||
ConfigurationType="1" |
||||
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops" |
||||
UseOfMFC="0" |
||||
ATLMinimizesCRunTimeLibraryUsage="false" |
||||
CharacterSet="2" |
||||
> |
||||
<Tool |
||||
Name="VCPreBuildEventTool" |
||||
/> |
||||
<Tool |
||||
Name="VCCustomBuildTool" |
||||
/> |
||||
<Tool |
||||
Name="VCXMLDataGeneratorTool" |
||||
/> |
||||
<Tool |
||||
Name="VCWebServiceProxyGeneratorTool" |
||||
/> |
||||
<Tool |
||||
Name="VCMIDLTool" |
||||
TargetEnvironment="3" |
||||
TypeLibraryName=".\..\..\_temp\cvsample_Rls64/cvsample.tlb" |
||||
HeaderFileName="" |
||||
/> |
||||
<Tool |
||||
Name="VCCLCompilerTool" |
||||
Optimization="2" |
||||
InlineFunctionExpansion="1" |
||||
AdditionalIncludeDirectories="../../cxcore/include,../../cv/include,../../otherlibs/highgui" |
||||
PreprocessorDefinitions="WIN32;WIN64;EM64T;NDEBUG;_CONSOLE" |
||||
StringPooling="true" |
||||
MinimalRebuild="true" |
||||
RuntimeLibrary="2" |
||||
EnableFunctionLevelLinking="true" |
||||
PrecompiledHeaderFile=".\..\..\_temp\cvsample_Rls64/cvsample.pch" |
||||
AssemblerListingLocation="$(IntDir)\" |
||||
ObjectFile="$(IntDir)\" |
||||
ProgramDataBaseFileName="$(IntDir)\" |
||||
WarningLevel="4" |
||||
SuppressStartupBanner="true" |
||||
DebugInformationFormat="3" |
||||
/> |
||||
<Tool |
||||
Name="VCManagedResourceCompilerTool" |
||||
/> |
||||
<Tool |
||||
Name="VCResourceCompilerTool" |
||||
PreprocessorDefinitions="NDEBUG" |
||||
Culture="1033" |
||||
/> |
||||
<Tool |
||||
Name="VCPreLinkEventTool" |
||||
/> |
||||
<Tool |
||||
Name="VCLinkerTool" |
||||
AdditionalDependencies="odbc32.lib odbccp32.lib cxcore_64.lib cv_64.lib highgui_64.lib" |
||||
OutputFile=".\cvsample_64.exe" |
||||
LinkIncremental="1" |
||||
SuppressStartupBanner="true" |
||||
AdditionalLibraryDirectories="../../lib" |
||||
IgnoreDefaultLibraryNames="libmmd.lib" |
||||
GenerateDebugInformation="true" |
||||
ProgramDatabaseFile="$(IntDir)/$(ProjectName)_64.pdb" |
||||
SubSystem="1" |
||||
TargetMachine="17" |
||||
/> |
||||
<Tool |
||||
Name="VCALinkTool" |
||||
/> |
||||
<Tool |
||||
Name="VCManifestTool" |
||||
/> |
||||
<Tool |
||||
Name="VCXDCMakeTool" |
||||
/> |
||||
<Tool |
||||
Name="VCBscMakeTool" |
||||
SuppressStartupBanner="true" |
||||
OutputFile="$(IntDir)\$(ProjectName).bsc" |
||||
/> |
||||
<Tool |
||||
Name="VCFxCopTool" |
||||
/> |
||||
<Tool |
||||
Name="VCAppVerifierTool" |
||||
/> |
||||
<Tool |
||||
Name="VCWebDeploymentTool" |
||||
/> |
||||
<Tool |
||||
Name="VCPostBuildEventTool" |
||||
/> |
||||
</Configuration> |
||||
</Configurations> |
||||
<References> |
||||
</References> |
||||
<Files> |
||||
<File |
||||
RelativePath=".\stereo_calib.cpp" |
||||
> |
||||
</File> |
||||
</Files> |
||||
<Globals> |
||||
</Globals> |
||||
</VisualStudioProject> |
@ -1,18 +0,0 @@ |
||||
PROJECT(opencv_example) |
||||
|
||||
CMAKE_MINIMUM_REQUIRED(VERSION 2.6) |
||||
if(COMMAND cmake_policy) |
||||
cmake_policy(SET CMP0003 NEW) |
||||
endif(COMMAND cmake_policy) |
||||
|
||||
FIND_PACKAGE( OpenCV REQUIRED ) |
||||
|
||||
# Declare the target (an executable) |
||||
ADD_EXECUTABLE(opencv_example minarea.c) |
||||
|
||||
TARGET_LINK_LIBRARIES(opencv_example ${OpenCV_LIBS}) |
||||
|
||||
#MESSAGE(STATUS "OpenCV_LIBS: ${OpenCV_LIBS}") |
||||
|
||||
|
||||
|
@ -1,32 +0,0 @@ |
||||
Example for CMake build system. |
||||
|
||||
Compile OpenCV with cmake, preferently in an off-tree build, for example: |
||||
|
||||
$ mkdir opencv-release |
||||
$ cd opencv-release |
||||
$ cmake <OPENCV_SRC_PATH> |
||||
$ make |
||||
|
||||
And, *only optionally*, install it with. |
||||
$ sudo make install |
||||
|
||||
Then create the binary directory for the example with: |
||||
$ mkdir example-release |
||||
$ cd example-release |
||||
|
||||
Then, if "make install" have been executed, directly running |
||||
$ cmake <OPENCV_SRC_PATH>/samples/c/example_cmake/ |
||||
|
||||
will detect the "OpenCVConfig.cmake" file and the project is ready to compile. |
||||
|
||||
If "make install" has not been executed, you'll have to manually pick the opencv |
||||
binary directory (Under Windows CMake may remember the correct directory). Open |
||||
the CMake gui with: |
||||
$ cmake-gui <OPENCV_SRC_PATH>/samples/c/example_cmake/ |
||||
|
||||
And pick the correct value for OpenCV_DIR. |
||||
|
||||
|
||||
|
||||
|
||||
|
@ -1,117 +0,0 @@ |
||||
#ifdef _CH_ |
||||
#pragma package <opencv> |
||||
#endif |
||||
|
||||
#ifndef _EiC |
||||
#include "cv.h" |
||||
#include "highgui.h" |
||||
#include <stdio.h> |
||||
#include <stdlib.h> |
||||
#endif |
||||
|
||||
#define ARRAY 1 |
||||
|
||||
void help() |
||||
{ |
||||
printf("\nThis program demonstrates finding the minimum enclosing box or circle of a set\n" |
||||
"of points using functions: minAreaRect() minEnclosingCircle().\n" |
||||
"Random points are generated and then enclosed.\n" |
||||
"Call:\n" |
||||
"./minarea\n"); |
||||
} |
||||
|
||||
int main( int argc, char** argv ) |
||||
{ |
||||
IplImage* img = cvCreateImage( cvSize( 500, 500 ), 8, 3 ); |
||||
#if !ARRAY |
||||
CvMemStorage* storage = cvCreateMemStorage(0); |
||||
#endif |
||||
help(); |
||||
cvNamedWindow( "rect & circle", 1 ); |
||||
|
||||
for(;;) |
||||
{ |
||||
char key; |
||||
int i, count = rand()%100 + 1; |
||||
CvPoint pt0, pt; |
||||
CvBox2D box; |
||||
CvPoint2D32f box_vtx[4]; |
||||
CvPoint2D32f center; |
||||
CvPoint icenter; |
||||
float radius; |
||||
#if !ARRAY |
||||
CvSeq* ptseq = cvCreateSeq( CV_SEQ_KIND_GENERIC|CV_32SC2, sizeof(CvContour), |
||||
sizeof(CvPoint), storage ); |
||||
for( i = 0; i < count; i++ ) |
||||
{ |
||||
pt0.x = rand() % (img->width/2) + img->width/4; |
||||
pt0.y = rand() % (img->height/2) + img->height/4; |
||||
cvSeqPush( ptseq, &pt0 ); |
||||
} |
||||
#ifndef _EiC /* unfortunately, here EiC crashes */ |
||||
box = cvMinAreaRect2( ptseq, 0 ); |
||||
#endif |
||||
cvMinEnclosingCircle( ptseq, ¢er, &radius ); |
||||
#else |
||||
CvPoint* points = (CvPoint*)malloc( count * sizeof(points[0])); |
||||
CvMat pointMat = cvMat( 1, count, CV_32SC2, points ); |
||||
|
||||
for( i = 0; i < count; i++ ) |
||||
{ |
||||
pt0.x = rand() % (img->width/2) + img->width/4; |
||||
pt0.y = rand() % (img->height/2) + img->height/4; |
||||
points[i] = pt0; |
||||
} |
||||
#ifndef _EiC |
||||
box = cvMinAreaRect2( &pointMat, 0 ); |
||||
#endif |
||||
cvMinEnclosingCircle( &pointMat, ¢er, &radius ); |
||||
#endif |
||||
cvBoxPoints( box, box_vtx ); |
||||
cvZero( img ); |
||||
for( i = 0; i < count; i++ ) |
||||
{ |
||||
#if !ARRAY |
||||
pt0 = *CV_GET_SEQ_ELEM( CvPoint, ptseq, i ); |
||||
#else |
||||
pt0 = points[i]; |
||||
#endif |
||||
cvCircle( img, pt0, 2, CV_RGB( 255, 0, 0 ), CV_FILLED, CV_AA, 0 ); |
||||
} |
||||
|
||||
#ifndef _EiC |
||||
pt0.x = cvRound(box_vtx[3].x); |
||||
pt0.y = cvRound(box_vtx[3].y); |
||||
for( i = 0; i < 4; i++ ) |
||||
{ |
||||
pt.x = cvRound(box_vtx[i].x); |
||||
pt.y = cvRound(box_vtx[i].y); |
||||
cvLine(img, pt0, pt, CV_RGB(0, 255, 0), 1, CV_AA, 0); |
||||
pt0 = pt; |
||||
} |
||||
#endif |
||||
icenter.x = cvRound(center.x); |
||||
icenter.y = cvRound(center.y); |
||||
cvCircle( img, icenter, cvRound(radius), CV_RGB(255, 255, 0), 1, CV_AA, 0 ); |
||||
|
||||
cvShowImage( "rect & circle", img ); |
||||
|
||||
key = (char) cvWaitKey(0); |
||||
if( key == 27 || key == 'q' || key == 'Q' ) // 'ESC'
|
||||
break; |
||||
|
||||
#if !ARRAY |
||||
cvClearMemStorage( storage ); |
||||
#else |
||||
free( points ); |
||||
#endif |
||||
} |
||||
|
||||
cvDestroyWindow( "rect & circle" ); |
||||
return 0; |
||||
} |
||||
|
||||
#ifdef _EiC |
||||
main(1,"convexhull.c"); |
||||
#endif |
||||
|