Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
O
opencv
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
submodule
opencv
Commits
e1c4fd9e
Commit
e1c4fd9e
authored
May 18, 2012
by
Andrey Kamaev
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Merged the trunk r8345:8376
parent
70166820
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
52 changed files
with
1074 additions
and
583 deletions
+1074
-583
MultiMon.h
3rdparty/include/MultiMon.h
+0
-0
android.toolchain.cmake
android/android.toolchain.cmake
+38
-38
OpenCVCompilerOptions.cmake
cmake/OpenCVCompilerOptions.cmake
+15
-4
OpenCVDetectCXXCompiler.cmake
cmake/OpenCVDetectCXXCompiler.cmake
+1
-1
OpenCVDetectPython.cmake
cmake/OpenCVDetectPython.cmake
+8
-10
OpenCVFindIPP.cmake
cmake/OpenCVFindIPP.cmake
+67
-52
basic_structures.rst
modules/core/doc/basic_structures.rst
+5
-4
matrix.cpp
modules/core/src/matrix.cpp
+9
-1
test_mat.cpp
modules/core/test/test_mat.cpp
+12
-0
cap_avfoundation.mm
modules/highgui/src/cap_avfoundation.mm
+9
-4
window_w32.cpp
modules/highgui/src/window_w32.cpp
+45
-9
accum.cpp
modules/imgproc/src/accum.cpp
+1
-1
phasecorr.cpp
modules/imgproc/src/phasecorr.cpp
+1
-1
utils.cpp
modules/imgproc/src/utils.cpp
+10
-3
test_pc.cpp
modules/imgproc/test/test_pc.cpp
+2
-2
tracking.hpp
modules/video/include/opencv2/video/tracking.hpp
+9
-6
perf_optflowpyrlk.cpp
modules/video/perf/perf_optflowpyrlk.cpp
+2
-2
bgfg_gaussmix2.cpp
modules/video/src/bgfg_gaussmix2.cpp
+1
-1
lkpyramid.cpp
modules/video/src/lkpyramid.cpp
+0
-0
precomp.hpp
modules/video/src/precomp.hpp
+1
-1
SampleCvViewBase.java
...zle/src/org/opencv/samples/puzzle15/SampleCvViewBase.java
+35
-18
puzzle15Activity.java
...zle/src/org/opencv/samples/puzzle15/puzzle15Activity.java
+27
-0
puzzle15View.java
...-puzzle/src/org/opencv/samples/puzzle15/puzzle15View.java
+7
-5
ColorBlobDetectionActivity.java
...v/samples/colorblobdetect/ColorBlobDetectionActivity.java
+27
-0
ColorBlobDetectionView.java
...pencv/samples/colorblobdetect/ColorBlobDetectionView.java
+3
-2
SampleCvViewBase.java
.../org/opencv/samples/colorblobdetect/SampleCvViewBase.java
+35
-18
FdActivity.java
.../face-detection/src/org/opencv/samples/fd/FdActivity.java
+31
-1
FdView.java
...roid/face-detection/src/org/opencv/samples/fd/FdView.java
+5
-5
SampleCvViewBase.java
...detection/src/org/opencv/samples/fd/SampleCvViewBase.java
+35
-18
ImageManipulationsActivity.java
...amples/imagemanipulations/ImageManipulationsActivity.java
+33
-2
ImageManipulationsView.java
...cv/samples/imagemanipulations/ImageManipulationsView.java
+5
-5
SampleCvViewBase.java
...g/opencv/samples/imagemanipulations/SampleCvViewBase.java
+39
-20
strings.xml
...s/android/tutorial-0-androidcamera/res/values/strings.xml
+1
-1
Sample0Base.java
...dcamera/src/org/opencv/samples/tutorial0/Sample0Base.java
+28
-1
Sample0View.java
...dcamera/src/org/opencv/samples/tutorial0/Sample0View.java
+13
-4
SampleViewBase.java
...mera/src/org/opencv/samples/tutorial0/SampleViewBase.java
+88
-65
strings.xml
samples/android/tutorial-1-addopencv/res/values/strings.xml
+1
-1
Sample1Java.java
...dopencv/src/org/opencv/samples/tutorial1/Sample1Java.java
+27
-0
Sample1View.java
...dopencv/src/org/opencv/samples/tutorial1/Sample1View.java
+3
-4
SampleViewBase.java
...encv/src/org/opencv/samples/tutorial1/SampleViewBase.java
+86
-66
strings.xml
...es/android/tutorial-2-opencvcamera/res/values/strings.xml
+1
-1
Sample2NativeCamera.java
...src/org/opencv/samples/tutorial2/Sample2NativeCamera.java
+31
-1
Sample2View.java
...vcamera/src/org/opencv/samples/tutorial2/Sample2View.java
+5
-48
SampleCvViewBase.java
...ra/src/org/opencv/samples/tutorial2/SampleCvViewBase.java
+35
-18
strings.xml
samples/android/tutorial-3-native/res/values/strings.xml
+1
-1
Sample3Native.java
...ative/src/org/opencv/samples/tutorial3/Sample3Native.java
+30
-1
Sample3View.java
...-native/src/org/opencv/samples/tutorial3/Sample3View.java
+1
-1
SampleViewBase.java
...tive/src/org/opencv/samples/tutorial3/SampleViewBase.java
+87
-66
strings.xml
samples/android/tutorial-4-mixed/res/values/strings.xml
+1
-1
Sample4Mixed.java
...-mixed/src/org/opencv/samples/tutorial4/Sample4Mixed.java
+27
-0
Sample4View.java
...4-mixed/src/org/opencv/samples/tutorial4/Sample4View.java
+2
-3
SampleViewBase.java
...ixed/src/org/opencv/samples/tutorial4/SampleViewBase.java
+88
-66
No files found.
3rdparty/include/MultiMon.h
0 → 100644
View file @
e1c4fd9e
This diff is collapsed.
Click to expand it.
android/android.toolchain.cmake
View file @
e1c4fd9e
...
...
@@ -766,30 +766,30 @@ set( CMAKE_COMPILER_IS_GNUASM 1)
# NDK flags
if
(
ARMEABI OR ARMEABI_V7A
)
# NDK also defines -ffunction-sections -funwind-tables but they result in worse OpenCV performance
set
(
CMAKE_CXX_FLAGS
"-fPIC -Wno-psabi"
)
set
(
CMAKE_C_FLAGS
"-fPIC -Wno-psabi"
)
set
(
_
CMAKE_CXX_FLAGS
"-fPIC -Wno-psabi"
)
set
(
_
CMAKE_C_FLAGS
"-fPIC -Wno-psabi"
)
remove_definitions
(
-D__ARM_ARCH_5__ -D__ARM_ARCH_5T__ -D__ARM_ARCH_5E__ -D__ARM_ARCH_5TE__
)
add_definitions
(
-D__ARM_ARCH_5__ -D__ARM_ARCH_5T__ -D__ARM_ARCH_5E__ -D__ARM_ARCH_5TE__
)
# extra arm-specific flags
set
(
ANDROID_CXX_FLAGS
"
${
ANDROID_CXX_FLAGS
}
-fsigned-char"
)
elseif
(
X86
)
set
(
CMAKE_CXX_FLAGS
"-funwind-tables"
)
set
(
CMAKE_C_FLAGS
"-funwind-tables"
)
set
(
_
CMAKE_CXX_FLAGS
"-funwind-tables"
)
set
(
_
CMAKE_C_FLAGS
"-funwind-tables"
)
elseif
(
MIPS
)
set
(
CMAKE_CXX_FLAGS
"-fpic -Wno-psabi -fno-strict-aliasing -finline-functions -ffunction-sections -funwind-tables -fmessage-length=0 -fno-inline-functions-called-once -fgcse-after-reload -frerun-cse-after-loop -frename-registers"
)
set
(
CMAKE_CXX_FLAGS
"-fpic -Wno-psabi -fno-strict-aliasing -finline-functions -ffunction-sections -funwind-tables -fmessage-length=0 -fno-inline-functions-called-once -fgcse-after-reload -frerun-cse-after-loop -frename-registers"
)
set
(
_
CMAKE_CXX_FLAGS
"-fpic -Wno-psabi -fno-strict-aliasing -finline-functions -ffunction-sections -funwind-tables -fmessage-length=0 -fno-inline-functions-called-once -fgcse-after-reload -frerun-cse-after-loop -frename-registers"
)
set
(
_
CMAKE_CXX_FLAGS
"-fpic -Wno-psabi -fno-strict-aliasing -finline-functions -ffunction-sections -funwind-tables -fmessage-length=0 -fno-inline-functions-called-once -fgcse-after-reload -frerun-cse-after-loop -frename-registers"
)
set
(
ANDROID_CXX_FLAGS
"
${
ANDROID_CXX_FLAGS
}
-fsigned-char"
)
else
()
set
(
CMAKE_CXX_FLAGS
""
)
set
(
CMAKE_C_FLAGS
""
)
set
(
_
CMAKE_CXX_FLAGS
""
)
set
(
_
CMAKE_C_FLAGS
""
)
endif
()
if
(
ANDROID_USE_STLPORT
)
set
(
CMAKE_CXX_FLAGS
"
${
CMAKE_CXX_FLAGS
}
-fno-rtti -fno-exceptions"
)
set
(
CMAKE_C_FLAGS
"
${
CMAKE_C_FLAGS
}
-fno-rtti -fno-exceptions"
)
set
(
_CMAKE_CXX_FLAGS
"
${
_
CMAKE_CXX_FLAGS
}
-fno-rtti -fno-exceptions"
)
set
(
_CMAKE_C_FLAGS
"
${
_
CMAKE_C_FLAGS
}
-fno-rtti -fno-exceptions"
)
else
()
set
(
CMAKE_CXX_FLAGS
"
${
CMAKE_CXX_FLAGS
}
-frtti -fexceptions"
)
set
(
CMAKE_C_FLAGS
"
${
CMAKE_C_FLAGS
}
-fexceptions"
)
set
(
_CMAKE_CXX_FLAGS
"
${
_
CMAKE_CXX_FLAGS
}
-frtti -fexceptions"
)
set
(
_CMAKE_C_FLAGS
"
${
_
CMAKE_C_FLAGS
}
-fexceptions"
)
endif
()
#release and debug flags
...
...
@@ -798,33 +798,33 @@ if( ARMEABI OR ARMEABI_V7A )
#It is recommended to use the -mthumb compiler flag to force the generation
#of 16-bit Thumb-1 instructions (the default being 32-bit ARM ones).
# O3 instead of O2/Os in release mode - like cmake sets for desktop gcc
set
(
CMAKE_CXX_FLAGS_RELEASE
"-mthumb -O3"
)
set
(
CMAKE_C_FLAGS_RELEASE
"-mthumb -O3"
)
set
(
CMAKE_CXX_FLAGS_DEBUG
"-marm -Os -finline-limit=64"
)
set
(
CMAKE_C_FLAGS_DEBUG
"-marm -Os -finline-limit=64"
)
set
(
_
CMAKE_CXX_FLAGS_RELEASE
"-mthumb -O3"
)
set
(
_
CMAKE_C_FLAGS_RELEASE
"-mthumb -O3"
)
set
(
_
CMAKE_CXX_FLAGS_DEBUG
"-marm -Os -finline-limit=64"
)
set
(
_
CMAKE_C_FLAGS_DEBUG
"-marm -Os -finline-limit=64"
)
else
()
# always compile ARMEABI_V6 in arm mode; otherwise there is no difference from ARMEABI
# O3 instead of O2/Os in release mode - like cmake sets for desktop gcc
set
(
CMAKE_CXX_FLAGS_RELEASE
"-marm -O3 -fstrict-aliasing"
)
set
(
CMAKE_C_FLAGS_RELEASE
"-marm -O3 -fstrict-aliasing"
)
set
(
CMAKE_CXX_FLAGS_DEBUG
"-marm -O0 -finline-limit=300"
)
set
(
CMAKE_C_FLAGS_DEBUG
"-marm -O0 -finline-limit=300"
)
set
(
_
CMAKE_CXX_FLAGS_RELEASE
"-marm -O3 -fstrict-aliasing"
)
set
(
_
CMAKE_C_FLAGS_RELEASE
"-marm -O3 -fstrict-aliasing"
)
set
(
_
CMAKE_CXX_FLAGS_DEBUG
"-marm -O0 -finline-limit=300"
)
set
(
_
CMAKE_C_FLAGS_DEBUG
"-marm -O0 -finline-limit=300"
)
endif
()
elseif
(
X86
)
set
(
CMAKE_CXX_FLAGS_RELEASE
"-O3 -fstrict-aliasing"
)
set
(
CMAKE_C_FLAGS_RELEASE
"-O3 -fstrict-aliasing"
)
set
(
CMAKE_CXX_FLAGS_DEBUG
"-O0 -finline-limit=300"
)
set
(
CMAKE_C_FLAGS_DEBUG
"-O0 -finline-limit=300"
)
set
(
_
CMAKE_CXX_FLAGS_RELEASE
"-O3 -fstrict-aliasing"
)
set
(
_
CMAKE_C_FLAGS_RELEASE
"-O3 -fstrict-aliasing"
)
set
(
_
CMAKE_CXX_FLAGS_DEBUG
"-O0 -finline-limit=300"
)
set
(
_
CMAKE_C_FLAGS_DEBUG
"-O0 -finline-limit=300"
)
elseif
(
MIPS
)
set
(
CMAKE_CXX_FLAGS_RELEASE
"-O3 -funswitch-loops -finline-limit=300"
)
set
(
CMAKE_C_FLAGS_RELEASE
"-O3 -funswitch-loops -finline-limit=300"
)
set
(
CMAKE_CXX_FLAGS_DEBUG
"-O0 -g"
)
set
(
CMAKE_C_FLAGS_DEBUG
"-O0 -g"
)
set
(
_
CMAKE_CXX_FLAGS_RELEASE
"-O3 -funswitch-loops -finline-limit=300"
)
set
(
_
CMAKE_C_FLAGS_RELEASE
"-O3 -funswitch-loops -finline-limit=300"
)
set
(
_
CMAKE_CXX_FLAGS_DEBUG
"-O0 -g"
)
set
(
_
CMAKE_C_FLAGS_DEBUG
"-O0 -g"
)
endif
()
set
(
CMAKE_CXX_FLAGS_RELEASE
"
${
CMAKE_CXX_FLAGS_RELEASE
}
-fomit-frame-pointer -DNDEBUG"
)
set
(
CMAKE_C_FLAGS_RELEASE
"
${
CMAKE_C_FLAGS_RELEASE
}
-fomit-frame-pointer -DNDEBUG"
)
set
(
CMAKE_CXX_FLAGS_DEBUG
"
${
CMAKE_CXX_FLAGS_DEBUG
}
-fno-strict-aliasing -fno-omit-frame-pointer -DDEBUG -D_DEBUG"
)
set
(
CMAKE_C_FLAGS_DEBUG
"
${
CMAKE_C_FLAGS_DEBUG
}
-fno-strict-aliasing -fno-omit-frame-pointer -DDEBUG -D_DEBUG"
)
set
(
_CMAKE_CXX_FLAGS_RELEASE
"
${
_
CMAKE_CXX_FLAGS_RELEASE
}
-fomit-frame-pointer -DNDEBUG"
)
set
(
_CMAKE_C_FLAGS_RELEASE
"
${
_
CMAKE_C_FLAGS_RELEASE
}
-fomit-frame-pointer -DNDEBUG"
)
set
(
_CMAKE_CXX_FLAGS_DEBUG
"
${
_
CMAKE_CXX_FLAGS_DEBUG
}
-fno-strict-aliasing -fno-omit-frame-pointer -DDEBUG -D_DEBUG"
)
set
(
_CMAKE_C_FLAGS_DEBUG
"
${
_
CMAKE_C_FLAGS_DEBUG
}
-fno-strict-aliasing -fno-omit-frame-pointer -DDEBUG -D_DEBUG"
)
#ABI-specific flags
if
(
ARMEABI_V7A
)
...
...
@@ -928,12 +928,12 @@ if( ARMEABI_V7A )
endif
()
#cache flags
set
(
CMAKE_CXX_FLAGS
"
${
CMAKE_CXX_FLAGS
}
"
CACHE STRING
"c++ flags"
)
set
(
CMAKE_C_FLAGS
"
${
CMAKE_C_FLAGS
}
"
CACHE STRING
"c flags"
)
set
(
CMAKE_CXX_FLAGS_RELEASE
"
${
CMAKE_CXX_FLAGS_RELEASE
}
"
CACHE STRING
"c++ Release flags"
)
set
(
CMAKE_C_FLAGS_RELEASE
"
${
CMAKE_C_FLAGS_RELEASE
}
"
CACHE STRING
"c Release flags"
)
set
(
CMAKE_CXX_FLAGS_DEBUG
"
${
CMAKE_CXX_FLAGS_DEBUG
}
"
CACHE STRING
"c++ Debug flags"
)
set
(
CMAKE_C_FLAGS_DEBUG
"
${
CMAKE_C_FLAGS_DEBUG
}
"
CACHE STRING
"c Debug flags"
)
set
(
CMAKE_CXX_FLAGS
"
${
_
CMAKE_CXX_FLAGS
}
"
CACHE STRING
"c++ flags"
)
set
(
CMAKE_C_FLAGS
"
${
_
CMAKE_C_FLAGS
}
"
CACHE STRING
"c flags"
)
set
(
CMAKE_CXX_FLAGS_RELEASE
"
${
_
CMAKE_CXX_FLAGS_RELEASE
}
"
CACHE STRING
"c++ Release flags"
)
set
(
CMAKE_C_FLAGS_RELEASE
"
${
_
CMAKE_C_FLAGS_RELEASE
}
"
CACHE STRING
"c Release flags"
)
set
(
CMAKE_CXX_FLAGS_DEBUG
"
${
_
CMAKE_CXX_FLAGS_DEBUG
}
"
CACHE STRING
"c++ Debug flags"
)
set
(
CMAKE_C_FLAGS_DEBUG
"
${
_
CMAKE_C_FLAGS_DEBUG
}
"
CACHE STRING
"c Debug flags"
)
set
(
CMAKE_SHARED_LINKER_FLAGS
""
CACHE STRING
"linker flags"
)
set
(
CMAKE_MODULE_LINKER_FLAGS
""
CACHE STRING
"linker flags"
)
set
(
CMAKE_EXE_LINKER_FLAGS
"-Wl,-z,nocopyreloc"
CACHE STRING
"linker flags"
)
...
...
cmake/OpenCVCompilerOptions.cmake
View file @
e1c4fd9e
if
(
WIN32 AND CMAKE_GENERATOR MATCHES
"(MinGW)|(MSYS)"
)
set
(
CMAKE_CXX_FLAGS_RELEASE
"-O2 -DNDEBUG"
CACHE STRING
""
)
endif
()
if
(
MSVC
)
if
(
CMAKE_CXX_FLAGS STREQUAL CMAKE_CXX_FLAGS_INIT
)
# override cmake default exception handling option
...
...
@@ -17,6 +13,21 @@ set(OPENCV_EXTRA_EXE_LINKER_FLAGS "")
set
(
OPENCV_EXTRA_EXE_LINKER_FLAGS_RELEASE
""
)
set
(
OPENCV_EXTRA_EXE_LINKER_FLAGS_DEBUG
""
)
if
(
MINGW
)
# mingw compiler is known to produce unstable SSE code
# here we are trying to workaround the problem
include
(
CheckCXXCompilerFlag
)
CHECK_CXX_COMPILER_FLAG
(
-mstackrealign HAVE_STACKREALIGN_FLAG
)
if
(
HAVE_STACKREALIGN_FLAG
)
set
(
OPENCV_EXTRA_C_FLAGS
"
${
OPENCV_EXTRA_C_FLAGS
}
-mstackrealign"
)
else
()
CHECK_CXX_COMPILER_FLAG
(
-mpreferred-stack-boundary=2 HAVE_PREFERRED_STACKBOUNDARY_FLAG
)
if
(
HAVE_PREFERRED_STACKBOUNDARY_FLAG
)
set
(
OPENCV_EXTRA_C_FLAGS
"
${
OPENCV_EXTRA_C_FLAGS
}
-mstackrealign"
)
endif
()
endif
()
endif
()
if
(
CMAKE_COMPILER_IS_GNUCXX
)
# High level of warnings.
set
(
OPENCV_EXTRA_C_FLAGS
"
${
OPENCV_EXTRA_C_FLAGS
}
-Wall"
)
...
...
cmake/OpenCVDetectCXXCompiler.cmake
View file @
e1c4fd9e
...
...
@@ -11,7 +11,7 @@ if(NOT APPLE)
unset
(
ENABLE_PRECOMPILED_HEADERS CACHE
)
endif
()
if
(
CMAKE_C_COMPILER_ID STREQUAL
"Clang"
)
set
(
CMAKE_COMPILER_IS_GNUC 1
)
set
(
CMAKE_COMPILER_IS_GNUC
C
1
)
unset
(
ENABLE_PRECOMPILED_HEADERS CACHE
)
endif
()
endif
()
...
...
cmake/OpenCVDetectPython.cmake
View file @
e1c4fd9e
...
...
@@ -12,12 +12,10 @@ if(MSVC AND NOT PYTHON_EXECUTABLE)
)
endforeach
()
endif
()
find_host_package
(
PythonInterp 2.0
)
unset
(
PYTHON_USE_NUMPY CACHE
)
unset
(
HAVE_SPHINX CACHE
)
if
(
PYTHON_EXECUTABLE
)
if
(
PYTHON_VERSION_STRING
)
set
(
PYTHON_VERSION_MAJOR_MINOR
"
${
PYTHON_VERSION_MAJOR
}
.
${
PYTHON_VERSION_MINOR
}
"
)
...
...
@@ -46,16 +44,15 @@ if(PYTHON_EXECUTABLE)
OUTPUT_VARIABLE PYTHON_STD_PACKAGES_PATH
OUTPUT_STRIP_TRAILING_WHITESPACE
)
if
(
"
${
PYTHON_STD_PACKAGES_PATH
}
"
MATCHES
"site-packages"
)
set
(
PYTHON_PACKAGES_PATH
"python
${
PYTHON_VERSION_MAJOR_MINOR
}
/site-packages"
)
set
(
_
PYTHON_PACKAGES_PATH
"python
${
PYTHON_VERSION_MAJOR_MINOR
}
/site-packages"
)
else
()
#debian based assumed, install to the dist-packages.
set
(
PYTHON_PACKAGES_PATH
"python
${
PYTHON_VERSION_MAJOR_MINOR
}
/dist-packages"
)
set
(
_
PYTHON_PACKAGES_PATH
"python
${
PYTHON_VERSION_MAJOR_MINOR
}
/dist-packages"
)
endif
()
if
(
EXISTS
"
${
CMAKE_INSTALL_PREFIX
}
/lib
${
LIB_SUFFIX
}
/
${
PYTHON_PACKAGES_PATH
}
"
)
set
(
PYTHON_PACKAGES_PATH
"lib
${
LIB_SUFFIX
}
/
${
PYTHON_PACKAGES_PATH
}
"
)
set
(
_PYTHON_PACKAGES_PATH
"lib
${
LIB_SUFFIX
}
/
${
_
PYTHON_PACKAGES_PATH
}
"
)
else
()
set
(
PYTHON_PACKAGES_PATH
"lib/
${
PYTHON_PACKAGES_PATH
}
"
)
set
(
_PYTHON_PACKAGES_PATH
"lib/
${
_
PYTHON_PACKAGES_PATH
}
"
)
endif
()
set
(
PYTHON_PACKAGES_PATH
"
${
PYTHON_PACKAGES_PATH
}
"
CACHE PATH
"Where to install the python packages."
)
elseif
(
CMAKE_HOST_WIN32
)
get_filename_component
(
PYTHON_PATH
"
${
PYTHON_EXECUTABLE
}
"
PATH
)
file
(
TO_CMAKE_PATH
"
${
PYTHON_PATH
}
"
PYTHON_PATH
)
...
...
@@ -67,8 +64,9 @@ if(PYTHON_EXECUTABLE)
endif
()
file
(
TO_CMAKE_PATH
"
${
PYTHON_PATH
}
"
PYTHON_PATH
)
endif
()
set
(
PYTHON_PACKAGES_PATH
"
${
PYTHON_PATH
}
/Lib/site-packages"
)
set
(
_
PYTHON_PACKAGES_PATH
"
${
PYTHON_PATH
}
/Lib/site-packages"
)
endif
()
SET
(
PYTHON_PACKAGES_PATH
"
${
_PYTHON_PACKAGES_PATH
}
"
CACHE PATH
"Where to install the python packages."
)
if
(
NOT PYTHON_NUMPY_INCLUDE_DIR
)
# Attempt to discover the NumPy include directory. If this succeeds, then build python API with NumPy
...
...
@@ -78,8 +76,8 @@ if(PYTHON_EXECUTABLE)
OUTPUT_STRIP_TRAILING_WHITESPACE
)
if
(
PYTHON_NUMPY_PROCESS EQUAL 0
)
file
(
TO_CMAKE_PATH
"
${
PYTHON_NUMPY_INCLUDE_DIR
}
"
PYTHON_NUMPY_INCLUDE_DIR
)
set
(
PYTHON_NUMPY_INCLUDE_DIR
${
PYTHON_NUMPY_INCLUDE_DIR
}
CACHE PATH
"Path to numpy headers"
)
file
(
TO_CMAKE_PATH
"
${
PYTHON_NUMPY_INCLUDE_DIR
}
"
_
PYTHON_NUMPY_INCLUDE_DIR
)
set
(
PYTHON_NUMPY_INCLUDE_DIR
${
_
PYTHON_NUMPY_INCLUDE_DIR
}
CACHE PATH
"Path to numpy headers"
)
endif
()
endif
()
...
...
cmake/OpenCVFindIPP.cmake
View file @
e1c4fd9e
...
...
@@ -220,45 +220,40 @@ function(set_ipp_variables _LATEST_VERSION)
endfunction
()
# ------------------------------------------------------------------------
# This section will look for IPP through IPPROOT env variable
# Note, IPPROOT is not set by IPP installer, you may need to set it manually
# ------------------------------------------------------------------------
find_path
(
IPP_H_PATH
NAMES ippversion.h
PATHS $ENV{IPPROOT}
PATH_SUFFIXES include
DOC
"The path to Intel(R) IPP header files"
NO_DEFAULT_PATH
NO_CMAKE_PATH
)
if
(
IPP_H_PATH
)
set
(
IPP_FOUND 1
)
# traverse up to IPPROOT level
get_filename_component
(
IPP_ROOT_DIR
${
IPP_H_PATH
}
PATH
)
# extract IPP version info
get_ipp_version
(
${
IPP_ROOT_DIR
}
)
# keep info in the same vars for auto search and search by IPPROOT
set
(
IPP_LATEST_VERSION_STR
${
IPP_VERSION_STR
}
)
set
(
IPP_LATEST_VERSION_MAJOR
${
IPP_VERSION_MAJOR
}
)
set
(
IPP_LATEST_VERSION_MINOR
${
IPP_VERSION_MINOR
}
)
set
(
IPP_LATEST_VERSION_BUILD
${
IPP_VERSION_BUILD
}
)
# set IPP INCLUDE, LIB dirs and library names
set_ipp_variables
(
${
IPP_LATEST_VERSION_STR
}
)
endif
()
# ------------------------------------------------------------------------
# This section will look for IPP through IPPROOT env variable
# Note, IPPROOT is not set by IPP installer, you may need to set it manually
# ------------------------------------------------------------------------
find_path
(
IPP_H_PATH
NAMES ippversion.h
PATHS $ENV{IPPROOT}
PATH_SUFFIXES include
DOC
"The path to Intel(R) IPP header files"
NO_DEFAULT_PATH
NO_CMAKE_PATH
)
if
(
IPP_H_PATH
)
set
(
IPP_FOUND 1
)
# traverse up to IPPROOT level
get_filename_component
(
IPP_ROOT_DIR
${
IPP_H_PATH
}
PATH
)
# extract IPP version info
get_ipp_version
(
${
IPP_ROOT_DIR
}
)
# keep info in the same vars for auto search and search by IPPROOT
set
(
IPP_LATEST_VERSION_STR
${
IPP_VERSION_STR
}
)
set
(
IPP_LATEST_VERSION_MAJOR
${
IPP_VERSION_MAJOR
}
)
set
(
IPP_LATEST_VERSION_MINOR
${
IPP_VERSION_MINOR
}
)
set
(
IPP_LATEST_VERSION_BUILD
${
IPP_VERSION_BUILD
}
)
# set IPP INCLUDE, LIB dirs and library names
set_ipp_variables
(
${
IPP_LATEST_VERSION_STR
}
)
endif
()
if
(
IPP_FOUND
)
return
()
endif
()
if
(
NOT IPP_FOUND
)
# reset var from previous search
set
(
IPP_H_PATH
)
...
...
@@ -304,19 +299,38 @@ endfunction()
endforeach
()
endif
()
endforeach
()
endif
()
if
(
IPP_FOUND
)
# set IPP INCLUDE, LIB dirs and library names
set_ipp_variables
(
${
IPP_LATEST_VERSION_STR
}
)
# set CACHE variable IPP_H_PATH,
# path to IPP header files for the latest version
find_path
(
IPP_H_PATH
NAMES ippversion.h
PATHS
${
IPP_ROOT_DIR
}
PATH_SUFFIXES include
DOC
"The path to Intel(R) IPP header files"
NO_DEFAULT_PATH
NO_CMAKE_PATH
)
endif
()
if
(
IPP_FOUND
)
# set IPP INCLUDE, LIB dirs and library names
set_ipp_variables
(
${
IPP_LATEST_VERSION_STR
}
)
# set CACHE variable IPP_H_PATH,
# path to IPP header files for the latest version
find_path
(
IPP_H_PATH
NAMES ippversion.h
PATHS
${
IPP_ROOT_DIR
}
PATH_SUFFIXES include
DOC
"The path to Intel(R) IPP header files"
NO_DEFAULT_PATH
NO_CMAKE_PATH
)
endif
()
if
(
WIN32 AND MINGW AND NOT IPP_LATEST_VERSION_MAJOR LESS 7
)
# Since IPP built with Microsoft compiler and /GS option
# ======================================================
# From Windows SDK 7.1
# (usually in "C:\Program Files\Microsoft Visual Studio 10.0\VC\lib"),
# to avoid undefined reference to __security_cookie and _chkstk:
set
(
MSV_RUNTMCHK
"RunTmChk"
)
set
(
IPP_LIBRARIES
${
IPP_LIBRARIES
}
${
MSV_RUNTMCHK
}${
IPP_LIB_SUFFIX
}
)
# To avoid undefined reference to _alldiv and _chkstk
# ===================================================
# NB: it may require a recompilation of w32api (after having modified
# the file ntdll.def) to export the required functions
# See http://code.opencv.org/issues/1906 for additional details
set
(
MSV_NTDLL
"ntdll"
)
set
(
IPP_LIBRARIES
${
IPP_LIBRARIES
}
${
MSV_NTDLL
}${
IPP_LIB_SUFFIX
}
)
endif
()
\ No newline at end of file
modules/core/doc/basic_structures.rst
View file @
e1c4fd9e
...
...
@@ -2324,6 +2324,7 @@ The class provides the following features for all derived classes:
Here is example of SIFT use in your application via Algorithm interface: ::
#include "opencv2/opencv.hpp"
#include "opencv2/nonfree/nonfree.hpp"
...
...
...
@@ -2334,22 +2335,22 @@ Here is example of SIFT use in your application via Algorithm interface: ::
FileStorage fs("sift_params.xml", FileStorage::READ);
if( fs.isOpened() ) // if we have file with parameters, read them
{
sift
.
read(fs["sift_params"]);
sift
->
read(fs["sift_params"]);
fs.release();
}
else // else modify the parameters and store them; user can later edit the file to use different parameters
{
sift
.
set("contrastThreshold", 0.01f); // lower the contrast threshold, compared to the default value
sift
->
set("contrastThreshold", 0.01f); // lower the contrast threshold, compared to the default value
{
WriteStructContext ws(fs, "sift_params", CV_NODE_MAP);
sift
.
write(fs);
sift
->
write(fs);
}
}
Mat image = imread("myimage.png", 0), descriptors;
vector<KeyPoint> keypoints;
sift
(image, noArray(), keypoints, descriptors);
(*sift)
(image, noArray(), keypoints, descriptors);
Algorithm::get
...
...
modules/core/src/matrix.cpp
View file @
e1c4fd9e
...
...
@@ -2897,8 +2897,16 @@ cvKMeans2( const CvArr* _samples, int cluster_count, CvArr* _labels,
namespace
cv
{
Mat
Mat
::
reshape
(
int
,
int
,
const
int
*
)
const
Mat
Mat
::
reshape
(
int
_cn
,
int
_newndims
,
const
int
*
_newsz
)
const
{
if
(
_newndims
==
dims
)
{
if
(
_newsz
==
0
)
return
reshape
(
_cn
);
if
(
_newndims
==
2
)
return
reshape
(
_cn
,
_newsz
[
0
]);
}
CV_Error
(
CV_StsNotImplemented
,
""
);
// TBD
return
Mat
();
...
...
modules/core/test/test_mat.cpp
View file @
e1c4fd9e
...
...
@@ -861,3 +861,14 @@ TEST(Core_IOArray, submat_create)
EXPECT_THROW
(
OutputArray_create1
(
A
.
row
(
0
)),
cv
::
Exception
);
EXPECT_THROW
(
OutputArray_create2
(
A
.
row
(
0
)),
cv
::
Exception
);
}
TEST
(
Core_Mat
,
reshape_1942
)
{
cv
::
Mat
A
=
(
cv
::
Mat_
<
float
>
(
2
,
3
)
<<
3.4884074
,
1.4159607
,
0.78737736
,
2.3456569
,
-
0.88010466
,
0.3009364
);
int
cn
=
0
;
ASSERT_NO_THROW
(
cv
::
Mat_
<
float
>
M
=
A
.
reshape
(
3
);
cn
=
M
.
channels
();
);
ASSERT_EQ
(
1
,
cn
);
}
\ No newline at end of file
modules/highgui/src/cap_avfoundation.mm
View file @
e1c4fd9e
...
...
@@ -381,9 +381,12 @@ int CvCaptureCAM::startCaptureDevice(int cameraNum) {
//TODO: add new interface for setting fps and capturing resolution.
[mCaptureDecompressedVideoOutput setVideoSettings:pixelBufferOptions];
mCaptureDecompressedVideoOutput.alwaysDiscardsLateVideoFrames = YES;
mCaptureDecompressedVideoOutput.minFrameDuration = CMTimeMake(1, 30);
mCaptureDecompressedVideoOutput.alwaysDiscardsLateVideoFrames = YES;
#if TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR
mCaptureDecompressedVideoOutput.minFrameDuration = CMTimeMake(1, 30);
#endif
//Slow. 1280*720 for iPhone4, iPod back camera. 640*480 for front camera
//mCaptureSession.sessionPreset = AVCaptureSessionPresetHigh; // fps ~= 5 slow for OpenCV
...
...
@@ -1150,9 +1153,11 @@ CvVideoWriter_AVFoundation::CvVideoWriter_AVFoundation(const char* filename, int
fileType = [AVFileTypeMPEG4 copy];
}else if ([fileExt isEqualToString:@"m4v"]){
fileType = [AVFileTypeAppleM4V copy];
#if TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR
}else if ([fileExt isEqualToString:@"3gp"] || [fileExt isEqualToString:@"3gpp"] || [fileExt isEqualToString:@"sdv"] ){
fileType = [AVFileType3GPP copy];
}else{
#endif
} else{
fileType = [AVFileTypeMPEG4 copy]; //default mp4
}
[fileExt release];
...
...
modules/highgui/src/window_w32.cpp
View file @
e1c4fd9e
...
...
@@ -47,6 +47,18 @@
#pragma warning( disable: 4710 )
#endif
#define COMPILE_MULTIMON_STUBS // Required for multi-monitor support
#if defined SM_CMONITORS && !defined MONITOR_DEFAULTTONEAREST
# define MONITOR_DEFAULTTONULL 0x00000000
# define MONITOR_DEFAULTTOPRIMARY 0x00000001
# define MONITOR_DEFAULTTONEAREST 0x00000002
# define MONITORINFOF_PRIMARY 0x00000001
#endif
#ifndef __inout
# define __inout
#endif
#include <MultiMon.h>
#include <commctrl.h>
#include <winuser.h>
#include <stdlib.h>
...
...
@@ -420,7 +432,6 @@ double cvGetModeWindow_W32(const char* name)//YV
return
result
;
}
#ifdef MONITOR_DEFAULTTONEAREST
void
cvSetModeWindow_W32
(
const
char
*
name
,
double
prop_value
)
//Yannick Verdie
{
CV_FUNCNAME
(
"cvSetModeWindow_W32"
);
...
...
@@ -484,11 +495,6 @@ void cvSetModeWindow_W32( const char* name, double prop_value)//Yannick Verdie
__END__
;
}
#else
void
cvSetModeWindow_W32
(
const
char
*
,
double
)
{
}
#endif
double
cvGetPropWindowAutoSize_W32
(
const
char
*
name
)
{
...
...
@@ -1065,7 +1071,7 @@ CV_IMPL int cvNamedWindow( const char* name, int flags )
icvSetWindowLongPtr
(
hWnd
,
CV_USERDATA
,
window
);
icvSetWindowLongPtr
(
mainhWnd
,
CV_USERDATA
,
window
);
// Recalculate window pos
ition
// Recalculate window pos
icvUpdateWindowPos
(
window
);
result
=
1
;
...
...
@@ -1633,7 +1639,7 @@ MainWindowProc( HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam )
{
WINDOWPOS
*
pos
=
(
WINDOWPOS
*
)
lParam
;
// Update the toolbar pos
ition
/size
// Update the toolbar pos/size
if
(
window
->
toolbar
.
toolbar
)
{
RECT
rect
;
...
...
@@ -1647,6 +1653,36 @@ MainWindowProc( HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam )
break
;
}
case
WM_WINDOWPOSCHANGING
:
{
// Snap window to screen edges with multi-monitor support. // Adi Shavit
LPWINDOWPOS
pos
=
(
LPWINDOWPOS
)
lParam
;
RECT
rect
;
GetWindowRect
(
window
->
frame
,
&
rect
);
HMONITOR
hMonitor
;
hMonitor
=
MonitorFromRect
(
&
rect
,
MONITOR_DEFAULTTONEAREST
);
MONITORINFO
mi
;
mi
.
cbSize
=
sizeof
(
mi
);
GetMonitorInfo
(
hMonitor
,
&
mi
);
const
int
SNAP_DISTANCE
=
15
;
if
(
abs
(
pos
->
x
-
mi
.
rcMonitor
.
left
)
<=
SNAP_DISTANCE
)
pos
->
x
=
mi
.
rcMonitor
.
left
;
// snap to left edge
else
if
(
abs
(
pos
->
x
+
pos
->
cx
-
mi
.
rcMonitor
.
right
)
<=
SNAP_DISTANCE
)
pos
->
x
=
mi
.
rcMonitor
.
right
-
pos
->
cx
;
// snap to right edge
if
(
abs
(
pos
->
y
-
mi
.
rcMonitor
.
top
)
<=
SNAP_DISTANCE
)
pos
->
y
=
mi
.
rcMonitor
.
top
;
// snap to top edge
else
if
(
abs
(
pos
->
y
+
pos
->
cy
-
mi
.
rcMonitor
.
bottom
)
<=
SNAP_DISTANCE
)
pos
->
y
=
mi
.
rcMonitor
.
bottom
-
pos
->
cy
;
// snap to bottom edge
}
case
WM_ACTIVATE
:
if
(
LOWORD
(
wParam
)
==
WA_ACTIVE
||
LOWORD
(
wParam
)
==
WA_CLICKACTIVE
)
SetFocus
(
window
->
hwnd
);
...
...
@@ -2199,7 +2235,7 @@ icvCreateTrackbar( const char* trackbar_name, const char* window_name,
SendMessage
(
window
->
toolbar
.
toolbar
,
TB_SETBUTTONINFO
,
(
WPARAM
)
tbs
.
idCommand
,
(
LPARAM
)
&
tbis
);
/* Get button pos
ition
*/
/* Get button pos */
SendMessage
(
window
->
toolbar
.
toolbar
,
TB_GETITEMRECT
,
(
WPARAM
)
tbs
.
idCommand
,
(
LPARAM
)
&
rect
);
...
...
modules/imgproc/src/accum.cpp
View file @
e1c4fd9e
...
...
@@ -272,7 +272,7 @@ accW_( const T* src, AT* dst, const uchar* mask, int len, int cn, double alpha )
if
(
mask
[
i
]
)
{
for
(
int
k
=
0
;
k
<
cn
;
k
++
)
dst
[
k
]
+
=
src
[
k
]
*
a
+
dst
[
k
]
*
b
;
dst
[
k
]
=
src
[
k
]
*
a
+
dst
[
k
]
*
b
;
}
}
}
...
...
modules/imgproc/src/phasecorr.cpp
View file @
e1c4fd9e
...
...
@@ -556,7 +556,7 @@ cv::Point2d cv::phaseCorrelate(InputArray _src1, InputArray _src2, InputArray _w
t
=
weightedCentroid
(
C
,
peakLoc
,
Size
(
5
,
5
));
// adjust shift relative to image center...
Point2d
center
((
double
)
src1
.
cols
/
2.0
,
(
double
)
src
1
.
rows
/
2.0
);
Point2d
center
((
double
)
padded1
.
cols
/
2.0
,
(
double
)
padded
1
.
rows
/
2.0
);
return
(
center
-
t
);
}
...
...
modules/imgproc/src/utils.cpp
View file @
e1c4fd9e
...
...
@@ -203,9 +203,6 @@ void cv::copyMakeBorder( InputArray _src, OutputArray _dst, int top, int bottom,
Mat
src
=
_src
.
getMat
();
CV_Assert
(
top
>=
0
&&
bottom
>=
0
&&
left
>=
0
&&
right
>=
0
);
_dst
.
create
(
src
.
rows
+
top
+
bottom
,
src
.
cols
+
left
+
right
,
src
.
type
()
);
Mat
dst
=
_dst
.
getMat
();
if
(
src
.
isSubmatrix
()
&&
(
borderType
&
BORDER_ISOLATED
)
==
0
)
{
Size
wholeSize
;
...
...
@@ -221,6 +218,16 @@ void cv::copyMakeBorder( InputArray _src, OutputArray _dst, int top, int bottom,
bottom
-=
dbottom
;
right
-=
dright
;
}
_dst
.
create
(
src
.
rows
+
top
+
bottom
,
src
.
cols
+
left
+
right
,
src
.
type
()
);
Mat
dst
=
_dst
.
getMat
();
if
(
top
==
0
&&
left
==
0
&&
bottom
==
0
&&
right
==
0
)
{
if
(
src
.
data
!=
dst
.
data
)
src
.
copyTo
(
dst
);
return
;
}
borderType
&=
~
BORDER_ISOLATED
;
...
...
modules/imgproc/test/test_pc.cpp
View file @
e1c4fd9e
...
...
@@ -63,8 +63,8 @@ void CV_PhaseCorrelatorTest::run( int )
{
ts
->
set_failed_test_info
(
cvtest
::
TS
::
OK
);
Mat
r1
=
Mat
::
ones
(
Size
(
12
8
,
128
),
CV_64F
);
Mat
r2
=
Mat
::
ones
(
Size
(
12
8
,
128
),
CV_64F
);
Mat
r1
=
Mat
::
ones
(
Size
(
12
9
,
128
),
CV_64F
);
Mat
r2
=
Mat
::
ones
(
Size
(
12
9
,
128
),
CV_64F
);
double
expectedShiftX
=
-
10.0
;
double
expectedShiftY
=
-
20.0
;
...
...
modules/video/include/opencv2/video/tracking.hpp
View file @
e1c4fd9e
...
...
@@ -48,7 +48,7 @@
#define __OPENCV_TRACKING_HPP__
#include "opencv2/core/core.hpp"
#include "opencv2/imgproc/imgproc
_c.h
"
#include "opencv2/imgproc/imgproc
.hpp
"
#ifdef __cplusplus
extern
"C"
{
...
...
@@ -303,16 +303,19 @@ enum
OPTFLOW_FARNEBACK_GAUSSIAN
=
256
};
//! constructs a pyramid which can be used as input for calcOpticalFlowPyrLK
CV_EXPORTS_W
int
buildOpticalFlowPyramid
(
InputArray
_img
,
OutputArrayOfArrays
pyramid
,
Size
winSize
,
int
maxLevel
,
bool
withDerivatives
=
true
,
int
pyrBorder
=
BORDER_REFLECT_101
,
int
derivBorder
=
BORDER_CONSTANT
,
bool
tryReuseInputImage
=
true
);
//! computes sparse optical flow using multi-scale Lucas-Kanade algorithm
CV_EXPORTS_W
void
calcOpticalFlowPyrLK
(
InputArray
prevImg
,
InputArray
nextImg
,
InputArray
prevPts
,
CV_OUT
InputOutputArray
nextPts
,
OutputArray
status
,
OutputArray
err
,
Size
winSize
=
Size
(
21
,
21
),
int
maxLevel
=
3
,
TermCriteria
criteria
=
TermCriteria
(
TermCriteria
::
COUNT
+
TermCriteria
::
EPS
,
30
,
0.01
),
int
flags
=
0
,
double
minEigThreshold
=
1e-4
);
TermCriteria
criteria
=
TermCriteria
(
TermCriteria
::
COUNT
+
TermCriteria
::
EPS
,
30
,
0.01
),
int
flags
=
0
,
double
minEigThreshold
=
1e-4
);
//! computes dense optical flow using Farneback algorithm
CV_EXPORTS_W
void
calcOpticalFlowFarneback
(
InputArray
prev
,
InputArray
next
,
...
...
modules/video/perf/perf_optflowpyrlk.cpp
View file @
e1c4fd9e
...
...
@@ -33,7 +33,7 @@ PERF_TEST_P(Path_Idx_Cn_NPoints_WSize, OpticalFlowPyrLK, testing::Combine(
testing
::
Range
(
0
,
3
),
testing
::
Values
(
1
,
3
,
4
),
testing
::
Values
(
make_tuple
(
9
,
9
),
make_tuple
(
15
,
15
)),
testing
::
Values
(
11
,
21
,
25
)
testing
::
Values
(
7
,
11
,
21
,
25
)
)
)
{
...
...
@@ -49,7 +49,7 @@ PERF_TEST_P(Path_Idx_Cn_NPoints_WSize, OpticalFlowPyrLK, testing::Combine(
int
nPointsY
=
min
(
get
<
1
>
(
get
<
3
>
(
GetParam
())),
img1
.
rows
);
int
winSize
=
get
<
4
>
(
GetParam
());
int
maxLevel
=
2
;
TermCriteria
criteria
(
CV_TERMCRIT_ITER
|
CV_TERMCRIT_EPS
,
5
,
0.
01
);
TermCriteria
criteria
(
CV_TERMCRIT_ITER
|
CV_TERMCRIT_EPS
,
7
,
0.0
01
);
int
flags
=
0
;
double
minEigThreshold
=
1e-4
;
...
...
modules/video/src/bgfg_gaussmix2.cpp
View file @
e1c4fd9e
...
...
@@ -571,7 +571,7 @@ void BackgroundSubtractorMOG2::operator()(InputArray _image, OutputArray _fgmask
bgmodelUsedModes
.
data
,
nmixtures
,
(
float
)
learningRate
,
(
float
)
varThreshold
,
backgroundRatio
,
varThresholdGen
,
fVarInit
,
fVarMin
,
fVarMax
,
fCT
,
fTau
,
fVarInit
,
fVarMin
,
fVarMax
,
-
learningRate
*
fCT
,
fTau
,
bShadowDetection
,
nShadowDetection
));
}
}
...
...
modules/video/src/lkpyramid.cpp
View file @
e1c4fd9e
This diff is collapsed.
Click to expand it.
modules/video/src/precomp.hpp
View file @
e1c4fd9e
...
...
@@ -53,7 +53,7 @@
#include "opencv2/video/tracking.hpp"
#include "opencv2/video/background_segm.hpp"
#include "opencv2/imgproc/imgproc
.hpp
"
#include "opencv2/imgproc/imgproc
_c.h
"
#include "opencv2/core/internal.hpp"
#ifdef HAVE_TEGRA_OPTIMIZATION
...
...
samples/android/15-puzzle/src/org/opencv/samples/puzzle15/SampleCvViewBase.java
View file @
e1c4fd9e
...
...
@@ -26,13 +26,36 @@ public abstract class SampleCvViewBase extends SurfaceView implements SurfaceHol
Log
.
i
(
TAG
,
"Instantiated new "
+
this
.
getClass
());
}
public
void
surfaceChanged
(
SurfaceHolder
_holder
,
int
format
,
int
width
,
int
height
)
{
Log
.
i
(
TAG
,
"surfaceCreated"
);
public
boolean
openCamera
()
{
Log
.
i
(
TAG
,
"openCamera"
);
synchronized
(
this
)
{
releaseCamera
();
mCamera
=
new
VideoCapture
(
Highgui
.
CV_CAP_ANDROID
);
if
(!
mCamera
.
isOpened
())
{
mCamera
.
release
();
mCamera
=
null
;
Log
.
e
(
TAG
,
"Failed to open native camera"
);
return
false
;
}
}
return
true
;
}
public
void
releaseCamera
()
{
Log
.
i
(
TAG
,
"releaseCamera"
);
synchronized
(
this
)
{
if
(
mCamera
!=
null
)
{
mCamera
.
release
();
mCamera
=
null
;
}
}
}
public
void
setupCamera
(
int
width
,
int
height
)
{
Log
.
i
(
TAG
,
"setupCamera("
+
width
+
", "
+
height
+
")"
);
synchronized
(
this
)
{
if
(
mCamera
!=
null
&&
mCamera
.
isOpened
())
{
Log
.
i
(
TAG
,
"before mCamera.getSupportedPreviewSizes()"
);
List
<
Size
>
sizes
=
mCamera
.
getSupportedPreviewSizes
();
Log
.
i
(
TAG
,
"after mCamera.getSupportedPreviewSizes()"
);
int
mFrameWidth
=
width
;
int
mFrameHeight
=
height
;
...
...
@@ -52,28 +75,22 @@ public abstract class SampleCvViewBase extends SurfaceView implements SurfaceHol
mCamera
.
set
(
Highgui
.
CV_CAP_PROP_FRAME_HEIGHT
,
mFrameHeight
);
}
}
}
public
void
surfaceChanged
(
SurfaceHolder
_holder
,
int
format
,
int
width
,
int
height
)
{
Log
.
i
(
TAG
,
"surfaceChanged"
);
setupCamera
(
width
,
height
);
}
public
void
surfaceCreated
(
SurfaceHolder
holder
)
{
Log
.
i
(
TAG
,
"surfaceCreated"
);
mCamera
=
new
VideoCapture
(
Highgui
.
CV_CAP_ANDROID
);
if
(
mCamera
.
isOpened
())
{
(
new
Thread
(
this
)).
start
();
}
else
{
mCamera
.
release
();
mCamera
=
null
;
Log
.
e
(
TAG
,
"Failed to open native camera"
);
}
(
new
Thread
(
this
)).
start
();
}
public
void
surfaceDestroyed
(
SurfaceHolder
holder
)
{
Log
.
i
(
TAG
,
"surfaceDestroyed"
);
if
(
mCamera
!=
null
)
{
synchronized
(
this
)
{
mCamera
.
release
();
mCamera
=
null
;
}
}
releaseCamera
();
}
protected
abstract
Bitmap
processFrame
(
VideoCapture
capture
);
...
...
samples/android/15-puzzle/src/org/opencv/samples/puzzle15/puzzle15Activity.java
View file @
e1c4fd9e
package
org
.
opencv
.
samples
.
puzzle15
;
import
android.app.Activity
;
import
android.app.AlertDialog
;
import
android.content.DialogInterface
;
import
android.os.Bundle
;
import
android.util.Log
;
import
android.view.Menu
;
...
...
@@ -18,6 +20,31 @@ public class puzzle15Activity extends Activity {
Log
.
i
(
TAG
,
"Instantiated new "
+
this
.
getClass
());
}
@Override
protected
void
onPause
()
{
Log
.
i
(
TAG
,
"onPause"
);
super
.
onPause
();
mView
.
releaseCamera
();
}
@Override
protected
void
onResume
()
{
Log
.
i
(
TAG
,
"onResume"
);
super
.
onResume
();
if
(
!
mView
.
openCamera
()
)
{
AlertDialog
ad
=
new
AlertDialog
.
Builder
(
this
).
create
();
ad
.
setCancelable
(
false
);
// This blocks the 'BACK' button
ad
.
setMessage
(
"Fatal error: can't open camera!"
);
ad
.
setButton
(
"OK"
,
new
DialogInterface
.
OnClickListener
()
{
public
void
onClick
(
DialogInterface
dialog
,
int
which
)
{
dialog
.
dismiss
();
finish
();
}
});
ad
.
show
();
}
}
/** Called when the activity is first created. */
@Override
public
void
onCreate
(
Bundle
savedInstanceState
)
{
...
...
samples/android/15-puzzle/src/org/opencv/samples/puzzle15/puzzle15View.java
View file @
e1c4fd9e
...
...
@@ -18,7 +18,7 @@ import android.view.View;
import
android.view.View.OnTouchListener
;
public
class
puzzle15View
extends
SampleCvViewBase
implements
OnTouchListener
{
private
Mat
mRgba
;
private
Mat
mRgba
;
private
Mat
mRgba15
;
private
Mat
[]
mCells
;
private
Mat
[]
mCells15
;
...
...
@@ -45,13 +45,13 @@ public class puzzle15View extends SampleCvViewBase implements OnTouchListener {
}
@Override
public
void
surfaceChanged
(
SurfaceHolder
_holder
,
int
format
,
int
width
,
int
height
)
{
super
.
surfaceChanged
(
_holder
,
format
,
width
,
height
);
public
void
surfaceCreated
(
SurfaceHolder
holder
)
{
synchronized
(
this
)
{
// initialize Mat before usage
mRgba
=
new
Mat
();
}
}
super
.
surfaceCreated
(
holder
);
}
public
static
void
shuffle
(
int
[]
array
)
{
for
(
int
i
=
array
.
length
;
i
>
1
;
i
--)
{
...
...
@@ -185,7 +185,9 @@ public class puzzle15View extends SampleCvViewBase implements OnTouchListener {
}
public
boolean
onTouch
(
View
v
,
MotionEvent
event
)
{
int
cols
=
mRgba
.
cols
();
if
(
mRgba
==
null
)
return
false
;
int
cols
=
mRgba
.
cols
();
int
rows
=
mRgba
.
rows
();
float
xoffset
=
(
getWidth
()
-
cols
)
/
2
;
float
yoffset
=
(
getHeight
()
-
rows
)
/
2
;
...
...
samples/android/color-blob-detection/src/org/opencv/samples/colorblobdetect/ColorBlobDetectionActivity.java
View file @
e1c4fd9e
package
org
.
opencv
.
samples
.
colorblobdetect
;
import
android.app.Activity
;
import
android.app.AlertDialog
;
import
android.content.DialogInterface
;
import
android.os.Bundle
;
import
android.util.Log
;
import
android.view.Window
;
...
...
@@ -15,6 +17,31 @@ public class ColorBlobDetectionActivity extends Activity {
Log
.
i
(
TAG
,
"Instantiated new "
+
this
.
getClass
());
}
@Override
protected
void
onPause
()
{
Log
.
i
(
TAG
,
"onPause"
);
super
.
onPause
();
mView
.
releaseCamera
();
}
@Override
protected
void
onResume
()
{
Log
.
i
(
TAG
,
"onResume"
);
super
.
onResume
();
if
(
!
mView
.
openCamera
()
)
{
AlertDialog
ad
=
new
AlertDialog
.
Builder
(
this
).
create
();
ad
.
setCancelable
(
false
);
// This blocks the 'BACK' button
ad
.
setMessage
(
"Fatal error: can't open camera!"
);
ad
.
setButton
(
"OK"
,
new
DialogInterface
.
OnClickListener
()
{
public
void
onClick
(
DialogInterface
dialog
,
int
which
)
{
dialog
.
dismiss
();
finish
();
}
});
ad
.
show
();
}
}
/** Called when the activity is first created. */
@Override
public
void
onCreate
(
Bundle
savedInstanceState
)
{
...
...
samples/android/color-blob-detection/src/org/opencv/samples/colorblobdetect/ColorBlobDetectionView.java
View file @
e1c4fd9e
...
...
@@ -56,12 +56,13 @@ public class ColorBlobDetectionView extends SampleCvViewBase implements OnTouchL
}
@Override
public
void
surfaceChanged
(
SurfaceHolder
_holder
,
int
format
,
int
width
,
int
height
)
{
super
.
surfaceChanged
(
_holder
,
format
,
width
,
height
);
public
void
surfaceCreated
(
SurfaceHolder
holder
)
{
synchronized
(
this
)
{
// initialize Mat before usage
mRgba
=
new
Mat
();
}
super
.
surfaceCreated
(
holder
);
}
public
boolean
onTouch
(
View
v
,
MotionEvent
event
)
...
...
samples/android/color-blob-detection/src/org/opencv/samples/colorblobdetect/SampleCvViewBase.java
View file @
e1c4fd9e
...
...
@@ -26,13 +26,36 @@ public abstract class SampleCvViewBase extends SurfaceView implements SurfaceHol
Log
.
i
(
TAG
,
"Instantiated new "
+
this
.
getClass
());
}
public
void
surfaceChanged
(
SurfaceHolder
_holder
,
int
format
,
int
width
,
int
height
)
{
Log
.
i
(
TAG
,
"surfaceCreated"
);
public
boolean
openCamera
()
{
Log
.
i
(
TAG
,
"openCamera"
);
synchronized
(
this
)
{
releaseCamera
();
mCamera
=
new
VideoCapture
(
Highgui
.
CV_CAP_ANDROID
);
if
(!
mCamera
.
isOpened
())
{
mCamera
.
release
();
mCamera
=
null
;
Log
.
e
(
TAG
,
"Failed to open native camera"
);
return
false
;
}
}
return
true
;
}
public
void
releaseCamera
()
{
Log
.
i
(
TAG
,
"releaseCamera"
);
synchronized
(
this
)
{
if
(
mCamera
!=
null
)
{
mCamera
.
release
();
mCamera
=
null
;
}
}
}
public
void
setupCamera
(
int
width
,
int
height
)
{
Log
.
i
(
TAG
,
"setupCamera("
+
width
+
", "
+
height
+
")"
);
synchronized
(
this
)
{
if
(
mCamera
!=
null
&&
mCamera
.
isOpened
())
{
Log
.
i
(
TAG
,
"before mCamera.getSupportedPreviewSizes()"
);
List
<
Size
>
sizes
=
mCamera
.
getSupportedPreviewSizes
();
Log
.
i
(
TAG
,
"after mCamera.getSupportedPreviewSizes()"
);
int
mFrameWidth
=
width
;
int
mFrameHeight
=
height
;
...
...
@@ -52,28 +75,22 @@ public abstract class SampleCvViewBase extends SurfaceView implements SurfaceHol
mCamera
.
set
(
Highgui
.
CV_CAP_PROP_FRAME_HEIGHT
,
mFrameHeight
);
}
}
}
public
void
surfaceChanged
(
SurfaceHolder
_holder
,
int
format
,
int
width
,
int
height
)
{
Log
.
i
(
TAG
,
"surfaceChanged"
);
setupCamera
(
width
,
height
);
}
public
void
surfaceCreated
(
SurfaceHolder
holder
)
{
Log
.
i
(
TAG
,
"surfaceCreated"
);
mCamera
=
new
VideoCapture
(
Highgui
.
CV_CAP_ANDROID
);
if
(
mCamera
.
isOpened
())
{
(
new
Thread
(
this
)).
start
();
}
else
{
mCamera
.
release
();
mCamera
=
null
;
Log
.
e
(
TAG
,
"Failed to open native camera"
);
}
(
new
Thread
(
this
)).
start
();
}
public
void
surfaceDestroyed
(
SurfaceHolder
holder
)
{
Log
.
i
(
TAG
,
"surfaceDestroyed"
);
if
(
mCamera
!=
null
)
{
synchronized
(
this
)
{
mCamera
.
release
();
mCamera
=
null
;
}
}
releaseCamera
();
}
protected
abstract
Bitmap
processFrame
(
VideoCapture
capture
);
...
...
samples/android/face-detection/src/org/opencv/samples/fd/FdActivity.java
View file @
e1c4fd9e
package
org
.
opencv
.
samples
.
fd
;
import
android.app.Activity
;
import
android.app.AlertDialog
;
import
android.content.DialogInterface
;
import
android.os.Bundle
;
import
android.util.Log
;
import
android.view.Menu
;
...
...
@@ -14,6 +16,8 @@ public class FdActivity extends Activity {
private
MenuItem
mItemFace40
;
private
MenuItem
mItemFace30
;
private
MenuItem
mItemFace20
;
private
FdView
mView
;
public
static
float
minFaceSize
=
0.5f
;
...
...
@@ -21,13 +25,39 @@ public class FdActivity extends Activity {
Log
.
i
(
TAG
,
"Instantiated new "
+
this
.
getClass
());
}
@Override
protected
void
onPause
()
{
Log
.
i
(
TAG
,
"onPause"
);
super
.
onPause
();
mView
.
releaseCamera
();
}
@Override
protected
void
onResume
()
{
Log
.
i
(
TAG
,
"onResume"
);
super
.
onResume
();
if
(
!
mView
.
openCamera
()
)
{
AlertDialog
ad
=
new
AlertDialog
.
Builder
(
this
).
create
();
ad
.
setCancelable
(
false
);
// This blocks the 'BACK' button
ad
.
setMessage
(
"Fatal error: can't open camera!"
);
ad
.
setButton
(
"OK"
,
new
DialogInterface
.
OnClickListener
()
{
public
void
onClick
(
DialogInterface
dialog
,
int
which
)
{
dialog
.
dismiss
();
finish
();
}
});
ad
.
show
();
}
}
/** Called when the activity is first created. */
@Override
public
void
onCreate
(
Bundle
savedInstanceState
)
{
Log
.
i
(
TAG
,
"onCreate"
);
super
.
onCreate
(
savedInstanceState
);
requestWindowFeature
(
Window
.
FEATURE_NO_TITLE
);
setContentView
(
new
FdView
(
this
));
mView
=
new
FdView
(
this
);
setContentView
(
mView
);
}
@Override
...
...
samples/android/face-detection/src/org/opencv/samples/fd/FdView.java
View file @
e1c4fd9e
...
...
@@ -62,17 +62,17 @@ class FdView extends SampleCvViewBase {
}
@Override
public
void
surfaceChanged
(
SurfaceHolder
_holder
,
int
format
,
int
width
,
int
height
)
{
super
.
surfaceChanged
(
_holder
,
format
,
width
,
height
);
public
void
surfaceCreated
(
SurfaceHolder
holder
)
{
synchronized
(
this
)
{
// initialize Mats before usage
mGray
=
new
Mat
();
mRgba
=
new
Mat
();
}
}
@Override
super
.
surfaceCreated
(
holder
);
}
@Override
protected
Bitmap
processFrame
(
VideoCapture
capture
)
{
capture
.
retrieve
(
mRgba
,
Highgui
.
CV_CAP_ANDROID_COLOR_FRAME_RGBA
);
capture
.
retrieve
(
mGray
,
Highgui
.
CV_CAP_ANDROID_GREY_FRAME
);
...
...
samples/android/face-detection/src/org/opencv/samples/fd/SampleCvViewBase.java
View file @
e1c4fd9e
...
...
@@ -28,13 +28,36 @@ public abstract class SampleCvViewBase extends SurfaceView implements SurfaceHol
Log
.
i
(
TAG
,
"Instantiated new "
+
this
.
getClass
());
}
public
void
surfaceChanged
(
SurfaceHolder
_holder
,
int
format
,
int
width
,
int
height
)
{
Log
.
i
(
TAG
,
"surfaceCreated"
);
public
boolean
openCamera
()
{
Log
.
i
(
TAG
,
"openCamera"
);
synchronized
(
this
)
{
releaseCamera
();
mCamera
=
new
VideoCapture
(
Highgui
.
CV_CAP_ANDROID
);
if
(!
mCamera
.
isOpened
())
{
mCamera
.
release
();
mCamera
=
null
;
Log
.
e
(
TAG
,
"Failed to open native camera"
);
return
false
;
}
}
return
true
;
}
public
void
releaseCamera
()
{
Log
.
i
(
TAG
,
"releaseCamera"
);
synchronized
(
this
)
{
if
(
mCamera
!=
null
)
{
mCamera
.
release
();
mCamera
=
null
;
}
}
}
public
void
setupCamera
(
int
width
,
int
height
)
{
Log
.
i
(
TAG
,
"setupCamera("
+
width
+
", "
+
height
+
")"
);
synchronized
(
this
)
{
if
(
mCamera
!=
null
&&
mCamera
.
isOpened
())
{
Log
.
i
(
TAG
,
"before mCamera.getSupportedPreviewSizes()"
);
List
<
Size
>
sizes
=
mCamera
.
getSupportedPreviewSizes
();
Log
.
i
(
TAG
,
"after mCamera.getSupportedPreviewSizes()"
);
int
mFrameWidth
=
width
;
int
mFrameHeight
=
height
;
...
...
@@ -54,28 +77,22 @@ public abstract class SampleCvViewBase extends SurfaceView implements SurfaceHol
mCamera
.
set
(
Highgui
.
CV_CAP_PROP_FRAME_HEIGHT
,
mFrameHeight
);
}
}
}
public
void
surfaceChanged
(
SurfaceHolder
_holder
,
int
format
,
int
width
,
int
height
)
{
Log
.
i
(
TAG
,
"surfaceChanged"
);
setupCamera
(
width
,
height
);
}
public
void
surfaceCreated
(
SurfaceHolder
holder
)
{
Log
.
i
(
TAG
,
"surfaceCreated"
);
mCamera
=
new
VideoCapture
(
Highgui
.
CV_CAP_ANDROID
);
if
(
mCamera
.
isOpened
())
{
(
new
Thread
(
this
)).
start
();
}
else
{
mCamera
.
release
();
mCamera
=
null
;
Log
.
e
(
TAG
,
"Failed to open native camera"
);
}
(
new
Thread
(
this
)).
start
();
}
public
void
surfaceDestroyed
(
SurfaceHolder
holder
)
{
Log
.
i
(
TAG
,
"surfaceDestroyed"
);
if
(
mCamera
!=
null
)
{
synchronized
(
this
)
{
mCamera
.
release
();
mCamera
=
null
;
}
}
releaseCamera
();
}
protected
abstract
Bitmap
processFrame
(
VideoCapture
capture
);
...
...
samples/android/image-manipulations/src/org/opencv/samples/imagemanipulations/ImageManipulationsActivity.java
View file @
e1c4fd9e
package
org
.
opencv
.
samples
.
imagemanipulations
;
import
android.app.Activity
;
import
android.app.AlertDialog
;
import
android.content.DialogInterface
;
import
android.os.Bundle
;
import
android.util.Log
;
import
android.view.Menu
;
...
...
@@ -8,7 +10,8 @@ import android.view.MenuItem;
import
android.view.Window
;
public
class
ImageManipulationsActivity
extends
Activity
{
private
static
final
String
TAG
=
"Sample::Activity"
;
private
static
final
String
TAG
=
"Sample-ImageManipulations::Activity"
;
public
static
final
int
VIEW_MODE_RGBA
=
0
;
public
static
final
int
VIEW_MODE_HIST
=
1
;
...
...
@@ -29,18 +32,46 @@ public class ImageManipulationsActivity extends Activity {
private
MenuItem
mItemPreviewPosterize
;
public
static
int
viewMode
=
VIEW_MODE_RGBA
;
private
ImageManipulationsView
mView
;
public
ImageManipulationsActivity
()
{
Log
.
i
(
TAG
,
"Instantiated new "
+
this
.
getClass
());
}
@Override
protected
void
onPause
()
{
Log
.
i
(
TAG
,
"onPause"
);
super
.
onPause
();
mView
.
releaseCamera
();
}
@Override
protected
void
onResume
()
{
Log
.
i
(
TAG
,
"onResume"
);
super
.
onResume
();
if
(
!
mView
.
openCamera
()
)
{
AlertDialog
ad
=
new
AlertDialog
.
Builder
(
this
).
create
();
ad
.
setCancelable
(
false
);
// This blocks the 'BACK' button
ad
.
setMessage
(
"Fatal error: can't open camera!"
);
ad
.
setButton
(
"OK"
,
new
DialogInterface
.
OnClickListener
()
{
public
void
onClick
(
DialogInterface
dialog
,
int
which
)
{
dialog
.
dismiss
();
finish
();
}
});
ad
.
show
();
}
}
/** Called when the activity is first created. */
@Override
public
void
onCreate
(
Bundle
savedInstanceState
)
{
Log
.
i
(
TAG
,
"onCreate"
);
super
.
onCreate
(
savedInstanceState
);
requestWindowFeature
(
Window
.
FEATURE_NO_TITLE
);
setContentView
(
new
ImageManipulationsView
(
this
));
mView
=
new
ImageManipulationsView
(
this
);
setContentView
(
mView
);
}
@Override
...
...
samples/android/image-manipulations/src/org/opencv/samples/imagemanipulations/ImageManipulationsView.java
View file @
e1c4fd9e
...
...
@@ -55,9 +55,7 @@ class ImageManipulationsView extends SampleCvViewBase {
}
@Override
public
void
surfaceChanged
(
SurfaceHolder
_holder
,
int
format
,
int
width
,
int
height
)
{
super
.
surfaceChanged
(
_holder
,
format
,
width
,
height
);
public
void
surfaceCreated
(
SurfaceHolder
holder
)
{
synchronized
(
this
)
{
// initialize Mats before usage
mGray
=
new
Mat
();
...
...
@@ -83,9 +81,11 @@ class ImageManipulationsView extends SampleCvViewBase {
mP1
=
new
Point
();
mP2
=
new
Point
();
}
}
private
void
CreateAuxiliaryMats
()
{
super
.
surfaceCreated
(
holder
);
}
private
void
CreateAuxiliaryMats
()
{
if
(
mRgba
.
empty
())
return
;
...
...
samples/android/image-manipulations/src/org/opencv/samples/imagemanipulations/SampleCvViewBase.java
View file @
e1c4fd9e
...
...
@@ -14,7 +14,7 @@ import android.view.SurfaceHolder;
import
android.view.SurfaceView
;
public
abstract
class
SampleCvViewBase
extends
SurfaceView
implements
SurfaceHolder
.
Callback
,
Runnable
{
private
static
final
String
TAG
=
"Sample::SurfaceView"
;
private
static
final
String
TAG
=
"Sample
-ImageManipulations
::SurfaceView"
;
private
SurfaceHolder
mHolder
;
private
VideoCapture
mCamera
;
...
...
@@ -28,13 +28,36 @@ public abstract class SampleCvViewBase extends SurfaceView implements SurfaceHol
Log
.
i
(
TAG
,
"Instantiated new "
+
this
.
getClass
());
}
public
void
surfaceChanged
(
SurfaceHolder
_holder
,
int
format
,
int
width
,
int
height
)
{
Log
.
i
(
TAG
,
"surfaceCreated"
);
public
boolean
openCamera
()
{
Log
.
i
(
TAG
,
"openCamera"
);
synchronized
(
this
)
{
releaseCamera
();
mCamera
=
new
VideoCapture
(
Highgui
.
CV_CAP_ANDROID
);
if
(!
mCamera
.
isOpened
())
{
mCamera
.
release
();
mCamera
=
null
;
Log
.
e
(
TAG
,
"Failed to open native camera"
);
return
false
;
}
}
return
true
;
}
public
void
releaseCamera
()
{
Log
.
i
(
TAG
,
"releaseCamera"
);
synchronized
(
this
)
{
if
(
mCamera
!=
null
)
{
mCamera
.
release
();
mCamera
=
null
;
}
}
}
public
void
setupCamera
(
int
width
,
int
height
)
{
Log
.
i
(
TAG
,
"setupCamera("
+
width
+
", "
+
height
+
")"
);
synchronized
(
this
)
{
if
(
mCamera
!=
null
&&
mCamera
.
isOpened
())
{
Log
.
i
(
TAG
,
"before mCamera.getSupportedPreviewSizes()"
);
List
<
Size
>
sizes
=
mCamera
.
getSupportedPreviewSizes
();
Log
.
i
(
TAG
,
"after mCamera.getSupportedPreviewSizes()"
);
int
mFrameWidth
=
width
;
int
mFrameHeight
=
height
;
...
...
@@ -54,28 +77,22 @@ public abstract class SampleCvViewBase extends SurfaceView implements SurfaceHol
mCamera
.
set
(
Highgui
.
CV_CAP_PROP_FRAME_HEIGHT
,
mFrameHeight
);
}
}
}
public
void
surfaceChanged
(
SurfaceHolder
_holder
,
int
format
,
int
width
,
int
height
)
{
Log
.
i
(
TAG
,
"surfaceChanged"
);
setupCamera
(
width
,
height
);
}
public
void
surfaceCreated
(
SurfaceHolder
holder
)
{
Log
.
i
(
TAG
,
"surfaceCreated"
);
mCamera
=
new
VideoCapture
(
Highgui
.
CV_CAP_ANDROID
);
if
(
mCamera
.
isOpened
())
{
(
new
Thread
(
this
)).
start
();
}
else
{
mCamera
.
release
();
mCamera
=
null
;
Log
.
e
(
TAG
,
"Failed to open native camera"
);
}
(
new
Thread
(
this
)).
start
();
}
public
void
surfaceDestroyed
(
SurfaceHolder
holder
)
{
Log
.
i
(
TAG
,
"surfaceDestroyed"
);
if
(
mCamera
!=
null
)
{
synchronized
(
this
)
{
mCamera
.
release
();
mCamera
=
null
;
}
}
releaseCamera
();
}
protected
abstract
Bitmap
processFrame
(
VideoCapture
capture
);
...
...
@@ -88,8 +105,10 @@ public abstract class SampleCvViewBase extends SurfaceView implements SurfaceHol
Bitmap
bmp
=
null
;
synchronized
(
this
)
{
if
(
mCamera
==
null
)
if
(
mCamera
==
null
)
{
Log
.
i
(
TAG
,
"mCamera == null"
);
break
;
}
if
(!
mCamera
.
grab
())
{
Log
.
e
(
TAG
,
"mCamera.grab() failed"
);
...
...
samples/android/tutorial-0-androidcamera/res/values/strings.xml
View file @
e1c4fd9e
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string
name=
"app_name"
>
Tutorial
1 Basic - 0.
Android Camera
</string>
<string
name=
"app_name"
>
Tutorial
0 (Basic) -
Android Camera
</string>
</resources>
samples/android/tutorial-0-androidcamera/src/org/opencv/samples/tutorial0/Sample0Base.java
View file @
e1c4fd9e
package
org
.
opencv
.
samples
.
tutorial0
;
import
android.app.Activity
;
import
android.app.AlertDialog
;
import
android.content.DialogInterface
;
import
android.os.Bundle
;
import
android.util.Log
;
import
android.view.Menu
;
...
...
@@ -19,7 +21,32 @@ public class Sample0Base extends Activity {
Log
.
i
(
TAG
,
"Instantiated new "
+
this
.
getClass
());
}
/** Called when the activity is first created. */
@Override
protected
void
onPause
()
{
Log
.
i
(
TAG
,
"onPause"
);
super
.
onPause
();
mView
.
releaseCamera
();
}
@Override
protected
void
onResume
()
{
Log
.
i
(
TAG
,
"onResume"
);
super
.
onResume
();
if
(
!
mView
.
openCamera
()
)
{
AlertDialog
ad
=
new
AlertDialog
.
Builder
(
this
).
create
();
ad
.
setCancelable
(
false
);
// This blocks the 'BACK' button
ad
.
setMessage
(
"Fatal error: can't open camera!"
);
ad
.
setButton
(
"OK"
,
new
DialogInterface
.
OnClickListener
()
{
public
void
onClick
(
DialogInterface
dialog
,
int
which
)
{
dialog
.
dismiss
();
finish
();
}
});
ad
.
show
();
}
}
/** Called when the activity is first created. */
@Override
public
void
onCreate
(
Bundle
savedInstanceState
)
{
Log
.
i
(
TAG
,
"onCreate"
);
...
...
samples/android/tutorial-0-androidcamera/src/org/opencv/samples/tutorial0/Sample0View.java
View file @
e1c4fd9e
...
...
@@ -62,7 +62,8 @@ class Sample0View extends SampleViewBase {
}
@Override
protected
void
onPreviewStared
(
int
previewWidth
,
int
previewHeight
)
{
protected
void
onPreviewStarted
(
int
previewWidth
,
int
previewHeight
)
{
Log
.
i
(
TAG
,
"onPreviewStarted("
+
previewWidth
+
", "
+
previewHeight
+
")"
);
/* Create a bitmap that will be used through to calculate the image to */
mBitmap
=
Bitmap
.
createBitmap
(
previewWidth
,
previewHeight
,
Bitmap
.
Config
.
ARGB_8888
);
mRGBA
=
new
int
[
previewWidth
*
previewHeight
];
...
...
@@ -70,12 +71,19 @@ class Sample0View extends SampleViewBase {
@Override
protected
void
onPreviewStopped
()
{
mBitmap
.
recycle
();
mBitmap
=
null
;
mRGBA
=
null
;
Log
.
i
(
TAG
,
"onPreviewStopped"
);
if
(
mBitmap
!=
null
)
{
mBitmap
.
recycle
();
mBitmap
=
null
;
}
if
(
mRGBA
!=
null
)
{
mRGBA
=
null
;
}
}
public
void
setViewMode
(
int
viewMode
)
{
Log
.
i
(
TAG
,
"setViewMode("
+
viewMode
+
")"
);
mViewMode
=
viewMode
;
}
}
\ No newline at end of file
samples/android/tutorial-0-androidcamera/src/org/opencv/samples/tutorial0/SampleViewBase.java
View file @
e1c4fd9e
...
...
@@ -50,62 +50,14 @@ public abstract class SampleViewBase extends SurfaceView implements SurfaceHolde
}
public
void
surfaceChanged
(
SurfaceHolder
_holder
,
int
format
,
int
width
,
int
height
)
{
Log
.
i
(
TAG
,
"surfaceCreated"
);
if
(
mCamera
!=
null
)
{
Camera
.
Parameters
params
=
mCamera
.
getParameters
();
List
<
Camera
.
Size
>
sizes
=
params
.
getSupportedPreviewSizes
();
mFrameWidth
=
width
;
mFrameHeight
=
height
;
// selecting optimal camera preview size
{
int
minDiff
=
Integer
.
MAX_VALUE
;
for
(
Camera
.
Size
size
:
sizes
)
{
if
(
Math
.
abs
(
size
.
height
-
height
)
<
minDiff
)
{
mFrameWidth
=
size
.
width
;
mFrameHeight
=
size
.
height
;
minDiff
=
Math
.
abs
(
size
.
height
-
height
);
}
}
}
params
.
setPreviewSize
(
getFrameWidth
(),
getFrameHeight
());
List
<
String
>
FocusModes
=
params
.
getSupportedFocusModes
();
if
(
FocusModes
.
contains
(
Camera
.
Parameters
.
FOCUS_MODE_CONTINUOUS_VIDEO
))
{
params
.
setFocusMode
(
Camera
.
Parameters
.
FOCUS_MODE_CONTINUOUS_VIDEO
);
}
mCamera
.
setParameters
(
params
);
/* Now allocate the buffer */
params
=
mCamera
.
getParameters
();
int
size
=
params
.
getPreviewSize
().
width
*
params
.
getPreviewSize
().
height
;
size
=
size
*
ImageFormat
.
getBitsPerPixel
(
params
.
getPreviewFormat
())
/
8
;
mBuffer
=
new
byte
[
size
];
/* The buffer where the current frame will be coppied */
mFrame
=
new
byte
[
size
];
mCamera
.
addCallbackBuffer
(
mBuffer
);
try
{
setPreview
();
}
catch
(
IOException
e
)
{
Log
.
e
(
TAG
,
"mCamera.setPreviewDisplay/setPreviewTexture fails: "
+
e
);
}
/* Notify that the preview is about to be started and deliver preview size */
onPreviewStared
(
params
.
getPreviewSize
().
width
,
params
.
getPreviewSize
().
height
);
/* Now we can start a preview */
mCamera
.
startPreview
();
}
}
public
void
surfaceCreated
(
SurfaceHolder
holder
)
{
Log
.
i
(
TAG
,
"surfaceCreated"
);
public
boolean
openCamera
()
{
Log
.
i
(
TAG
,
"openCamera"
);
releaseCamera
();
mCamera
=
Camera
.
open
();
if
(
mCamera
==
null
)
{
Log
.
e
(
TAG
,
"Can't open camera!"
);
return
false
;
}
mCamera
.
setPreviewCallbackWithBuffer
(
new
PreviewCallback
()
{
public
void
onPreviewFrame
(
byte
[]
data
,
Camera
camera
)
{
...
...
@@ -116,15 +68,14 @@ public abstract class SampleViewBase extends SurfaceView implements SurfaceHolde
camera
.
addCallbackBuffer
(
mBuffer
);
}
});
(
new
Thread
(
this
)).
start
();
return
true
;
}
public
void
surfaceDestroyed
(
SurfaceHolder
holder
)
{
Log
.
i
(
TAG
,
"
surfaceDestroyed
"
);
public
void
releaseCamera
(
)
{
Log
.
i
(
TAG
,
"
releaseCamera
"
);
mThreadRun
=
false
;
if
(
mCamera
!=
null
)
{
synchronized
(
this
)
{
synchronized
(
this
)
{
if
(
mCamera
!=
null
)
{
mCamera
.
stopPreview
();
mCamera
.
setPreviewCallback
(
null
);
mCamera
.
release
();
...
...
@@ -133,22 +84,92 @@ public abstract class SampleViewBase extends SurfaceView implements SurfaceHolde
}
onPreviewStopped
();
}
public
void
setupCamera
(
int
width
,
int
height
)
{
Log
.
i
(
TAG
,
"setupCamera"
);
synchronized
(
this
)
{
if
(
mCamera
!=
null
)
{
Camera
.
Parameters
params
=
mCamera
.
getParameters
();
List
<
Camera
.
Size
>
sizes
=
params
.
getSupportedPreviewSizes
();
mFrameWidth
=
width
;
mFrameHeight
=
height
;
// selecting optimal camera preview size
{
int
minDiff
=
Integer
.
MAX_VALUE
;
for
(
Camera
.
Size
size
:
sizes
)
{
if
(
Math
.
abs
(
size
.
height
-
height
)
<
minDiff
)
{
mFrameWidth
=
size
.
width
;
mFrameHeight
=
size
.
height
;
minDiff
=
Math
.
abs
(
size
.
height
-
height
);
}
}
}
params
.
setPreviewSize
(
getFrameWidth
(),
getFrameHeight
());
List
<
String
>
FocusModes
=
params
.
getSupportedFocusModes
();
if
(
FocusModes
.
contains
(
Camera
.
Parameters
.
FOCUS_MODE_CONTINUOUS_VIDEO
))
{
params
.
setFocusMode
(
Camera
.
Parameters
.
FOCUS_MODE_CONTINUOUS_VIDEO
);
}
mCamera
.
setParameters
(
params
);
/* Now allocate the buffer */
params
=
mCamera
.
getParameters
();
int
size
=
params
.
getPreviewSize
().
width
*
params
.
getPreviewSize
().
height
;
size
=
size
*
ImageFormat
.
getBitsPerPixel
(
params
.
getPreviewFormat
())
/
8
;
mBuffer
=
new
byte
[
size
];
/* The buffer where the current frame will be copied */
mFrame
=
new
byte
[
size
];
mCamera
.
addCallbackBuffer
(
mBuffer
);
try
{
setPreview
();
}
catch
(
IOException
e
)
{
Log
.
e
(
TAG
,
"mCamera.setPreviewDisplay/setPreviewTexture fails: "
+
e
);
}
/* Notify that the preview is about to be started and deliver preview size */
onPreviewStarted
(
params
.
getPreviewSize
().
width
,
params
.
getPreviewSize
().
height
);
/* Now we can start a preview */
mCamera
.
startPreview
();
}
}
}
public
void
surfaceChanged
(
SurfaceHolder
_holder
,
int
format
,
int
width
,
int
height
)
{
Log
.
i
(
TAG
,
"surfaceChanged"
);
setupCamera
(
width
,
height
);
}
public
void
surfaceCreated
(
SurfaceHolder
holder
)
{
Log
.
i
(
TAG
,
"surfaceCreated"
);
(
new
Thread
(
this
)).
start
();
}
public
void
surfaceDestroyed
(
SurfaceHolder
holder
)
{
Log
.
i
(
TAG
,
"surfaceDestroyed"
);
releaseCamera
();
}
/* The bitmap returned by this method shall be owned by the child and released in onPreviewStopped() */
protected
abstract
Bitmap
processFrame
(
byte
[]
data
);
/**
* This method is called when the preview process is be
e
ing started. It is called before the first frame delivered and processFrame is called
* This method is called when the preview process is being started. It is called before the first frame delivered and processFrame is called
* It is called with the width and height parameters of the preview process. It can be used to prepare the data needed during the frame processing.
* @param previewWidth - the width of the preview frames that will be delivered via processFrame
* @param previewHeight - the height of the preview frames that will be delivered via processFrame
*/
protected
abstract
void
onPreviewStared
(
int
previewWidtd
,
int
previewHeight
);
protected
abstract
void
onPreviewStar
t
ed
(
int
previewWidtd
,
int
previewHeight
);
/**
* This method is called when preview is stopped. When this method is called the preview stopped and all the processing of frames already completed.
* If the Bitmap object returned via processFrame is cached - it is a good time to recycle it.
* Any other resourc
s
es used during the preview can be released.
* Any other resources used during the preview can be released.
*/
protected
abstract
void
onPreviewStopped
();
...
...
@@ -175,5 +196,6 @@ public abstract class SampleViewBase extends SurfaceView implements SurfaceHolde
}
}
}
Log
.
i
(
TAG
,
"Finishing processing thread"
);
}
}
\ No newline at end of file
samples/android/tutorial-1-addopencv/res/values/strings.xml
View file @
e1c4fd9e
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string
name=
"app_name"
>
Tutorial 1
Basic - 1.
Add OpenCV
</string>
<string
name=
"app_name"
>
Tutorial 1
(Basic) -
Add OpenCV
</string>
</resources>
samples/android/tutorial-1-addopencv/src/org/opencv/samples/tutorial1/Sample1Java.java
View file @
e1c4fd9e
package
org
.
opencv
.
samples
.
tutorial1
;
import
android.app.Activity
;
import
android.app.AlertDialog
;
import
android.content.DialogInterface
;
import
android.os.Bundle
;
import
android.util.Log
;
import
android.view.Menu
;
...
...
@@ -19,6 +21,31 @@ public class Sample1Java extends Activity {
Log
.
i
(
TAG
,
"Instantiated new "
+
this
.
getClass
());
}
@Override
protected
void
onPause
()
{
Log
.
i
(
TAG
,
"onPause"
);
super
.
onPause
();
mView
.
releaseCamera
();
}
@Override
protected
void
onResume
()
{
Log
.
i
(
TAG
,
"onResume"
);
super
.
onResume
();
if
(
!
mView
.
openCamera
()
)
{
AlertDialog
ad
=
new
AlertDialog
.
Builder
(
this
).
create
();
ad
.
setCancelable
(
false
);
// This blocks the 'BACK' button
ad
.
setMessage
(
"Fatal error: can't open camera!"
);
ad
.
setButton
(
"OK"
,
new
DialogInterface
.
OnClickListener
()
{
public
void
onClick
(
DialogInterface
dialog
,
int
which
)
{
dialog
.
dismiss
();
finish
();
}
});
ad
.
show
();
}
}
/** Called when the activity is first created. */
@Override
public
void
onCreate
(
Bundle
savedInstanceState
)
{
...
...
samples/android/tutorial-1-addopencv/src/org/opencv/samples/tutorial1/Sample1View.java
View file @
e1c4fd9e
...
...
@@ -2,16 +2,15 @@ package org.opencv.samples.tutorial1;
import
org.opencv.android.Utils
;
import
org.opencv.core.Core
;
import
org.opencv.core.CvType
;
import
org.opencv.core.Mat
;
import
org.opencv.core.Point
;
import
org.opencv.core.Scalar
;
import
org.opencv.core.CvType
;
import
org.opencv.imgproc.Imgproc
;
import
android.content.Context
;
import
android.graphics.Bitmap
;
import
android.util.Log
;
import
android.view.SurfaceHolder
;
class
Sample1View
extends
SampleViewBase
{
...
...
@@ -32,7 +31,7 @@ class Sample1View extends SampleViewBase {
}
@Override
protected
void
onPreviewStared
(
int
previewWidth
,
int
previewHeight
)
{
protected
void
onPreviewStar
t
ed
(
int
previewWidth
,
int
previewHeight
)
{
synchronized
(
this
)
{
// initialize Mats before usage
mYuv
=
new
Mat
(
getFrameHeight
()
+
getFrameHeight
()
/
2
,
getFrameWidth
(),
CvType
.
CV_8UC1
);
...
...
@@ -94,7 +93,7 @@ class Sample1View extends SampleViewBase {
try
{
Utils
.
matToBitmap
(
mRgba
,
bmp
);
}
catch
(
Exception
e
)
{
Log
.
e
(
"org.opencv.samples.
puzzle15
"
,
"Utils.matToBitmap() throws an exception: "
+
e
.
getMessage
());
Log
.
e
(
"org.opencv.samples.
tutorial1
"
,
"Utils.matToBitmap() throws an exception: "
+
e
.
getMessage
());
bmp
.
recycle
();
bmp
=
null
;
}
...
...
samples/android/tutorial-1-addopencv/src/org/opencv/samples/tutorial1/SampleViewBase.java
View file @
e1c4fd9e
...
...
@@ -49,63 +49,14 @@ public abstract class SampleViewBase extends SurfaceView implements SurfaceHolde
mCamera
.
setPreviewDisplay
(
null
);
}
public
void
surfaceChanged
(
SurfaceHolder
_holder
,
int
format
,
int
width
,
int
height
)
{
Log
.
i
(
TAG
,
"surfaceCreated"
);
if
(
mCamera
!=
null
)
{
Camera
.
Parameters
params
=
mCamera
.
getParameters
();
List
<
Camera
.
Size
>
sizes
=
params
.
getSupportedPreviewSizes
();
mFrameWidth
=
width
;
mFrameHeight
=
height
;
// selecting optimal camera preview size
{
int
minDiff
=
Integer
.
MAX_VALUE
;
for
(
Camera
.
Size
size
:
sizes
)
{
if
(
Math
.
abs
(
size
.
height
-
height
)
<
minDiff
)
{
mFrameWidth
=
size
.
width
;
mFrameHeight
=
size
.
height
;
minDiff
=
Math
.
abs
(
size
.
height
-
height
);
}
}
}
params
.
setPreviewSize
(
getFrameWidth
(),
getFrameHeight
());
List
<
String
>
FocusModes
=
params
.
getSupportedFocusModes
();
if
(
FocusModes
.
contains
(
Camera
.
Parameters
.
FOCUS_MODE_CONTINUOUS_VIDEO
))
{
params
.
setFocusMode
(
Camera
.
Parameters
.
FOCUS_MODE_CONTINUOUS_VIDEO
);
}
mCamera
.
setParameters
(
params
);
/* Now allocate the buffer */
params
=
mCamera
.
getParameters
();
int
size
=
params
.
getPreviewSize
().
width
*
params
.
getPreviewSize
().
height
;
size
=
size
*
ImageFormat
.
getBitsPerPixel
(
params
.
getPreviewFormat
())
/
8
;
mBuffer
=
new
byte
[
size
];
/* The buffer where the current frame will be coppied */
mFrame
=
new
byte
[
size
];
mCamera
.
addCallbackBuffer
(
mBuffer
);
try
{
setPreview
();
}
catch
(
IOException
e
)
{
Log
.
e
(
TAG
,
"mCamera.setPreviewDisplay/setPreviewTexture fails: "
+
e
);
}
/* Notify that the preview is about to be started and deliver preview size */
onPreviewStared
(
params
.
getPreviewSize
().
width
,
params
.
getPreviewSize
().
height
);
/* Now we can start a preview */
mCamera
.
startPreview
();
}
}
public
void
surfaceCreated
(
SurfaceHolder
holder
)
{
Log
.
i
(
TAG
,
"surfaceCreated"
);
public
boolean
openCamera
()
{
Log
.
i
(
TAG
,
"openCamera"
);
releaseCamera
();
mCamera
=
Camera
.
open
();
if
(
mCamera
==
null
)
{
Log
.
e
(
TAG
,
"Can't open camera!"
);
return
false
;
}
mCamera
.
setPreviewCallbackWithBuffer
(
new
PreviewCallback
()
{
public
void
onPreviewFrame
(
byte
[]
data
,
Camera
camera
)
{
...
...
@@ -116,15 +67,14 @@ public abstract class SampleViewBase extends SurfaceView implements SurfaceHolde
camera
.
addCallbackBuffer
(
mBuffer
);
}
});
(
new
Thread
(
this
)).
start
();
return
true
;
}
public
void
surfaceDestroyed
(
SurfaceHolder
holder
)
{
Log
.
i
(
TAG
,
"
surfaceDestroyed
"
);
public
void
releaseCamera
(
)
{
Log
.
i
(
TAG
,
"
releaseCamera
"
);
mThreadRun
=
false
;
if
(
mCamera
!=
null
)
{
synchronized
(
this
)
{
synchronized
(
this
)
{
if
(
mCamera
!=
null
)
{
mCamera
.
stopPreview
();
mCamera
.
setPreviewCallback
(
null
);
mCamera
.
release
();
...
...
@@ -133,22 +83,92 @@ public abstract class SampleViewBase extends SurfaceView implements SurfaceHolde
}
onPreviewStopped
();
}
public
void
setupCamera
(
int
width
,
int
height
)
{
Log
.
i
(
TAG
,
"setupCamera"
);
synchronized
(
this
)
{
if
(
mCamera
!=
null
)
{
Camera
.
Parameters
params
=
mCamera
.
getParameters
();
List
<
Camera
.
Size
>
sizes
=
params
.
getSupportedPreviewSizes
();
mFrameWidth
=
width
;
mFrameHeight
=
height
;
// selecting optimal camera preview size
{
int
minDiff
=
Integer
.
MAX_VALUE
;
for
(
Camera
.
Size
size
:
sizes
)
{
if
(
Math
.
abs
(
size
.
height
-
height
)
<
minDiff
)
{
mFrameWidth
=
size
.
width
;
mFrameHeight
=
size
.
height
;
minDiff
=
Math
.
abs
(
size
.
height
-
height
);
}
}
}
params
.
setPreviewSize
(
getFrameWidth
(),
getFrameHeight
());
List
<
String
>
FocusModes
=
params
.
getSupportedFocusModes
();
if
(
FocusModes
.
contains
(
Camera
.
Parameters
.
FOCUS_MODE_CONTINUOUS_VIDEO
))
{
params
.
setFocusMode
(
Camera
.
Parameters
.
FOCUS_MODE_CONTINUOUS_VIDEO
);
}
mCamera
.
setParameters
(
params
);
/* Now allocate the buffer */
params
=
mCamera
.
getParameters
();
int
size
=
params
.
getPreviewSize
().
width
*
params
.
getPreviewSize
().
height
;
size
=
size
*
ImageFormat
.
getBitsPerPixel
(
params
.
getPreviewFormat
())
/
8
;
mBuffer
=
new
byte
[
size
];
/* The buffer where the current frame will be copied */
mFrame
=
new
byte
[
size
];
mCamera
.
addCallbackBuffer
(
mBuffer
);
try
{
setPreview
();
}
catch
(
IOException
e
)
{
Log
.
e
(
TAG
,
"mCamera.setPreviewDisplay/setPreviewTexture fails: "
+
e
);
}
/* Notify that the preview is about to be started and deliver preview size */
onPreviewStarted
(
params
.
getPreviewSize
().
width
,
params
.
getPreviewSize
().
height
);
/* Now we can start a preview */
mCamera
.
startPreview
();
}
}
}
public
void
surfaceChanged
(
SurfaceHolder
_holder
,
int
format
,
int
width
,
int
height
)
{
Log
.
i
(
TAG
,
"surfaceChanged"
);
setupCamera
(
width
,
height
);
}
public
void
surfaceCreated
(
SurfaceHolder
holder
)
{
Log
.
i
(
TAG
,
"surfaceCreated"
);
(
new
Thread
(
this
)).
start
();
}
public
void
surfaceDestroyed
(
SurfaceHolder
holder
)
{
Log
.
i
(
TAG
,
"surfaceDestroyed"
);
releaseCamera
();
}
/* The bitmap returned by this method shall be owned by the child and released in onPreviewStopped() */
protected
abstract
Bitmap
processFrame
(
byte
[]
data
);
/**
* This method is called when the preview process is be
e
ing started. It is called before the first frame delivered and processFrame is called
* This method is called when the preview process is being started. It is called before the first frame delivered and processFrame is called
* It is called with the width and height parameters of the preview process. It can be used to prepare the data needed during the frame processing.
* @param previewWidth - the width of the preview frames that will be delivered via processFrame
* @param previewHeight - the height of the preview frames that will be delivered via processFrame
*/
protected
abstract
void
onPreviewStared
(
int
previewWidtd
,
int
previewHeight
);
protected
abstract
void
onPreviewStar
t
ed
(
int
previewWidtd
,
int
previewHeight
);
/**
* This method is called when preview is stopped. When this method is called the preview stopped and all the processing of frames already completed.
* If the Bitmap object returned via processFrame is cached - it is a good time to recycle it.
* Any other resourc
s
es used during the preview can be released.
* Any other resources used during the preview can be released.
*/
protected
abstract
void
onPreviewStopped
();
...
...
samples/android/tutorial-2-opencvcamera/res/values/strings.xml
View file @
e1c4fd9e
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string
name=
"app_name"
>
Tutorial
1 Basic - 2.
Use OpenCV Camera
</string>
<string
name=
"app_name"
>
Tutorial
2 (Basic) -
Use OpenCV Camera
</string>
</resources>
samples/android/tutorial-2-opencvcamera/src/org/opencv/samples/tutorial2/Sample2NativeCamera.java
View file @
e1c4fd9e
package
org
.
opencv
.
samples
.
tutorial2
;
import
android.app.Activity
;
import
android.app.AlertDialog
;
import
android.content.DialogInterface
;
import
android.os.Bundle
;
import
android.util.Log
;
import
android.view.Menu
;
...
...
@@ -19,18 +21,46 @@ public class Sample2NativeCamera extends Activity {
private
MenuItem
mItemPreviewCanny
;
public
static
int
viewMode
=
VIEW_MODE_RGBA
;
private
Sample2View
mView
;
public
Sample2NativeCamera
()
{
Log
.
i
(
TAG
,
"Instantiated new "
+
this
.
getClass
());
}
@Override
protected
void
onPause
()
{
Log
.
i
(
TAG
,
"onPause"
);
super
.
onPause
();
mView
.
releaseCamera
();
}
@Override
protected
void
onResume
()
{
Log
.
i
(
TAG
,
"onResume"
);
super
.
onResume
();
if
(
!
mView
.
openCamera
()
)
{
AlertDialog
ad
=
new
AlertDialog
.
Builder
(
this
).
create
();
ad
.
setCancelable
(
false
);
// This blocks the 'BACK' button
ad
.
setMessage
(
"Fatal error: can't open camera!"
);
ad
.
setButton
(
"OK"
,
new
DialogInterface
.
OnClickListener
()
{
public
void
onClick
(
DialogInterface
dialog
,
int
which
)
{
dialog
.
dismiss
();
finish
();
}
});
ad
.
show
();
}
}
/** Called when the activity is first created. */
@Override
public
void
onCreate
(
Bundle
savedInstanceState
)
{
Log
.
i
(
TAG
,
"onCreate"
);
super
.
onCreate
(
savedInstanceState
);
requestWindowFeature
(
Window
.
FEATURE_NO_TITLE
);
setContentView
(
new
Sample2View
(
this
));
mView
=
new
Sample2View
(
this
);
setContentView
(
mView
);
}
@Override
...
...
samples/android/tutorial-2-opencvcamera/src/org/opencv/samples/tutorial2/Sample2View.java
View file @
e1c4fd9e
package
org
.
opencv
.
samples
.
tutorial2
;
import
java.util.ArrayList
;
import
java.util.List
;
import
org.opencv.android.Utils
;
import
org.opencv.core.Core
;
import
org.opencv.core.Mat
;
import
org.opencv.core.MatOfPoint
;
import
org.opencv.core.Point
;
import
org.opencv.core.Scalar
;
import
org.opencv.highgui.Highgui
;
...
...
@@ -22,36 +18,25 @@ class Sample2View extends SampleCvViewBase {
private
Mat
mRgba
;
private
Mat
mGray
;
private
Mat
mIntermediateMat
;
private
Mat
mIntermediateMat2
;
private
Mat
mEmpty
;
private
Scalar
lo
,
hi
;
private
Scalar
bl
,
wh
;
public
Sample2View
(
Context
context
)
{
super
(
context
);
}
@Override
public
void
surfaceChanged
(
SurfaceHolder
_holder
,
int
format
,
int
width
,
int
height
)
{
super
.
surfaceChanged
(
_holder
,
format
,
width
,
height
);
public
void
surfaceCreated
(
SurfaceHolder
holder
)
{
synchronized
(
this
)
{
// initialize Mats before usage
mGray
=
new
Mat
();
mRgba
=
new
Mat
();
mIntermediateMat
=
new
Mat
();
mIntermediateMat2
=
new
Mat
();
mEmpty
=
new
Mat
();
lo
=
new
Scalar
(
85
,
100
,
30
);
hi
=
new
Scalar
(
130
,
255
,
255
);
bl
=
new
Scalar
(
0
,
0
,
0
,
255
);
wh
=
new
Scalar
(
255
,
255
,
255
,
255
);
}
super
.
surfaceCreated
(
holder
);
}
@Override
protected
Bitmap
processFrame
(
VideoCapture
capture
)
{
/**/
switch
(
Sample2NativeCamera
.
viewMode
)
{
case
Sample2NativeCamera
.
VIEW_MODE_GRAY
:
capture
.
retrieve
(
mGray
,
Highgui
.
CV_CAP_ANDROID_GREY_FRAME
);
...
...
@@ -62,36 +47,11 @@ class Sample2View extends SampleCvViewBase {
Core
.
putText
(
mRgba
,
"OpenCV + Android"
,
new
Point
(
10
,
100
),
3
,
2
,
new
Scalar
(
255
,
0
,
0
,
255
),
3
);
break
;
case
Sample2NativeCamera
.
VIEW_MODE_CANNY
:
/*
capture.retrieve(mGray, Highgui.CV_CAP_ANDROID_GREY_FRAME);
capture
.
retrieve
(
mGray
,
Highgui
.
CV_CAP_ANDROID_GREY_FRAME
);
Imgproc
.
Canny
(
mGray
,
mIntermediateMat
,
80
,
100
);
Imgproc
.
cvtColor
(
mIntermediateMat
,
mRgba
,
Imgproc
.
COLOR_GRAY2BGRA
,
4
);
*/
capture
.
retrieve
(
mRgba
,
Highgui
.
CV_CAP_ANDROID_COLOR_FRAME_RGBA
);
Imgproc
.
cvtColor
(
mRgba
,
mIntermediateMat
,
Imgproc
.
COLOR_RGB2HSV_FULL
);
Core
.
inRange
(
mIntermediateMat
,
lo
,
hi
,
mIntermediateMat2
);
// green
Imgproc
.
dilate
(
mIntermediateMat2
,
mIntermediateMat2
,
mEmpty
);
//
List
<
MatOfPoint
>
contours
=
new
ArrayList
<
MatOfPoint
>();
Mat
hierarchy
=
new
Mat
();
Imgproc
.
findContours
(
mIntermediateMat2
,
contours
,
hierarchy
,
Imgproc
.
RETR_LIST
,
Imgproc
.
CHAIN_APPROX_SIMPLE
);
Log
.
d
(
"processFrame"
,
"contours.size()"
+
contours
.
size
());
double
maxArea
=
0
;
int
indexMaxArea
=
-
1
;
for
(
int
i
=
0
;
i
<
contours
.
size
();
i
++)
{
double
s
=
Imgproc
.
contourArea
(
contours
.
get
(
i
));
if
(
s
>
maxArea
){
indexMaxArea
=
i
;
maxArea
=
s
;
}
}
mRgba
.
setTo
(
bl
);
Imgproc
.
drawContours
(
mRgba
,
contours
,
indexMaxArea
,
wh
);
//
//Imgproc.cvtColor(mIntermediateMat2, mRgba, Imgproc.COLOR_GRAY2RGBA);
break
;
}
/**/
Bitmap
bmp
=
Bitmap
.
createBitmap
(
mRgba
.
cols
(),
mRgba
.
rows
(),
Bitmap
.
Config
.
ARGB_8888
);
...
...
@@ -99,7 +59,7 @@ class Sample2View extends SampleCvViewBase {
Utils
.
matToBitmap
(
mRgba
,
bmp
);
return
bmp
;
}
catch
(
Exception
e
)
{
Log
.
e
(
"org.opencv.samples.
puzzle15
"
,
"Utils.matToBitmap() throws an exception: "
+
e
.
getMessage
());
Log
.
e
(
"org.opencv.samples.
tutorial2
"
,
"Utils.matToBitmap() throws an exception: "
+
e
.
getMessage
());
bmp
.
recycle
();
return
null
;
}
...
...
@@ -118,9 +78,6 @@ class Sample2View extends SampleCvViewBase {
if
(
mIntermediateMat
!=
null
)
mIntermediateMat
.
release
();
if
(
mIntermediateMat2
!=
null
)
mIntermediateMat2
.
release
();
mRgba
=
null
;
mGray
=
null
;
mIntermediateMat
=
null
;
...
...
samples/android/tutorial-2-opencvcamera/src/org/opencv/samples/tutorial2/SampleCvViewBase.java
View file @
e1c4fd9e
...
...
@@ -26,13 +26,36 @@ public abstract class SampleCvViewBase extends SurfaceView implements SurfaceHol
Log
.
i
(
TAG
,
"Instantiated new "
+
this
.
getClass
());
}
public
void
surfaceChanged
(
SurfaceHolder
_holder
,
int
format
,
int
width
,
int
height
)
{
Log
.
i
(
TAG
,
"surfaceCreated"
);
public
boolean
openCamera
()
{
Log
.
i
(
TAG
,
"openCamera"
);
synchronized
(
this
)
{
releaseCamera
();
mCamera
=
new
VideoCapture
(
Highgui
.
CV_CAP_ANDROID
);
if
(!
mCamera
.
isOpened
())
{
mCamera
.
release
();
mCamera
=
null
;
Log
.
e
(
TAG
,
"Failed to open native camera"
);
return
false
;
}
}
return
true
;
}
public
void
releaseCamera
()
{
Log
.
i
(
TAG
,
"releaseCamera"
);
synchronized
(
this
)
{
if
(
mCamera
!=
null
)
{
mCamera
.
release
();
mCamera
=
null
;
}
}
}
public
void
setupCamera
(
int
width
,
int
height
)
{
Log
.
i
(
TAG
,
"setupCamera("
+
width
+
", "
+
height
+
")"
);
synchronized
(
this
)
{
if
(
mCamera
!=
null
&&
mCamera
.
isOpened
())
{
Log
.
i
(
TAG
,
"before mCamera.getSupportedPreviewSizes()"
);
List
<
Size
>
sizes
=
mCamera
.
getSupportedPreviewSizes
();
Log
.
i
(
TAG
,
"after mCamera.getSupportedPreviewSizes()"
);
int
mFrameWidth
=
width
;
int
mFrameHeight
=
height
;
...
...
@@ -52,28 +75,22 @@ public abstract class SampleCvViewBase extends SurfaceView implements SurfaceHol
mCamera
.
set
(
Highgui
.
CV_CAP_PROP_FRAME_HEIGHT
,
mFrameHeight
);
}
}
}
public
void
surfaceChanged
(
SurfaceHolder
_holder
,
int
format
,
int
width
,
int
height
)
{
Log
.
i
(
TAG
,
"surfaceChanged"
);
setupCamera
(
width
,
height
);
}
public
void
surfaceCreated
(
SurfaceHolder
holder
)
{
Log
.
i
(
TAG
,
"surfaceCreated"
);
mCamera
=
new
VideoCapture
(
Highgui
.
CV_CAP_ANDROID
);
if
(
mCamera
.
isOpened
())
{
(
new
Thread
(
this
)).
start
();
}
else
{
mCamera
.
release
();
mCamera
=
null
;
Log
.
e
(
TAG
,
"Failed to open native camera"
);
}
(
new
Thread
(
this
)).
start
();
}
public
void
surfaceDestroyed
(
SurfaceHolder
holder
)
{
Log
.
i
(
TAG
,
"surfaceDestroyed"
);
if
(
mCamera
!=
null
)
{
synchronized
(
this
)
{
mCamera
.
release
();
mCamera
=
null
;
}
}
releaseCamera
();
}
protected
abstract
Bitmap
processFrame
(
VideoCapture
capture
);
...
...
samples/android/tutorial-3-native/res/values/strings.xml
View file @
e1c4fd9e
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string
name=
"app_name"
>
Tutorial
2 Advanced - 1.
Add Native OpenCV
</string>
<string
name=
"app_name"
>
Tutorial
3 (Advanced) -
Add Native OpenCV
</string>
</resources>
samples/android/tutorial-3-native/src/org/opencv/samples/tutorial3/Sample3Native.java
View file @
e1c4fd9e
package
org
.
opencv
.
samples
.
tutorial3
;
import
android.app.Activity
;
import
android.app.AlertDialog
;
import
android.content.DialogInterface
;
import
android.os.Bundle
;
import
android.util.Log
;
import
android.view.Window
;
public
class
Sample3Native
extends
Activity
{
private
static
final
String
TAG
=
"Sample::Activity"
;
private
Sample3View
mView
;
public
Sample3Native
()
{
Log
.
i
(
TAG
,
"Instantiated new "
+
this
.
getClass
());
}
@Override
protected
void
onPause
()
{
Log
.
i
(
TAG
,
"onPause"
);
super
.
onPause
();
mView
.
releaseCamera
();
}
@Override
protected
void
onResume
()
{
Log
.
i
(
TAG
,
"onResume"
);
super
.
onResume
();
if
(
!
mView
.
openCamera
()
)
{
AlertDialog
ad
=
new
AlertDialog
.
Builder
(
this
).
create
();
ad
.
setCancelable
(
false
);
// This blocks the 'BACK' button
ad
.
setMessage
(
"Fatal error: can't open camera!"
);
ad
.
setButton
(
"OK"
,
new
DialogInterface
.
OnClickListener
()
{
public
void
onClick
(
DialogInterface
dialog
,
int
which
)
{
dialog
.
dismiss
();
finish
();
}
});
ad
.
show
();
}
}
/** Called when the activity is first created. */
@Override
public
void
onCreate
(
Bundle
savedInstanceState
)
{
Log
.
i
(
TAG
,
"onCreate"
);
super
.
onCreate
(
savedInstanceState
);
requestWindowFeature
(
Window
.
FEATURE_NO_TITLE
);
setContentView
(
new
Sample3View
(
this
));
mView
=
new
Sample3View
(
this
);
setContentView
(
mView
);
}
}
samples/android/tutorial-3-native/src/org/opencv/samples/tutorial3/Sample3View.java
View file @
e1c4fd9e
...
...
@@ -14,7 +14,7 @@ class Sample3View extends SampleViewBase {
}
@Override
protected
void
onPreviewStared
(
int
previewWidtd
,
int
previewHeight
)
{
protected
void
onPreviewStar
t
ed
(
int
previewWidtd
,
int
previewHeight
)
{
mFrameSize
=
previewWidtd
*
previewHeight
;
mRGBA
=
new
int
[
mFrameSize
];
mBitmap
=
Bitmap
.
createBitmap
(
previewWidtd
,
previewHeight
,
Bitmap
.
Config
.
ARGB_8888
);
...
...
samples/android/tutorial-3-native/src/org/opencv/samples/tutorial3/SampleViewBase.java
View file @
e1c4fd9e
...
...
@@ -2,7 +2,6 @@ package org.opencv.samples.tutorial3;
import
java.io.IOException
;
import
java.util.List
;
import
android.content.Context
;
import
android.graphics.Bitmap
;
import
android.graphics.Canvas
;
...
...
@@ -49,62 +48,14 @@ public abstract class SampleViewBase extends SurfaceView implements SurfaceHolde
mCamera
.
setPreviewDisplay
(
null
);
}
public
void
surfaceChanged
(
SurfaceHolder
_holder
,
int
format
,
int
width
,
int
height
)
{
Log
.
i
(
TAG
,
"surfaceCreated"
);
if
(
mCamera
!=
null
)
{
Camera
.
Parameters
params
=
mCamera
.
getParameters
();
List
<
Camera
.
Size
>
sizes
=
params
.
getSupportedPreviewSizes
();
mFrameWidth
=
width
;
mFrameHeight
=
height
;
// selecting optimal camera preview size
{
int
minDiff
=
Integer
.
MAX_VALUE
;
for
(
Camera
.
Size
size
:
sizes
)
{
if
(
Math
.
abs
(
size
.
height
-
height
)
<
minDiff
)
{
mFrameWidth
=
size
.
width
;
mFrameHeight
=
size
.
height
;
minDiff
=
Math
.
abs
(
size
.
height
-
height
);
}
}
}
params
.
setPreviewSize
(
getFrameWidth
(),
getFrameHeight
());
List
<
String
>
FocusModes
=
params
.
getSupportedFocusModes
();
if
(
FocusModes
.
contains
(
Camera
.
Parameters
.
FOCUS_MODE_CONTINUOUS_VIDEO
))
{
params
.
setFocusMode
(
Camera
.
Parameters
.
FOCUS_MODE_CONTINUOUS_VIDEO
);
}
mCamera
.
setParameters
(
params
);
/* Now allocate the buffer */
params
=
mCamera
.
getParameters
();
int
size
=
params
.
getPreviewSize
().
width
*
params
.
getPreviewSize
().
height
;
size
=
size
*
ImageFormat
.
getBitsPerPixel
(
params
.
getPreviewFormat
())
/
8
;
mBuffer
=
new
byte
[
size
];
/* The buffer where the current frame will be coppied */
mFrame
=
new
byte
[
size
];
mCamera
.
addCallbackBuffer
(
mBuffer
);
try
{
setPreview
();
}
catch
(
IOException
e
)
{
Log
.
e
(
TAG
,
"mCamera.setPreviewDisplay/setPreviewTexture fails: "
+
e
);
}
/* Notify that the preview is about to be started and deliver preview size */
onPreviewStared
(
params
.
getPreviewSize
().
width
,
params
.
getPreviewSize
().
height
);
/* Now we can start a preview */
mCamera
.
startPreview
();
}
}
public
void
surfaceCreated
(
SurfaceHolder
holder
)
{
Log
.
i
(
TAG
,
"surfaceCreated"
);
public
boolean
openCamera
()
{
Log
.
i
(
TAG
,
"openCamera"
);
releaseCamera
();
mCamera
=
Camera
.
open
();
if
(
mCamera
==
null
)
{
Log
.
e
(
TAG
,
"Can't open camera!"
);
return
false
;
}
mCamera
.
setPreviewCallbackWithBuffer
(
new
PreviewCallback
()
{
public
void
onPreviewFrame
(
byte
[]
data
,
Camera
camera
)
{
...
...
@@ -115,15 +66,14 @@ public abstract class SampleViewBase extends SurfaceView implements SurfaceHolde
camera
.
addCallbackBuffer
(
mBuffer
);
}
});
(
new
Thread
(
this
)).
start
();
return
true
;
}
public
void
surfaceDestroyed
(
SurfaceHolder
holder
)
{
Log
.
i
(
TAG
,
"
surfaceDestroyed
"
);
public
void
releaseCamera
(
)
{
Log
.
i
(
TAG
,
"
releaseCamera
"
);
mThreadRun
=
false
;
if
(
mCamera
!=
null
)
{
synchronized
(
this
)
{
synchronized
(
this
)
{
if
(
mCamera
!=
null
)
{
mCamera
.
stopPreview
();
mCamera
.
setPreviewCallback
(
null
);
mCamera
.
release
();
...
...
@@ -132,22 +82,93 @@ public abstract class SampleViewBase extends SurfaceView implements SurfaceHolde
}
onPreviewStopped
();
}
public
void
setupCamera
(
int
width
,
int
height
)
{
Log
.
i
(
TAG
,
"setupCamera"
);
synchronized
(
this
)
{
if
(
mCamera
!=
null
)
{
Camera
.
Parameters
params
=
mCamera
.
getParameters
();
List
<
Camera
.
Size
>
sizes
=
params
.
getSupportedPreviewSizes
();
mFrameWidth
=
width
;
mFrameHeight
=
height
;
// selecting optimal camera preview size
{
int
minDiff
=
Integer
.
MAX_VALUE
;
for
(
Camera
.
Size
size
:
sizes
)
{
if
(
Math
.
abs
(
size
.
height
-
height
)
<
minDiff
)
{
mFrameWidth
=
size
.
width
;
mFrameHeight
=
size
.
height
;
minDiff
=
Math
.
abs
(
size
.
height
-
height
);
}
}
}
params
.
setPreviewSize
(
getFrameWidth
(),
getFrameHeight
());
List
<
String
>
FocusModes
=
params
.
getSupportedFocusModes
();
if
(
FocusModes
.
contains
(
Camera
.
Parameters
.
FOCUS_MODE_CONTINUOUS_VIDEO
))
{
params
.
setFocusMode
(
Camera
.
Parameters
.
FOCUS_MODE_CONTINUOUS_VIDEO
);
}
mCamera
.
setParameters
(
params
);
/* Now allocate the buffer */
params
=
mCamera
.
getParameters
();
int
size
=
params
.
getPreviewSize
().
width
*
params
.
getPreviewSize
().
height
;
size
=
size
*
ImageFormat
.
getBitsPerPixel
(
params
.
getPreviewFormat
())
/
8
;
mBuffer
=
new
byte
[
size
];
/* The buffer where the current frame will be copied */
mFrame
=
new
byte
[
size
];
mCamera
.
addCallbackBuffer
(
mBuffer
);
try
{
setPreview
();
}
catch
(
IOException
e
)
{
Log
.
e
(
TAG
,
"mCamera.setPreviewDisplay/setPreviewTexture fails: "
+
e
);
}
/* Notify that the preview is about to be started and deliver preview size */
onPreviewStarted
(
params
.
getPreviewSize
().
width
,
params
.
getPreviewSize
().
height
);
/* Now we can start a preview */
mCamera
.
startPreview
();
}
}
}
public
void
surfaceChanged
(
SurfaceHolder
_holder
,
int
format
,
int
width
,
int
height
)
{
Log
.
i
(
TAG
,
"surfaceChanged"
);
setupCamera
(
width
,
height
);
}
public
void
surfaceCreated
(
SurfaceHolder
holder
)
{
Log
.
i
(
TAG
,
"surfaceCreated"
);
(
new
Thread
(
this
)).
start
();
}
public
void
surfaceDestroyed
(
SurfaceHolder
holder
)
{
Log
.
i
(
TAG
,
"surfaceDestroyed"
);
releaseCamera
();
}
/* The bitmap returned by this method shall be owned by the child and released in onPreviewStopped() */
protected
abstract
Bitmap
processFrame
(
byte
[]
data
);
/**
* This method is called when the preview process is be
e
ing started. It is called before the first frame delivered and processFrame is called
* This method is called when the preview process is being started. It is called before the first frame delivered and processFrame is called
* It is called with the width and height parameters of the preview process. It can be used to prepare the data needed during the frame processing.
* @param previewWidth - the width of the preview frames that will be delivered via processFrame
* @param previewHeight - the height of the preview frames that will be delivered via processFrame
*/
protected
abstract
void
onPreviewStared
(
int
previewWidtd
,
int
previewHeight
);
protected
abstract
void
onPreviewStar
t
ed
(
int
previewWidtd
,
int
previewHeight
);
/**
* This method is called when preview is stopped. When this method is called the preview stopped and all the processing of frames already completed.
* If the Bitmap object returned via processFrame is cached - it is a good time to recycle it.
* Any other resourc
s
es used during the preview can be released.
* Any other resources used during the preview can be released.
*/
protected
abstract
void
onPreviewStopped
();
...
...
samples/android/tutorial-4-mixed/res/values/strings.xml
View file @
e1c4fd9e
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string
name=
"app_name"
>
Tutorial
2 Advanced - 2.
Mix Java+Native OpenCV
</string>
<string
name=
"app_name"
>
Tutorial
4 (Advanced) -
Mix Java+Native OpenCV
</string>
</resources>
samples/android/tutorial-4-mixed/src/org/opencv/samples/tutorial4/Sample4Mixed.java
View file @
e1c4fd9e
package
org
.
opencv
.
samples
.
tutorial4
;
import
android.app.Activity
;
import
android.app.AlertDialog
;
import
android.content.DialogInterface
;
import
android.os.Bundle
;
import
android.util.Log
;
import
android.view.Menu
;
...
...
@@ -21,6 +23,31 @@ public class Sample4Mixed extends Activity {
Log
.
i
(
TAG
,
"Instantiated new "
+
this
.
getClass
());
}
@Override
protected
void
onPause
()
{
Log
.
i
(
TAG
,
"onPause"
);
super
.
onPause
();
mView
.
releaseCamera
();
}
@Override
protected
void
onResume
()
{
Log
.
i
(
TAG
,
"onResume"
);
super
.
onResume
();
if
(
!
mView
.
openCamera
()
)
{
AlertDialog
ad
=
new
AlertDialog
.
Builder
(
this
).
create
();
ad
.
setCancelable
(
false
);
// This blocks the 'BACK' button
ad
.
setMessage
(
"Fatal error: can't open camera!"
);
ad
.
setButton
(
"OK"
,
new
DialogInterface
.
OnClickListener
()
{
public
void
onClick
(
DialogInterface
dialog
,
int
which
)
{
dialog
.
dismiss
();
finish
();
}
});
ad
.
show
();
}
}
/** Called when the activity is first created. */
@Override
public
void
onCreate
(
Bundle
savedInstanceState
)
{
...
...
samples/android/tutorial-4-mixed/src/org/opencv/samples/tutorial4/Sample4View.java
View file @
e1c4fd9e
package
org
.
opencv
.
samples
.
tutorial4
;
import
org.opencv.android.Utils
;
import
org.opencv.core.Mat
;
import
org.opencv.core.CvType
;
import
org.opencv.core.Mat
;
import
org.opencv.imgproc.Imgproc
;
import
android.content.Context
;
import
android.graphics.Bitmap
;
import
android.util.Log
;
import
android.view.SurfaceHolder
;
class
Sample4View
extends
SampleViewBase
{
...
...
@@ -30,7 +29,7 @@ class Sample4View extends SampleViewBase {
}
@Override
protected
void
onPreviewStared
(
int
previewWidtd
,
int
previewHeight
)
{
protected
void
onPreviewStar
t
ed
(
int
previewWidtd
,
int
previewHeight
)
{
// initialize Mats before usage
mYuv
=
new
Mat
(
getFrameHeight
()
+
getFrameHeight
()
/
2
,
getFrameWidth
(),
CvType
.
CV_8UC1
);
mGraySubmat
=
mYuv
.
submat
(
0
,
getFrameHeight
(),
0
,
getFrameWidth
());
...
...
samples/android/tutorial-4-mixed/src/org/opencv/samples/tutorial4/SampleViewBase.java
View file @
e1c4fd9e
...
...
@@ -2,7 +2,6 @@ package org.opencv.samples.tutorial4;
import
java.io.IOException
;
import
java.util.List
;
import
android.content.Context
;
import
android.graphics.Bitmap
;
import
android.graphics.Canvas
;
...
...
@@ -49,62 +48,14 @@ public abstract class SampleViewBase extends SurfaceView implements SurfaceHolde
mCamera
.
setPreviewDisplay
(
null
);
}
public
void
surfaceChanged
(
SurfaceHolder
_holder
,
int
format
,
int
width
,
int
height
)
{
Log
.
i
(
TAG
,
"surfaceCreated"
);
if
(
mCamera
!=
null
)
{
Camera
.
Parameters
params
=
mCamera
.
getParameters
();
List
<
Camera
.
Size
>
sizes
=
params
.
getSupportedPreviewSizes
();
mFrameWidth
=
width
;
mFrameHeight
=
height
;
// selecting optimal camera preview size
{
int
minDiff
=
Integer
.
MAX_VALUE
;
for
(
Camera
.
Size
size
:
sizes
)
{
if
(
Math
.
abs
(
size
.
height
-
height
)
<
minDiff
)
{
mFrameWidth
=
size
.
width
;
mFrameHeight
=
size
.
height
;
minDiff
=
Math
.
abs
(
size
.
height
-
height
);
}
}
}
params
.
setPreviewSize
(
getFrameWidth
(),
getFrameHeight
());
List
<
String
>
FocusModes
=
params
.
getSupportedFocusModes
();
if
(
FocusModes
.
contains
(
Camera
.
Parameters
.
FOCUS_MODE_CONTINUOUS_VIDEO
))
{
params
.
setFocusMode
(
Camera
.
Parameters
.
FOCUS_MODE_CONTINUOUS_VIDEO
);
}
mCamera
.
setParameters
(
params
);
/* Now allocate the buffer */
params
=
mCamera
.
getParameters
();
int
size
=
params
.
getPreviewSize
().
width
*
params
.
getPreviewSize
().
height
;
size
=
size
*
ImageFormat
.
getBitsPerPixel
(
params
.
getPreviewFormat
())
/
8
;
mBuffer
=
new
byte
[
size
];
/* The buffer where the current frame will be coppied */
mFrame
=
new
byte
[
size
];
mCamera
.
addCallbackBuffer
(
mBuffer
);
try
{
setPreview
();
}
catch
(
IOException
e
)
{
Log
.
e
(
TAG
,
"mCamera.setPreviewDisplay/setPreviewTexture fails: "
+
e
);
}
/* Notify that the preview is about to be started and deliver preview size */
onPreviewStared
(
params
.
getPreviewSize
().
width
,
params
.
getPreviewSize
().
height
);
/* Now we can start a preview */
mCamera
.
startPreview
();
}
}
public
void
surfaceCreated
(
SurfaceHolder
holder
)
{
Log
.
i
(
TAG
,
"surfaceCreated"
);
public
boolean
openCamera
()
{
Log
.
i
(
TAG
,
"openCamera"
);
releaseCamera
();
mCamera
=
Camera
.
open
();
if
(
mCamera
==
null
)
{
Log
.
e
(
TAG
,
"Can't open camera!"
);
return
false
;
}
mCamera
.
setPreviewCallbackWithBuffer
(
new
PreviewCallback
()
{
public
void
onPreviewFrame
(
byte
[]
data
,
Camera
camera
)
{
...
...
@@ -115,15 +66,14 @@ public abstract class SampleViewBase extends SurfaceView implements SurfaceHolde
camera
.
addCallbackBuffer
(
mBuffer
);
}
});
(
new
Thread
(
this
)).
start
();
return
true
;
}
public
void
surfaceDestroyed
(
SurfaceHolder
holder
)
{
Log
.
i
(
TAG
,
"
surfaceDestroyed
"
);
public
void
releaseCamera
(
)
{
Log
.
i
(
TAG
,
"
releaseCamera
"
);
mThreadRun
=
false
;
if
(
mCamera
!=
null
)
{
synchronized
(
this
)
{
synchronized
(
this
)
{
if
(
mCamera
!=
null
)
{
mCamera
.
stopPreview
();
mCamera
.
setPreviewCallback
(
null
);
mCamera
.
release
();
...
...
@@ -132,22 +82,94 @@ public abstract class SampleViewBase extends SurfaceView implements SurfaceHolde
}
onPreviewStopped
();
}
public
void
setupCamera
(
int
width
,
int
height
)
{
Log
.
i
(
TAG
,
"setupCamera"
);
synchronized
(
this
)
{
if
(
mCamera
!=
null
)
{
Camera
.
Parameters
params
=
mCamera
.
getParameters
();
List
<
Camera
.
Size
>
sizes
=
params
.
getSupportedPreviewSizes
();
mFrameWidth
=
width
;
mFrameHeight
=
height
;
// selecting optimal camera preview size
{
int
minDiff
=
Integer
.
MAX_VALUE
;
for
(
Camera
.
Size
size
:
sizes
)
{
if
(
Math
.
abs
(
size
.
height
-
height
)
<
minDiff
)
{
mFrameWidth
=
size
.
width
;
mFrameHeight
=
size
.
height
;
minDiff
=
Math
.
abs
(
size
.
height
-
height
);
}
}
}
params
.
setPreviewSize
(
getFrameWidth
(),
getFrameHeight
());
List
<
String
>
FocusModes
=
params
.
getSupportedFocusModes
();
if
(
FocusModes
.
contains
(
Camera
.
Parameters
.
FOCUS_MODE_CONTINUOUS_VIDEO
))
{
params
.
setFocusMode
(
Camera
.
Parameters
.
FOCUS_MODE_CONTINUOUS_VIDEO
);
}
mCamera
.
setParameters
(
params
);
/* Now allocate the buffer */
params
=
mCamera
.
getParameters
();
int
size
=
params
.
getPreviewSize
().
width
*
params
.
getPreviewSize
().
height
;
size
=
size
*
ImageFormat
.
getBitsPerPixel
(
params
.
getPreviewFormat
())
/
8
;
mBuffer
=
new
byte
[
size
];
/* The buffer where the current frame will be copied */
mFrame
=
new
byte
[
size
];
mCamera
.
addCallbackBuffer
(
mBuffer
);
try
{
setPreview
();
}
catch
(
IOException
e
)
{
Log
.
e
(
TAG
,
"mCamera.setPreviewDisplay/setPreviewTexture fails: "
+
e
);
}
/* Notify that the preview is about to be started and deliver preview size */
onPreviewStarted
(
params
.
getPreviewSize
().
width
,
params
.
getPreviewSize
().
height
);
/* Now we can start a preview */
mCamera
.
startPreview
();
}
}
}
public
void
surfaceChanged
(
SurfaceHolder
_holder
,
int
format
,
int
width
,
int
height
)
{
Log
.
i
(
TAG
,
"surfaceChanged"
);
setupCamera
(
width
,
height
);
}
public
void
surfaceCreated
(
SurfaceHolder
holder
)
{
Log
.
i
(
TAG
,
"surfaceCreated"
);
(
new
Thread
(
this
)).
start
();
}
public
void
surfaceDestroyed
(
SurfaceHolder
holder
)
{
Log
.
i
(
TAG
,
"surfaceDestroyed"
);
releaseCamera
();
}
/* The bitmap returned by this method shall be owned by the child and released in onPreviewStopped() */
protected
abstract
Bitmap
processFrame
(
byte
[]
data
);
/**
* This method is called when the preview process is be
e
ing started. It is called before the first frame delivered and processFrame is called
* This method is called when the preview process is being started. It is called before the first frame delivered and processFrame is called
* It is called with the width and height parameters of the preview process. It can be used to prepare the data needed during the frame processing.
* @param previewWidth - the width of the preview frames that will be delivered via processFrame
* @param previewHeight - the height of the preview frames that will be delivered via processFrame
*/
protected
abstract
void
onPreviewStared
(
int
previewWidtd
,
int
previewHeight
);
protected
abstract
void
onPreviewStar
t
ed
(
int
previewWidtd
,
int
previewHeight
);
/**
* This method is called when preview is stopped. When this method is called the preview stopped and all the processing of frames already completed.
* If the Bitmap object returned via processFrame is cached - it is a good time to recycle it.
* Any other resourc
s
es used during the preview can be released.
* Any other resources used during the preview can be released.
*/
protected
abstract
void
onPreviewStopped
();
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment