Merge branch 2.4

pull/267/head^2
Andrey Kamaev 12 years ago
commit 084b1c7969
  1. 3
      cmake/OpenCVModule.cmake
  2. 3
      doc/check_docs2.py
  3. 438
      doc/tutorials/introduction/android_binary_package/dev_with_OCV_on_Android.rst
  4. 2
      modules/contrib/doc/retina/index.rst
  5. 8
      modules/contrib/include/opencv2/contrib/retina.hpp
  6. 3
      modules/highgui/src/grfmt_jpeg.cpp
  7. 13
      modules/imgproc/perf/perf_houghLines.cpp
  8. 2
      modules/imgproc/src/histogram.cpp
  9. 3
      modules/imgproc/src/templmatch.cpp
  10. 9
      modules/java/generator/gen_java.py
  11. 69
      modules/java/generator/rst_parser.py
  12. 38
      modules/ml/src/boost.cpp
  13. 2
      modules/objdetect/src/cascadedetect.cpp
  14. 51
      modules/objdetect/src/haar.cpp
  15. 14
      modules/ocl/doc/feature_detection_and_description.rst
  16. 22
      modules/ocl/doc/image_filtering.rst
  17. 28
      modules/ocl/doc/image_processing.rst
  18. 10
      modules/ocl/doc/matrix_reductions.rst
  19. 11
      modules/ocl/doc/object_detection.rst
  20. 126
      modules/ocl/doc/operations_on_matrices.rst
  21. 6
      modules/ocl/doc/structures_and_utility_functions.rst
  22. 26
      modules/ocl/include/opencv2/ocl/ocl.hpp
  23. 6
      modules/python/src2/hdr_parser.py
  24. 24
      modules/ts/misc/perf_tests_timing.py
  25. 4
      modules/video/src/lkpyramid.cpp

@ -164,6 +164,9 @@ macro(ocv_module_disable module)
set(HAVE_${__modname} OFF CACHE INTERNAL "Module ${__modname} can not be built in current configuration")
set(OPENCV_MODULE_${__modname}_LOCATION "${CMAKE_CURRENT_SOURCE_DIR}" CACHE INTERNAL "Location of ${__modname} module sources")
set(OPENCV_MODULES_DISABLED_FORCE "${OPENCV_MODULES_DISABLED_FORCE}" CACHE INTERNAL "List of OpenCV modules which can not be build in current configuration")
if(BUILD_${__modname})
# touch variable controlling build of the module to suppress "unused variable" CMake warning
endif()
unset(__modname)
return() # leave the current folder
endmacro()

@ -116,6 +116,8 @@ def compareSignatures(f, s):
sarg = arg[1]
ftype = re.sub(r"\b(cv|std)::", "", (farg[0] or ""))
stype = re.sub(r"\b(cv|std)::", "", (sarg[0] or ""))
ftype = re.sub(r"\s+(\*|&)$", "\\1", ftype)
stype = re.sub(r"\s+(\*|&)$", "\\1", stype)
if ftype != stype:
return False, "type of argument #" + str(idx+1) + " mismatch"
fname = farg[1] or "arg" + str(idx)
@ -151,6 +153,7 @@ def formatSignature(s):
if idx > 0:
_str += ", "
argtype = re.sub(r"\bcv::", "", arg[0])
argtype = re.sub(r"\s+(\*|&)$", "\\1", arg[0])
bidx = argtype.find('[')
if bidx < 0:
_str += argtype + " "

@ -1,13 +1,13 @@
.. _dev_with_OCV_on_Android:
Android development with OpenCV
Android Development with OpenCV
*******************************
This tutorial is created to help you use OpenCV library within your Android project.
This tutorial has been created to help you use OpenCV library within your Android project.
This guide was written with Windows 7 in mind, though it should work with any other OS supported by OpenCV4Android SDK.
This guide was written with Windows 7 in mind, though it should work with any other OS supported by
OpenCV4Android SDK.
This tutorial assumes you have the following installed and configured:
@ -23,41 +23,57 @@ This tutorial assumes you have the following installed and configured:
If you need help with anything of the above, you may refer to our :ref:`android_dev_intro` guide.
This tutorial also assumes you have OpenCV4Android SDK already installed on your development machine and OpenCV Manager on your testing device correspondingly. If you need help with any of these, you may consult our :ref:`O4A_SDK` tutorial.
This tutorial also assumes you have OpenCV4Android SDK already installed on your development
machine and OpenCV Manager on your testing device correspondingly. If you need help with any of
these, you may consult our :ref:`O4A_SDK` tutorial.
If you encounter any error after thoroughly following these steps, feel free to contact us via
`OpenCV4Android <https://groups.google.com/group/android-opencv/>`_ discussion group or OpenCV
`Q&A forum <http://answers.opencv.org>`_ . We'll do our best to help you out.
If you encounter any error after thoroughly following these steps, feel free to contact us via `OpenCV4Android <https://groups.google.com/group/android-opencv/>`_ discussion group or OpenCV `Q&A forum <http://answers.opencv.org>`_ . We'll do our best to help you out.
Using OpenCV library within your Android project
Using OpenCV Library Within Your Android Project
================================================
In this section we will explain how to make some existing project to use OpenCV.
Starting with 2.4.2 release for Android, *OpenCV Manager* is used to provide apps with the best available version of OpenCV.
You can get more information here: :ref:`Android_OpenCV_Manager` and in these `slides <https://docs.google.com/a/itseez.com/presentation/d/1EO_1kijgBg_BsjNp2ymk-aarg-0K279_1VZRcPplSuk/present#slide=id.p>`_.
Starting with 2.4.2 release for Android, *OpenCV Manager* is used to provide apps with the best
available version of OpenCV.
You can get more information here: :ref:`Android_OpenCV_Manager` and in these
`slides <https://docs.google.com/a/itseez.com/presentation/d/1EO_1kijgBg_BsjNp2ymk-aarg-0K279_1VZRcPplSuk/present#slide=id.p>`_.
Java
----
Application development with async initialization
Application Development with Async Initialization
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Using async initialization is a **recommended** way for application development. It uses the OpenCV Manager to access OpenCV libraries externally installed in the target system.
Using async initialization is a **recommended** way for application development. It uses the OpenCV
Manager to access OpenCV libraries externally installed in the target system.
#. Add OpenCV library project to your workspace. Use menu
:guilabel:`File -> Import -> Existing project in your workspace`.
#. Add OpenCV library project to your workspace. Use menu :guilabel:`File -> Import -> Existing project in your workspace`,
press :guilabel:`Browse` button and locate OpenCV4Android SDK (:file:`OpenCV-2.4.3-android-sdk/sdk`).
Press :guilabel:`Browse` button and locate OpenCV4Android SDK
(:file:`OpenCV-2.4.3-android-sdk/sdk`).
.. image:: images/eclipse_opencv_dependency0.png
:alt: Add dependency from OpenCV library
:align: center
#. In application project add a reference to the OpenCV Java SDK in :guilabel:`Project -> Properties -> Android -> Library -> Add` select ``OpenCV Library - 2.4.3``.
#. In application project add a reference to the OpenCV Java SDK in
:guilabel:`Project -> Properties -> Android -> Library -> Add` select ``OpenCV Library - 2.4.3``.
.. image:: images/eclipse_opencv_dependency1.png
:alt: Add dependency from OpenCV library
:align: center
In most cases OpenCV Manager may be installed automatically from Google Play. For such case, when Google Play is not available, i.e. emulator, developer board, etc, you can
install it manually using adb tool. See :ref:`manager_selection` for details.
In most cases OpenCV Manager may be installed automatically from Google Play. For the case, when
Google Play is not available, i.e. emulator, developer board, etc, you can install it manually
using adb tool. See :ref:`manager_selection` for details.
There is a very base code snippet implementing the async initialization. It shows basic principles. See the "15-puzzle" OpenCV sample for details.
There is a very base code snippet implementing the async initialization. It shows basic principles.
See the "15-puzzle" OpenCV sample for details.
.. code-block:: java
:linenos:
@ -97,35 +113,48 @@ There is a very base code snippet implementing the async initialization. It show
}
}
It this case application works with OpenCV Manager in asynchronous fashion. ``OnManagerConnected`` callback will be called in UI thread, when initialization finishes.
Please note, that it is not allowed to use OpenCV calls or load OpenCV-dependent native libs before invoking this callback.
It this case application works with OpenCV Manager in asynchronous fashion. ``OnManagerConnected``
callback will be called in UI thread, when initialization finishes. Please note, that it is not
allowed to use OpenCV calls or load OpenCV-dependent native libs before invoking this callback.
Load your own native libraries that depend on OpenCV after the successful OpenCV initialization.
Default BaseLoaderCallback implementation treat application context as Activity and calls Activity.finish() method to exit in case of initialization failure.
To override this behavior you need to override finish() method of BaseLoaderCallback class and implement your own finalization method.
Default ``BaseLoaderCallback`` implementation treat application context as Activity and calls
``Activity.finish()`` method to exit in case of initialization failure. To override this behavior
you need to override ``finish()`` method of ``BaseLoaderCallback`` class and implement your own
finalization method.
Application development with static initialization
Application Development with Static Initialization
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
According to this approach all OpenCV binaries are included into your application package. It is designed mostly for development purposes.
This approach is deprecated for the production code, release package is recommended to communicate with OpenCV Manager via the async initialization described above.
According to this approach all OpenCV binaries are included into your application package. It is
designed mostly for development purposes. This approach is deprecated for the production code,
release package is recommended to communicate with OpenCV Manager via the async initialization
described above.
#. Add the OpenCV library project to your workspace the same way as for the async initialization above.
Use menu :guilabel:`File -> Import -> Existing project in your workspace`, push :guilabel:`Browse` button and select OpenCV SDK path (:file:`OpenCV-2.4.3-android-sdk/sdk`).
#. Add the OpenCV library project to your workspace the same way as for the async initialization
above. Use menu :guilabel:`File -> Import -> Existing project in your workspace`,
press :guilabel:`Browse` button and select OpenCV SDK path
(:file:`OpenCV-2.4.3-android-sdk/sdk`).
.. image:: images/eclipse_opencv_dependency0.png
:alt: Add dependency from OpenCV library
:align: center
#. In the application project add a reference to the OpenCV4Android SDK in :guilabel:`Project -> Properties -> Android -> Library -> Add` select ``OpenCV Library - 2.4.3``;
#. In the application project add a reference to the OpenCV4Android SDK in
:guilabel:`Project -> Properties -> Android -> Library -> Add` select ``OpenCV Library - 2.4.3``;
.. image:: images/eclipse_opencv_dependency1.png
:alt: Add dependency from OpenCV library
:align: center
#. If your application project **doesn't have a JNI part**, just copy the corresponding OpenCV native libs from :file:`<OpenCV-2.4.3-android-sdk>/sdk/native/libs/<target_arch>` to your project directory to folder :file:`libs/<target_arch>`.
#. If your application project **doesn't have a JNI part**, just copy the corresponding OpenCV
native libs from :file:`<OpenCV-2.4.3-android-sdk>/sdk/native/libs/<target_arch>` to your
project directory to folder :file:`libs/<target_arch>`.
In case of the application project **with a JNI part**, instead of manual libraries copying you need to modify your ``Android.mk`` file:
add the following two code lines after the ``"include $(CLEAR_VARS)"`` and before ``"include path_to_OpenCV-2.4.3-android-sdk/sdk/native/jni/OpenCV.mk"``
In case of the application project **with a JNI part**, instead of manual libraries copying you
need to modify your ``Android.mk`` file:
add the following two code lines after the ``"include $(CLEAR_VARS)"`` and before
``"include path_to_OpenCV-2.4.3-android-sdk/sdk/native/jni/OpenCV.mk"``
.. code-block:: make
:linenos:
@ -145,12 +174,14 @@ This approach is deprecated for the production code, release package is recommen
OPENCV_INSTALL_MODULES:=on
include ../../sdk/native/jni/OpenCV.mk
After that the OpenCV libraries will be copied to your application :file:`libs` folder during the JNI part build.
After that the OpenCV libraries will be copied to your application :file:`libs` folder during
the JNI build.v
Eclipse will automatically include all the libraries from the :file:`libs` folder to the application package (APK).
Eclipse will automatically include all the libraries from the :file:`libs` folder to the
application package (APK).
#. The last step of enabling OpenCV in your application is Java initialization code before call to OpenCV API.
It can be done, for example, in the static section of the ``Activity`` class:
#. The last step of enabling OpenCV in your application is Java initialization code before calling
OpenCV API. It can be done, for example, in the static section of the ``Activity`` class:
.. code-block:: java
:linenos:
@ -161,7 +192,8 @@ This approach is deprecated for the production code, release package is recommen
}
}
If you application includes other OpenCV-dependent native libraries you should load them **after** OpenCV initialization:
If you application includes other OpenCV-dependent native libraries you should load them
**after** OpenCV initialization:
.. code-block:: java
:linenos:
@ -175,39 +207,45 @@ This approach is deprecated for the production code, release package is recommen
}
}
Native/C++
----------
To build your own Android application, which uses OpenCV from native part, the following steps should be done:
To build your own Android application, using OpenCV as native part, the following steps should be
taken:
#. You can use an environment variable to specify the location of OpenCV package or just hardcode absolute or relative path in the :file:`jni/Android.mk` of your projects.
#. You can use an environment variable to specify the location of OpenCV package or just hardcode
absolute or relative path in the :file:`jni/Android.mk` of your projects.
#. The file :file:`jni/Android.mk` should be written for the current application using the common rules for this file.
#. The file :file:`jni/Android.mk` should be written for the current application using the common
rules for this file.
For detailed information see the Android NDK documentation from the Android NDK archive, in the file
:file:`<path_where_NDK_is_placed>/docs/ANDROID-MK.html`
For detailed information see the Android NDK documentation from the Android NDK archive, in the
file :file:`<path_where_NDK_is_placed>/docs/ANDROID-MK.html`.
#. The line
#. The following line:
.. code-block:: make
include C:\Work\OpenCV4Android\OpenCV-2.4.3-android-sdk\sdk\native\jni\OpenCV.mk
should be inserted into the :file:`jni/Android.mk` file **after** the line
Should be inserted into the :file:`jni/Android.mk` file **after** this line:
.. code-block:: make
include $(CLEAR_VARS)
#. Several variables can be used to customize OpenCV stuff, but you **don't need** to use them when your application uses the `async initialization` via the `OpenCV Manager` API.
#. Several variables can be used to customize OpenCV stuff, but you **don't need** to use them when
your application uses the `async initialization` via the `OpenCV Manager` API.
Note: these variables should be set **before** the ``"include .../OpenCV.mk"`` line:
.. note:: These variables should be set **before** the ``"include .../OpenCV.mk"`` line:
.. code-block:: make
.. code-block:: make
OPENCV_INSTALL_MODULES:=on
OPENCV_INSTALL_MODULES:=on
Copies necessary OpenCV dynamic libs to the project ``libs`` folder in order to include them into the APK.
Copies necessary OpenCV dynamic libs to the project ``libs`` folder in order to include them
into the APK.
.. code-block:: make
@ -219,7 +257,8 @@ To build your own Android application, which uses OpenCV from native part, the f
OPENCV_LIB_TYPE:=STATIC
Perform static link with OpenCV. By default dynamic link is used and the project JNI lib depends on ``libopencv_java.so``.
Perform static linking with OpenCV. By default dynamic link is used and the project JNI lib
depends on ``libopencv_java.so``.
#. The file :file:`Application.mk` should exist and should contain lines:
@ -228,139 +267,250 @@ To build your own Android application, which uses OpenCV from native part, the f
APP_STL := gnustl_static
APP_CPPFLAGS := -frtti -fexceptions
Also the line like this one:
Also, the line like this one:
.. code-block:: make
APP_ABI := armeabi-v7a
should specify the application target platforms.
Should specify the application target platforms.
In some cases a linkage error (like ``"In function 'cv::toUtf16(std::basic_string<...>... undefined reference to 'mbstowcs'"``) happens
when building an application JNI library depending on OpenCV.
The following line in the :file:`Application.mk` usually fixes it:
In some cases a linkage error (like ``"In function 'cv::toUtf16(std::basic_string<...>...
undefined reference to 'mbstowcs'"``) happens when building an application JNI library,
depending on OpenCV. The following line in the :file:`Application.mk` usually fixes it:
.. code-block:: make
APP_PLATFORM := android-9
#. Either use :ref:`manual <NDK_build_cli>` ``ndk-build`` invocation or :ref:`setup Eclipse CDT Builder <CDT_Builder>` to build native JNI lib before Java part [re]build and APK creation.
#. Either use :ref:`manual <NDK_build_cli>` ``ndk-build`` invocation or
:ref:`setup Eclipse CDT Builder <CDT_Builder>` to build native JNI lib before (re)building the Java
part and creating an APK.
"Hello OpenCV" Sample
=====================
Hello OpenCV Sample
===================
Here are basic steps to guide you trough the creation process of a simple OpenCV-centric application.
It will be capable of accessing camera output, processing it and displaying the result.
Here are basic steps to guide you trough the process of creating a simple OpenCV-centric
application. It will be capable of accessing camera output, processing it and displaying the
result.
#. Open Eclipse IDE, create a new clean workspace, create a new Android project (:guilabel:`File -> New -> Android Project`).
#. Open Eclipse IDE, create a new clean workspace, create a new Android project
:menuselection:`File --> New --> Android Project`.
#. Set name, target, package and ``minSDKVersion`` accordingly.
#. Add the following permissions to the ``AndroidManifest.xml`` file:
#. Create a new class :menuselection:`File -> New -> Class`. Name it for example:
*HelloOpenCVView*.
.. image:: images/dev_OCV_new_class.png
:alt: Add a new class.
:align: center
* It should extend ``SurfaceView`` class.
* It also should implement ``SurfaceHolder.Callback``, ``Runnable``.
#. Edit ``HelloOpenCVView`` class.
* Add an ``import`` line for ``android.content.context``.
* Modify autogenerated stubs: ``HelloOpenCVView``, ``surfaceCreated``, ``surfaceDestroyed`` and
``surfaceChanged``.
.. code-block:: java
:linenos:
package com.hello.opencv.test;
import android.content.Context;
public class HelloOpenCVView extends SurfaceView implements Callback, Runnable {
public HelloOpenCVView(Context context) {
super(context);
getHolder().addCallback(this);
}
public void surfaceCreated(SurfaceHolder holder) {
(new Thread(this)).start();
}
public void surfaceDestroyed(SurfaceHolder holder) {
cameraRelease();
}
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
cameraSetup(width, height);
}
* Add ``cameraOpen``, ``cameraRelease`` and ``cameraSetup`` voids as shown below.
* Also, don't forget to add the public void ``run()`` as follows:
.. code-block:: java
:linenos:
public void run() {
// TODO: loop { getFrame(), processFrame(), drawFrame() }
}
public boolean cameraOpen() {
return false; //TODO: open camera
}
private void cameraRelease() {
// TODO release camera
}
private void cameraSetup(int width, int height) {
// TODO setup camera
}
#. Create a new ``Activity`` :menuselection:`New -> Other -> Android -> Android Activity` and name
it, for example: *HelloOpenCVActivity*. For this activity define ``onCreate``, ``onResume`` and
``onPause`` voids.
.. code-block:: java
:linenos:
public void onCreate (Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mView = new HelloOpenCVView(this);
setContentView (mView);
}
protected void onPause() {
super.onPause();
mView.cameraRelease();
}
protected void onResume() {
super.onResume();
if( !mView.cameraOpen() ) {
// MessageBox and exit app
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();
}
}
#. Add the following permissions to the :file:`AndroidManifest.xml` file:
.. code-block:: xml
:linenos:
<uses-permission android:name="android.permission.CAMERA"/>
</application>
<uses-feature android:name="android.hardware.camera" android:required="false"/>
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false"/>
<uses-feature android:name="android.hardware.camera.front" android:required="false"/>
<uses-feature android:name="android.hardware.camera.front.autofocus" android:required="false"/>
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
#. Reference the OpenCV library within your project properties.
#. Reference OpenCV library within your project properties.
.. image:: images/dev_OCV_reference.png
:alt: Reference OpenCV library.
:align: center
#. Create new view layout for your application, lets name it ``hello_opencv.xml``, and add the following to it:
.. code-block:: xml
:linenos:
#. We now need some code to handle the camera. Update the ``HelloOpenCVView`` class as follows:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >
.. code-block:: java
:linenos:
<org.opencv.android.JavaCameraView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:visibility="gone"
android:id="@+id/java_surface_view" />
private VideoCapture mCamera;
public boolean cameraOpen() {
synchronized (this) {
cameraRelease();
mCamera = new VideoCapture(Highgui.CV_CAP_ANDROID);
if (!mCamera.isOpened()) {
mCamera.release();
mCamera = null;
Log.e("HelloOpenCVView", "Failed to open native camera");
return false;
}
}
return true;
}
</LinearLayout>
public void cameraRelease() {
synchronized(this) {
if (mCamera != null) {
mCamera.release();
mCamera = null;
}
}
}
#. Remove default auto generated layout, if exists.
private void cameraSetup(int width, int height) {
synchronized (this) {
if (mCamera != null && mCamera.isOpened()) {
List<Size> sizes = mCamera.getSupportedPreviewSizes();
int mFrameWidth = width;
int mFrameHeight = height;
{ // selecting optimal camera preview size
double minDiff = Double.MAX_VALUE;
for (Size size : sizes) {
if (Math.abs(size.height - height) < minDiff) {
mFrameWidth = (int) size.width;
mFrameHeight = (int) size.height;
minDiff = Math.abs(size.height - height);
}
}
}
mCamera.set(Highgui.CV_CAP_PROP_FRAME_WIDTH, mFrameWidth);
mCamera.set(Highgui.CV_CAP_PROP_FRAME_HEIGHT, mFrameHeight);
}
}
}
#. Create a new ``Activity`` (:guilabel:`New -> Other -> Android -> Android Activity`) and name it, for example: ``HelloOpenCVActivity``.
Add ``CvCameraViewListener`` interface to ``implements`` list of ``HelloOpenCVActivity`` class. Add the following code to activity implementation:
#. The last step would be to update the ``run()`` void in ``HelloOpenCVView`` class as follows:
.. code-block:: java
:linenos:
public class Sample1Java extends Activity implements CvCameraViewListener {
private CameraBridgeViewBase mOpenCvCameraView;
public void run() {
while (true) {
Bitmap bmp = null;
synchronized (this) {
if (mCamera == null)
break;
if (!mCamera.grab())
break;
bmp = processFrame(mCamera);
}
if (bmp != null) {
Canvas canvas = getHolder().lockCanvas();
if (canvas != null) {
canvas.drawBitmap(bmp, (canvas.getWidth() - bmp.getWidth()) / 2,
(canvas.getHeight() - bmp.getHeight()) / 2, null);
getHolder().unlockCanvasAndPost(canvas);
}
bmp.recycle();
}
}
}
private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) {
@Override
public void onManagerConnected(int status) {
switch (status) {
case LoaderCallbackInterface.SUCCESS: {
Log.i(TAG, "OpenCV loaded successfully");
mOpenCvCameraView.enableView();
} break;
default:
super.onManagerConnected(status);
}
}
};
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
Log.i(TAG, "called onCreate");
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
setContentView(R.layout.hello_opencv);
mOpenCvCameraView = (CameraBridgeViewBase) findViewById(R.id.java_surface_view);
mOpenCvCameraView.setVisibility(SurfaceView.VISIBLE);
mOpenCvCameraView.setCvCameraViewListener(this);
}
@Override
public void onPause()
{
if (mOpenCvCameraView != null)
mOpenCvCameraView.disableView();
super.onPause();
}
@Override
public void onResume()
{
super.onResume();
OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_3, this, mLoaderCallback);
}
public void onDestroy() {
super.onDestroy();
if (mOpenCvCameraView != null)
mOpenCvCameraView.disableView();
}
public void onCameraViewStarted(int width, int height) {
}
public void onCameraViewStopped() {
}
public Mat onCameraFrame(Mat inputFrame) {
return inputFrame;
}
}
protected Bitmap processFrame(VideoCapture capture) {
Mat mRgba = new Mat();
capture.retrieve(mRgba, Highgui.CV_CAP_ANDROID_COLOR_FRAME_RGBA);
//process mRgba
Bitmap bmp = Bitmap.createBitmap(mRgba.cols(), mRgba.rows(), Bitmap.Config.ARGB_8888);
try {
Utils.matToBitmap(mRgba, bmp);
} catch(Exception e) {
Log.e("processFrame", "Utils.matToBitmap() throws an exception: " + e.getMessage());
bmp.recycle();
bmp = null;
}
return bmp;
}

@ -208,7 +208,7 @@ Retina::getMagno
Retina::getParameters
+++++++++++++++++++++
.. ocv:function:: Retina::RetinaParameters Retina::getParameters()
.. ocv:function:: struct Retina::RetinaParameters Retina::getParameters()
Retrieve the current parameters values in a *Retina::RetinaParameters* structure

@ -203,10 +203,10 @@ public:
*/
void setup(RetinaParameters newParameters);
/**
* @return the current parameters setup
*/
struct Retina::RetinaParameters getParameters();
/**
* @return the current parameters setup
*/
struct Retina::RetinaParameters getParameters();
/**
* parameters setup display method

@ -63,6 +63,9 @@
typedef unsigned char boolean;
#endif
#undef FALSE
#undef TRUE
extern "C" {
#include "jpeglib.h"
}

@ -36,18 +36,5 @@ PERF_TEST_P(Image_RhoStep_ThetaStep_Threshold, HoughLines,
TEST_CYCLE() HoughLines(image, lines, rhoStep, thetaStep, threshold);
#ifdef WIN32
//FIXME: ugly fix to make sanity check pass on Win32, must be investigated, issue #2617
if (lines.cols == 2015)
{
lines = lines(Rect(0, 0, lines.cols - 1, lines.rows));
SANITY_CHECK(lines, 800.0);
}
else
{
SANITY_CHECK(lines);
}
#else
SANITY_CHECK(lines);
#endif
}

@ -3023,7 +3023,7 @@ public:
localHistogram[t0]++; localHistogram[t1]++;
}
for (; x < width; ++x, ++ptr)
for (; x < width; ++x)
localHistogram[ptr[x]]++;
}

@ -346,7 +346,10 @@ void cv::matchTemplate( InputArray _img, InputArray _templ, OutputArray _result,
}
if( numType == 2 )
{
num = wndSum2 - 2*num + templSum2;
num = MAX(num, 0.);
}
}
if( isNormed )

@ -1243,6 +1243,10 @@ extern "C" {
jni_name = "&%(n)s"
else:
jni_name = "%(n)s"
if not a.out and not "jni_var" in type_dict[a.ctype]:
# explicit cast to C type to avoid ambiguous call error on platforms (mingw)
# where jni types are different from native types (e.g. jint is not the same as int)
jni_name = "(%s)%s" % (a.ctype, jni_name)
if not a.ctype: # hidden
jni_name = a.defval
cvargs.append( type_dict[a.ctype].get("jni_name", jni_name) % {"n" : a.name})
@ -1267,8 +1271,7 @@ JNIEXPORT $rtype JNICALL Java_org_opencv_${module}_${clazz}_$fname
LOGD("$module::$fname()");
$prologue
$retval$cvname( $cvargs );
$epilogue
$ret
$epilogue$ret
} catch(cv::Exception e) {
LOGD("$module::$fname() catched cv::Exception: %s", e.what());
jclass je = env->FindClass("org/opencv/core/CvException");
@ -1292,7 +1295,7 @@ JNIEXPORT $rtype JNICALL Java_org_opencv_${module}_${clazz}_$fname
args = ", ".join(["%s %s" % (type_dict[a.ctype].get("jni_type"), a.name) for a in jni_args]), \
argst = ", ".join([type_dict[a.ctype].get("jni_type") for a in jni_args]), \
prologue = "\n ".join(c_prologue), \
epilogue = " ".join(c_epilogue), \
epilogue = " ".join(c_epilogue) + ("\n " if c_epilogue else ""), \
ret = ret, \
cvname = cvname, \
cvargs = ", ".join(cvargs), \

@ -11,7 +11,7 @@ params_blacklist = {
"fromarray" : ("object", "allowND"), # python only function
"reprojectImageTo3D" : ("ddepth"), # python only argument
"composeRT" : ("d*d*"), # wildchards in parameter names are not supported by this parser
"CvSVM::train_auto" : ("\*Grid"), # wildchards in parameter names are not supported by this parser
"CvSVM::train_auto" : ("\\*Grid"), # wildchards in parameter names are not supported by this parser
"error" : "args", # parameter of supporting macro
"getConvertElem" : ("from", "cn", "to", "beta", "alpha"), # arguments of returned functions
"gpu::swapChannels" : ("dstOrder") # parameter is not parsed correctly by the hdr_parser
@ -71,7 +71,8 @@ class DeclarationParser(object):
def isready(self):
return self.balance == 0
def getLang(self, line):
@classmethod
def getLang(cls, line):
if line.startswith(".. ocv:function::"):
return "C++"
if line.startswith(".. ocv:cfunction::"):
@ -98,7 +99,7 @@ class ParamParser(object):
offset = line.find(":param")
assert offset > 0
self.prefix = line[:offset]
assert self.prefix==" "*len(self.prefix), ":param definition should be prefixed with spaces"
assert self.prefix == " "*len(self.prefix), ":param definition should be prefixed with spaces"
line = line[offset + 6:].lstrip()
name_end = line.find(":")
assert name_end > 0
@ -115,7 +116,8 @@ class ParamParser(object):
else:
self.active = False
def hasDeclaration(self, line):
@classmethod
def hasDeclaration(cls, line):
return line.lstrip().startswith(":param")
class RstParser(object):
@ -177,6 +179,7 @@ class RstParser(object):
was_code_line = False
fdecl = DeclarationParser()
pdecl = ParamParser()
ll = None
for l in lines:
# read tail of function/method declaration if needed
@ -189,7 +192,7 @@ class RstParser(object):
# continue capture seealso
if capturing_seealso:
if not l or l.startswith(" "):
seealso = func.get("seealso",[])
seealso = func.get("seealso", [])
seealso.extend(l.split(","))
func["seealso"] = seealso
continue
@ -206,9 +209,7 @@ class RstParser(object):
if skip_code_lines:
if not l:
continue
if l.startswith(" "):
None
else:
if not l.startswith(" "):
skip_code_lines = False
if ll.startswith(".. code-block::") or ll.startswith(".. image::"):
@ -248,7 +249,7 @@ class RstParser(object):
if ll.endswith(".. seealso::"):
capturing_seealso = True
else:
seealso = func.get("seealso",[])
seealso = func.get("seealso", [])
seealso.extend(ll[ll.find("::")+2:].split(","))
func["seealso"] = seealso
continue
@ -300,12 +301,12 @@ class RstParser(object):
if (was_code_line):
func["long"] = func.get("long", "") + "\n" + ll + "\n"
else:
was_code_line = True;
was_code_line = True
func["long"] = func.get("long", "") + ll +"\n<code>\n\n // C++ code:\n\n"
else:
if (was_code_line):
func["long"] = func.get("long", "") + "\n" + ll + "\n</code>\n";
was_code_line = False;
func["long"] = func.get("long", "") + "\n" + ll + "\n</code>\n"
was_code_line = False
else:
func["long"] = func.get("long", "") + "\n" + ll
# endfor l in lines
@ -377,7 +378,8 @@ class RstParser(object):
if len(lines) > 1:
self.parse_section_safe(module_name, fname, doc, flineno, lines)
def parse_namespace(self, func, section_name):
@classmethod
def parse_namespace(cls, func, section_name):
known_namespaces = ["cv", "gpu", "flann"]
l = section_name.strip()
for namespace in known_namespaces:
@ -390,7 +392,7 @@ class RstParser(object):
if decl.fdecl.endswith(";"):
print >> sys.stderr, "RST parser error E%03d: unexpected semicolon at the end of declaration in \"%s\" at %s:%s" \
% (ERROR_011_EOLEXPECTED, func["name"], func["file"], func["line"])
decls = func.get("decls",[])
decls = func.get("decls", [])
if (decl.lang == "C++" or decl.lang == "C"):
rst_decl = self.cpp_parser.parse_func_decl_no_wrap(decl.fdecl)
decls.append( [decl.lang, decl.fdecl, rst_decl] )
@ -398,8 +400,9 @@ class RstParser(object):
decls.append( [decl.lang, decl.fdecl] )
func["decls"] = decls
def add_new_pdecl(self, func, decl):
params = func.get("params",{})
@classmethod
def add_new_pdecl(cls, func, decl):
params = func.get("params", {})
if decl.name in params:
if show_errors:
#check black_list
@ -416,8 +419,8 @@ class RstParser(object):
print >> out, "SKIPPED DEFINITION:"
print >> out, "name: %s" % (func.get("name","~empty~"))
print >> out, "file: %s:%s" % (func.get("file","~empty~"), func.get("line","~empty~"))
print >> out, "is class: %s" % func.get("isclass",False)
print >> out, "is struct: %s" % func.get("isstruct",False)
print >> out, "is class: %s" % func.get("isclass", False)
print >> out, "is struct: %s" % func.get("isstruct", False)
print >> out, "module: %s" % func.get("module","~unknown~")
print >> out, "namespace: %s" % func.get("namespace", "~empty~")
print >> out, "class: %s" % (func.get("class","~empty~"))
@ -426,7 +429,7 @@ class RstParser(object):
if "decls" in func:
print >> out, "declarations:"
for d in func["decls"]:
print >> out, " %7s: %s" % (d[0], re.sub(r"[ ]+", " ", d[1]))
print >> out, " %7s: %s" % (d[0], re.sub(r"[ ]+", " ", d[1]))
if "seealso" in func:
print >> out, "seealso: ", func["seealso"]
if "params" in func:
@ -437,8 +440,8 @@ class RstParser(object):
print >> out
def validate(self, func):
if func.get("decls",None) is None:
if not func.get("isclass",False) and not func.get("isstruct",False):
if func.get("decls", None) is None:
if not func.get("isclass", False) and not func.get("isstruct", False):
return False
if func["name"] in self.definitions:
if show_errors:
@ -448,7 +451,7 @@ class RstParser(object):
return self.validateParams(func)
def validateParams(self, func):
documentedParams = func.get("params",{}).keys()
documentedParams = func.get("params", {}).keys()
params = []
for decl in func.get("decls", []):
@ -486,11 +489,11 @@ class RstParser(object):
if "class" in func:
func["class"] = self.normalizeText(func["class"])
if "brief" in func:
func["brief"] = self.normalizeText(func.get("brief",None))
func["brief"] = self.normalizeText(func.get("brief", None))
if not func["brief"]:
del func["brief"]
if "long" in func:
func["long"] = self.normalizeText(func.get("long",None))
func["long"] = self.normalizeText(func.get("long", None))
if not func["long"]:
del func["long"]
if "decls" in func:
@ -518,7 +521,7 @@ class RstParser(object):
del func["seealso"]
# special case for old C functions - section name should omit "cv" prefix
if not func.get("isclass",False) and not func.get("isstruct",False):
if not func.get("isclass", False) and not func.get("isstruct", False):
self.fixOldCFunctionName(func)
return func
@ -616,7 +619,7 @@ class RstParser(object):
s = re.sub(r" +", " ", s)
# restore math
s = re.sub(r" *<BR> *","\n", s)
s = re.sub(r" *<BR> *", "\n", s)
# remove extra space before .
s = re.sub(r"[\n ]+\.", ".", s)
@ -642,13 +645,13 @@ class RstParser(object):
classes = 0
structs = 0
for name, d in self.definitions.items():
if d.get("isclass", False):
classes += 1
elif d.get("isstruct", False):
structs += 1
else:
for decl in d.get("decls",[]):
stat[decl[0]] = stat.get(decl[0],0) + 1
if d.get("isclass", False):
classes += 1
elif d.get("isstruct", False):
structs += 1
else:
for decl in d.get("decls", []):
stat[decl[0]] = stat.get(decl[0], 0) + 1
print
print " classes documented: %s" % classes

@ -1598,7 +1598,6 @@ CvBoost::predict( const CvMat* _sample, const CvMat* _missing,
{
float value = -FLT_MAX;
CvMat sample, missing;
CvSeqReader reader;
double sum = 0;
int wstep = 0;
@ -1648,10 +1647,15 @@ CvBoost::predict( const CvMat* _sample, const CvMat* _missing,
const int* cmap = data->cat_map->data.i;
const int* cofs = data->cat_ofs->data.i;
cv::Mat sample = _sample;
cv::Mat missing;
if(!_missing)
missing = _missing;
// if need, preprocess the input vector
if( !raw_mode )
{
int step, mstep = 0;
int sstep, mstep = 0;
const float* src_sample;
const uchar* src_mask = 0;
float* dst_sample;
@ -1660,12 +1664,14 @@ CvBoost::predict( const CvMat* _sample, const CvMat* _missing,
const int* vidx_abs = active_vars_abs->data.i;
bool have_mask = _missing != 0;
cv::AutoBuffer<float> buf(var_count + (var_count+3)/4);
dst_sample = &buf[0];
dst_mask = (uchar*)&buf[var_count];
sample = cv::Mat(1, var_count, CV_32FC1);
missing = cv::Mat(1, var_count, CV_8UC1);
dst_sample = sample.ptr<float>();
dst_mask = missing.ptr<uchar>();
src_sample = _sample->data.fl;
step = CV_IS_MAT_CONT(_sample->type) ? 1 : _sample->step/sizeof(src_sample[0]);
sstep = CV_IS_MAT_CONT(_sample->type) ? 1 : _sample->step/sizeof(src_sample[0]);
if( _missing )
{
@ -1676,7 +1682,7 @@ CvBoost::predict( const CvMat* _sample, const CvMat* _missing,
for( i = 0; i < var_count; i++ )
{
int idx = vidx[i], idx_abs = vidx_abs[i];
float val = src_sample[idx_abs*step];
float val = src_sample[idx_abs*sstep];
int ci = vtype[idx];
uchar m = src_mask ? src_mask[idx_abs*mstep] : (uchar)0;
@ -1715,14 +1721,8 @@ CvBoost::predict( const CvMat* _sample, const CvMat* _missing,
dst_mask[i] = m;
}
sample = cvMat( 1, var_count, CV_32F, dst_sample );
_sample = &sample;
if( have_mask )
{
missing = cvMat( 1, var_count, CV_8UC1, dst_mask );
_missing = &missing;
}
if( !have_mask )
missing.release();
}
else
{
@ -1733,9 +1733,9 @@ CvBoost::predict( const CvMat* _sample, const CvMat* _missing,
cvStartReadSeq( weak, &reader );
cvSetSeqReaderPos( &reader, slice.start_index );
sample_data = _sample->data.fl;
sample_data = sample.ptr<float>();
if( !have_active_cat_vars && !_missing && !weak_responses )
if( !have_active_cat_vars && missing.empty() && !weak_responses )
{
for( i = 0; i < weak_count; i++ )
{
@ -1760,7 +1760,7 @@ CvBoost::predict( const CvMat* _sample, const CvMat* _missing,
else
{
const int* avars = active_vars->data.i;
const uchar* m = _missing ? _missing->data.ptr : 0;
const uchar* m = !missing.empty() ? missing.ptr<uchar>() : 0;
// full-featured version
for( i = 0; i < weak_count; i++ )
@ -2147,5 +2147,3 @@ CvBoost::predict( const Mat& _sample, const Mat& _missing,
}
/* End of file. */

@ -992,9 +992,9 @@ public:
{
mtx->lock();
rectangles->push_back(Rect(cvRound(x*scalingFactor), cvRound(y*scalingFactor), winSize.width, winSize.height));
mtx->unlock();
rejectLevels->push_back(-result);
levelWeights->push_back(gypWeight);
mtx->unlock();
}
}
else if( result > 0 )

@ -1277,14 +1277,15 @@ cvRunHaarClassifierCascade( const CvHaarClassifierCascade* _cascade,
namespace cv
{
struct HaarDetectObjects_ScaleImage_Invoker
class HaarDetectObjects_ScaleImage_Invoker : public ParallelLoopBody
{
public:
HaarDetectObjects_ScaleImage_Invoker( const CvHaarClassifierCascade* _cascade,
int _stripSize, double _factor,
const Mat& _sum1, const Mat& _sqsum1, Mat* _norm1,
Mat* _mask1, Rect _equRect, ConcurrentRectVector& _vec,
Mat* _mask1, Rect _equRect, std::vector<Rect>& _vec,
std::vector<int>& _levels, std::vector<double>& _weights,
bool _outputLevels )
bool _outputLevels, Mutex *_mtx )
{
cascade = _cascade;
stripSize = _stripSize;
@ -1297,13 +1298,14 @@ struct HaarDetectObjects_ScaleImage_Invoker
vec = &_vec;
rejectLevels = _outputLevels ? &_levels : 0;
levelWeights = _outputLevels ? &_weights : 0;
mtx = _mtx;
}
void operator()( const BlockedRange& range ) const
void operator()( const Range& range ) const
{
Size winSize0 = cascade->orig_window_size;
Size winSize(cvRound(winSize0.width*factor), cvRound(winSize0.height*factor));
int y1 = range.begin()*stripSize, y2 = min(range.end()*stripSize, sum1.rows - 1 - winSize0.height);
int y1 = range.start*stripSize, y2 = min(range.end*stripSize, sum1.rows - 1 - winSize0.height);
if (y2 <= y1 || sum1.cols <= 1 + winSize0.width)
return;
@ -1356,8 +1358,10 @@ struct HaarDetectObjects_ScaleImage_Invoker
for( x = 0; x < ssz.width; x += ystep )
if( mask1row[x] != 0 )
{
mtx->lock();
vec->push_back(Rect(cvRound(x*factor), cvRound(y*factor),
winSize.width, winSize.height));
mtx->unlock();
if( --positive == 0 )
break;
}
@ -1378,17 +1382,23 @@ struct HaarDetectObjects_ScaleImage_Invoker
result = -1*cascade->count;
if( cascade->count + result < 4 )
{
mtx->lock();
vec->push_back(Rect(cvRound(x*factor), cvRound(y*factor),
winSize.width, winSize.height));
rejectLevels->push_back(-result);
levelWeights->push_back(gypWeight);
mtx->unlock();
}
}
else
{
if( result > 0 )
{
mtx->lock();
vec->push_back(Rect(cvRound(x*factor), cvRound(y*factor),
winSize.width, winSize.height));
mtx->unlock();
}
}
}
}
@ -1398,18 +1408,20 @@ struct HaarDetectObjects_ScaleImage_Invoker
double factor;
Mat sum1, sqsum1, *norm1, *mask1;
Rect equRect;
ConcurrentRectVector* vec;
std::vector<Rect>* vec;
std::vector<int>* rejectLevels;
std::vector<double>* levelWeights;
Mutex* mtx;
};
struct HaarDetectObjects_ScaleCascade_Invoker
class HaarDetectObjects_ScaleCascade_Invoker : public ParallelLoopBody
{
public:
HaarDetectObjects_ScaleCascade_Invoker( const CvHaarClassifierCascade* _cascade,
Size _winsize, const Range& _xrange, double _ystep,
size_t _sumstep, const int** _p, const int** _pq,
ConcurrentRectVector& _vec )
std::vector<Rect>& _vec, Mutex* _mtx )
{
cascade = _cascade;
winsize = _winsize;
@ -1418,11 +1430,12 @@ struct HaarDetectObjects_ScaleCascade_Invoker
sumstep = _sumstep;
p = _p; pq = _pq;
vec = &_vec;
mtx = _mtx;
}
void operator()( const BlockedRange& range ) const
void operator()( const Range& range ) const
{
int iy, startY = range.begin(), endY = range.end();
int iy, startY = range.start, endY = range.end;
const int *p0 = p[0], *p1 = p[1], *p2 = p[2], *p3 = p[3];
const int *pq0 = pq[0], *pq1 = pq[1], *pq2 = pq[2], *pq3 = pq[3];
bool doCannyPruning = p0 != 0;
@ -1449,7 +1462,11 @@ struct HaarDetectObjects_ScaleCascade_Invoker
int result = cvRunHaarClassifierCascade( cascade, cvPoint(x, y), 0 );
if( result > 0 )
{
mtx->lock();
vec->push_back(Rect(x, y, winsize.width, winsize.height));
mtx->unlock();
}
ixstep = result != 0 ? 1 : 2;
}
}
@ -1462,7 +1479,8 @@ struct HaarDetectObjects_ScaleCascade_Invoker
Range xrange;
const int** p;
const int** pq;
ConcurrentRectVector* vec;
std::vector<Rect>* vec;
Mutex* mtx;
};
@ -1482,7 +1500,7 @@ cvHaarDetectObjectsForROC( const CvArr* _img,
CvSeq* result_seq = 0;
cv::Ptr<CvMemStorage> temp_storage;
cv::ConcurrentRectVector allCandidates;
std::vector<cv::Rect> allCandidates;
std::vector<cv::Rect> rectList;
std::vector<int> rweights;
double factor;
@ -1490,6 +1508,7 @@ cvHaarDetectObjectsForROC( const CvArr* _img,
bool doCannyPruning = (flags & CV_HAAR_DO_CANNY_PRUNING) != 0;
bool findBiggestObject = (flags & CV_HAAR_FIND_BIGGEST_OBJECT) != 0;
bool roughSearch = (flags & CV_HAAR_DO_ROUGH_SEARCH) != 0;
cv::Mutex mtx;
if( !CV_IS_HAAR_CLASSIFIER(cascade) )
CV_Error( !cascade ? CV_StsNullPtr : CV_StsBadArg, "Invalid classifier cascade" );
@ -1599,11 +1618,11 @@ cvHaarDetectObjectsForROC( const CvArr* _img,
cvSetImagesForHaarClassifierCascade( cascade, &sum1, &sqsum1, _tilted, 1. );
cv::Mat _norm1(&norm1), _mask1(&mask1);
cv::parallel_for(cv::BlockedRange(0, stripCount),
cv::parallel_for_(cv::Range(0, stripCount),
cv::HaarDetectObjects_ScaleImage_Invoker(cascade,
(((sz1.height + stripCount - 1)/stripCount + ystep-1)/ystep)*ystep,
factor, cv::Mat(&sum1), cv::Mat(&sqsum1), &_norm1, &_mask1,
cv::Rect(equRect), allCandidates, rejectLevels, levelWeights, outputRejectLevels));
cv::Rect(equRect), allCandidates, rejectLevels, levelWeights, outputRejectLevels, &mtx));
}
}
else
@ -1695,10 +1714,10 @@ cvHaarDetectObjectsForROC( const CvArr* _img,
endX = cvRound((scanROI.x + scanROI.width - winSize.width) / ystep);
}
cv::parallel_for(cv::BlockedRange(startY, endY),
cv::parallel_for_(cv::Range(startY, endY),
cv::HaarDetectObjects_ScaleCascade_Invoker(cascade, winSize, cv::Range(startX, endX),
ystep, sum->step, (const int**)p,
(const int**)pq, allCandidates ));
(const int**)pq, allCandidates, &mtx ));
if( findBiggestObject && !allCandidates.empty() && scanROI.area() == 0 )
{

@ -36,8 +36,8 @@ Finds edges in an image using the [Canny86]_ algorithm.
.. seealso:: :ocv:func:`Canny`
ocl::BruteForceMatcher_OCL
--------------------------
ocl::BruteForceMatcher_OCL_base
-------------------------------
.. ocv:class:: ocl::BruteForceMatcher_OCL_base
Brute-force descriptor matcher. For each descriptor in the first set, this matcher finds the closest descriptor in the second set by trying each one. This descriptor matcher supports masking permissible matches between descriptor sets. ::
@ -162,7 +162,7 @@ Finds the best match for each descriptor from a query set with train descriptors
.. ocv:function:: void ocl::BruteForceMatcher_OCL_base::match(const oclMat& query, std::vector<DMatch>& matches, const std::vector<oclMat>& masks = std::vector<oclMat>())
.. ocv:function:: void ocl::BruteForceMatcher_OCL_base::matchCollection(const oclMat& query, const oclMat& trainCollection, oclMat& trainIdx, oclMat& imgIdx, oclMat& distance, const oclMat& masks)
.. ocv:function:: void ocl::BruteForceMatcher_OCL_base::matchCollection( const oclMat& query, const oclMat& trainCollection, oclMat& trainIdx, oclMat& imgIdx, oclMat& distance, const oclMat& masks=oclMat() )
.. seealso:: :ocv:func:`DescriptorMatcher::match`
@ -175,15 +175,13 @@ Performs a GPU collection of train descriptors and masks in a suitable format fo
.. ocv:function:: void ocl::BruteForceMatcher_OCL_base::makeGpuCollection(oclMat& trainCollection, oclMat& maskCollection, const vector<oclMat>& masks = std::vector<oclMat>())
ocl::BruteForceMatcher_OCL_base::matchDownload
----------------------------------------------
Downloads matrices obtained via :ocv:func:`ocl::BruteForceMatcher_OCL_base::matchSingle` or :ocv:func:`ocl::BruteForceMatcher_OCL_base::matchCollection` to vector with :ocv:class:`DMatch`.
.. ocv:function:: void ocl::BruteForceMatcher_OCL_base::matchDownload(const oclMat& trainIdx, const oclMat& distance, std::vector<DMatch>&matches)
.. ocv:function:: void ocl::BruteForceMatcher_OCL_base::matchDownload(const oclMat& trainIdx, oclMat& imgIdx, const oclMat& distance, std::vector<DMatch>&matches)
.. ocv:function:: static void ocl::BruteForceMatcher_OCL_base::matchDownload( const oclMat& trainIdx, const oclMat& distance, std::vector<DMatch>& matches )
.. ocv:function:: static void ocl::BruteForceMatcher_OCL_base::matchDownload( const oclMat& trainIdx, const oclMat& imgIdx, const oclMat& distance, std::vector<DMatch>& matches )
ocl::BruteForceMatcher_OCL_base::matchConvert
@ -310,7 +308,7 @@ If ``compactResult`` is ``true`` , the ``matches`` vector does not contain match
ocl::HOGDescriptor
------------------
.. ocv:class:: ocl::HOGDescriptor
.. ocv:struct:: ocl::HOGDescriptor
The class implements Histogram of Oriented Gradients ([Dalal2005]_) object detector. ::

@ -7,7 +7,7 @@ ocl::Sobel
------------------
Returns void
.. ocv:function:: void Sobel(const oclMat &src, oclMat &dst, int ddepth, int dx, int dy, int ksize = 3, double scale = 1, double delta = 0.0, int bordertype = BORDER_DEFAULT)
.. ocv:function:: void ocl::Sobel(const oclMat &src, oclMat &dst, int ddepth, int dx, int dy, int ksize = 3, double scale = 1, double delta = 0.0, int bordertype = BORDER_DEFAULT)
:param src: The source image
@ -33,7 +33,7 @@ ocl::Scharr
------------------
Returns void
.. ocv:function:: void Scharr(const oclMat &src, oclMat &dst, int ddepth, int dx, int dy, double scale = 1, double delta = 0.0, int bordertype = BORDER_DEFAULT)
.. ocv:function:: void ocl::Scharr(const oclMat &src, oclMat &dst, int ddepth, int dx, int dy, double scale = 1, double delta = 0.0, int bordertype = BORDER_DEFAULT)
:param src: The source image
@ -57,7 +57,7 @@ ocl::GaussianBlur
------------------
Returns void
.. ocv:function:: void GaussianBlur(const oclMat &src, oclMat &dst, Size ksize, double sigma1, double sigma2 = 0, int bordertype = BORDER_DEFAULT)
.. ocv:function:: void ocl::GaussianBlur(const oclMat &src, oclMat &dst, Size ksize, double sigma1, double sigma2 = 0, int bordertype = BORDER_DEFAULT)
:param src: The source image
@ -75,7 +75,7 @@ ocl::boxFilter
------------------
Returns void
.. ocv:function:: void boxFilter(const oclMat &src, oclMat &dst, int ddepth, Size ksize, Point anchor = Point(-1, -1), int borderType = BORDER_DEFAULT)
.. ocv:function:: void ocl::boxFilter(const oclMat &src, oclMat &dst, int ddepth, Size ksize, Point anchor = Point(-1, -1), int borderType = BORDER_DEFAULT)
:param src: The source image
@ -95,7 +95,7 @@ ocl::Laplacian
------------------
Returns void
.. ocv:function:: void Laplacian(const oclMat &src, oclMat &dst, int ddepth, int ksize = 1, double scale = 1)
.. ocv:function:: void ocl::Laplacian(const oclMat &src, oclMat &dst, int ddepth, int ksize = 1, double scale = 1)
:param src: The source image
@ -113,7 +113,7 @@ ocl::convolve
------------------
Returns void
.. ocv:function:: void convolve(const oclMat &image, const oclMat &temp1, oclMat &result)
.. ocv:function:: void ocl::convolve(const oclMat &image, const oclMat &temp1, oclMat &result)
:param image: The source image
@ -127,7 +127,7 @@ ocl::bilateralFilter
--------------------
Returns void
.. ocv:function:: void bilateralFilter(const oclMat &src, oclMat &dst, int d, double sigmaColor, double sigmaSpave, int borderType=BORDER_DEFAULT)
.. ocv:function:: void ocl::bilateralFilter(const oclMat &src, oclMat &dst, int d, double sigmaColor, double sigmaSpave, int borderType=BORDER_DEFAULT)
:param src: The source image
@ -147,7 +147,7 @@ ocl::copyMakeBorder
--------------------
Returns void
.. ocv:function:: void copyMakeBorder(const oclMat &src, oclMat &dst, int top, int bottom, int left, int right, int boardtype, const Scalar &value = Scalar())
.. ocv:function:: void ocl::copyMakeBorder(const oclMat &src, oclMat &dst, int top, int bottom, int left, int right, int boardtype, const Scalar &value = Scalar())
:param src: The source image
@ -165,7 +165,7 @@ ocl::dilate
------------------
Returns void
.. ocv:function:: void dilate( const oclMat &src, oclMat &dst, const Mat &kernel, Point anchor = Point(-1, -1), int iterations = 1, int borderType = BORDER_CONSTANT, const Scalar &borderValue = morphologyDefaultBorderValue())
.. ocv:function:: void ocl::dilate( const oclMat &src, oclMat &dst, const Mat &kernel, Point anchor = Point(-1, -1), int iterations = 1, int borderType = BORDER_CONSTANT, const Scalar &borderValue = morphologyDefaultBorderValue())
:param src: The source image
@ -187,7 +187,7 @@ ocl::erode
------------------
Returns void
.. ocv:function:: void erode( const oclMat &src, oclMat &dst, const Mat &kernel, Point anchor = Point(-1, -1), int iterations = 1, int borderType = BORDER_CONSTANT, const Scalar &borderValue = morphologyDefaultBorderValue())
.. ocv:function:: void ocl::erode( const oclMat &src, oclMat &dst, const Mat &kernel, Point anchor = Point(-1, -1), int iterations = 1, int borderType = BORDER_CONSTANT, const Scalar &borderValue = morphologyDefaultBorderValue())
:param src: The source image
@ -209,7 +209,7 @@ ocl::morphologyEx
------------------
Returns void
.. ocv:function:: void morphologyEx( const oclMat &src, oclMat &dst, int op, const Mat &kernel, Point anchor = Point(-1, -1), int iterations = 1, int borderType = BORDER_CONSTANT, const Scalar &borderValue = morphologyDefaultBorderValue())
.. ocv:function:: void ocl::morphologyEx( const oclMat &src, oclMat &dst, int op, const Mat &kernel, Point anchor = Point(-1, -1), int iterations = 1, int borderType = BORDER_CONSTANT, const Scalar &borderValue = morphologyDefaultBorderValue())
:param src: The source image

@ -7,7 +7,7 @@ ocl::cornerHarris
------------------
Returns void
.. ocv:function:: void cornerHarris(const oclMat &src, oclMat &dst, int blockSize, int ksize, double k, int bordertype = cv::BORDER_DEFAULT)
.. ocv:function:: void ocl::cornerHarris(const oclMat &src, oclMat &dst, int blockSize, int ksize, double k, int bordertype = cv::BORDER_DEFAULT)
:param src: Source image. Only CV_8UC1 and CV_32FC1 images are supported now.
@ -27,7 +27,7 @@ ocl::cornerMinEigenVal
------------------------
Returns void
.. ocv:function:: void cornerMinEigenVal(const oclMat &src, oclMat &dst, int blockSize, int ksize, int bordertype = cv::BORDER_DEFAULT)
.. ocv:function:: void ocl::cornerMinEigenVal(const oclMat &src, oclMat &dst, int blockSize, int ksize, int bordertype = cv::BORDER_DEFAULT)
:param src: Source image. Only CV_8UC1 and CV_32FC1 images are supported now.
@ -45,7 +45,7 @@ ocl::calcHist
------------------
Returns void
.. ocv:function:: void calcHist(const oclMat &mat_src, oclMat &mat_hist)
.. ocv:function:: void ocl::calcHist(const oclMat &mat_src, oclMat &mat_hist)
:param src: Source arrays. They all should have the same depth, CV 8U, and the same size. Each of them can have an arbitrary number of channels.
@ -57,7 +57,7 @@ ocl::remap
------------------
Returns void
.. ocv:function:: void remap(const oclMat &src, oclMat &dst, oclMat &map1, oclMat &map2, int interpolation, int bordertype, const Scalar &value = Scalar())
.. ocv:function:: void ocl::remap(const oclMat &src, oclMat &dst, oclMat &map1, oclMat &map2, int interpolation, int bordertype, const Scalar &value = Scalar())
:param src: Source image. Only CV_8UC1 and CV_32FC1 images are supported now.
@ -79,7 +79,7 @@ ocl::resize
------------------
Returns void
.. ocv:function:: void resize(const oclMat &src, oclMat &dst, Size dsize, double fx = 0, double fy = 0, int interpolation = INTER_LINEAR)
.. ocv:function:: void ocl::resize(const oclMat &src, oclMat &dst, Size dsize, double fx = 0, double fy = 0, int interpolation = INTER_LINEAR)
:param src: Source image.
@ -99,7 +99,7 @@ ocl::warpAffine
------------------
Returns void
.. ocv:function:: void warpAffine(const oclMat &src, oclMat &dst, const Mat &M, Size dsize, int flags = INTER_LINEAR)
.. ocv:function:: void ocl::warpAffine(const oclMat &src, oclMat &dst, const Mat &M, Size dsize, int flags = INTER_LINEAR)
:param src: Source image.
@ -117,7 +117,7 @@ ocl::warpPerspective
---------------------
Returns void
.. ocv:function:: void warpPerspective(const oclMat &src, oclMat &dst, const Mat &M, Size dsize, int flags = INTER_LINEAR)
.. ocv:function:: void ocl::warpPerspective(const oclMat &src, oclMat &dst, const Mat &M, Size dsize, int flags = INTER_LINEAR)
:param src: Source image.
@ -135,7 +135,7 @@ ocl::cvtColor
------------------
Returns void
.. ocv:function:: void cvtColor(const oclMat &src, oclMat &dst, int code , int dcn = 0)
.. ocv:function:: void ocl::cvtColor(const oclMat &src, oclMat &dst, int code , int dcn = 0)
:param src: Source image.
@ -151,7 +151,7 @@ ocl::threshold
------------------
Returns Threshold value
.. ocv:function:: double threshold(const oclMat &src, oclMat &dst, double thresh, double maxVal, int type = THRESH_TRUNC)
.. ocv:function:: double ocl::threshold(const oclMat &src, oclMat &dst, double thresh, double maxVal, int type = THRESH_TRUNC)
:param src: The source array
@ -169,7 +169,7 @@ ocl::buildWarpPlaneMaps
-----------------------
Builds plane warping maps.
.. ocv:function:: void ocl::buildWarpPlaneMaps(Size src_size, Rect dst_roi, const Mat& R, double f, double s, double dist, oclMat& map_x, oclMat& map_y)
.. ocv:function:: void ocl::buildWarpPlaneMaps( Size src_size, Rect dst_roi, const Mat& K, const Mat& R, const Mat& T, float scale, oclMat& map_x, oclMat& map_y )
@ -177,7 +177,7 @@ ocl::buildWarpCylindricalMaps
-----------------------------
Builds cylindrical warping maps.
.. ocv:function:: void ocl::buildWarpCylindricalMaps(Size src_size, Rect dst_roi, const Mat& R, double f, double s, oclMat& map_x, oclMat& map_y)
.. ocv:function:: void ocl::buildWarpCylindricalMaps( Size src_size, Rect dst_roi, const Mat& K, const Mat& R, float scale, oclMat& map_x, oclMat& map_y )
@ -186,14 +186,14 @@ ocl::buildWarpSphericalMaps
---------------------------
Builds spherical warping maps.
.. ocv:function:: void ocl::buildWarpSphericalMaps(Size src_size, Rect dst_roi, const Mat& R, double f, double s, oclMat& map_x, oclMat& map_y)
.. ocv:function:: void ocl::buildWarpSphericalMaps( Size src_size, Rect dst_roi, const Mat& K, const Mat& R, float scale, oclMat& map_x, oclMat& map_y )
ocl::buildWarpPerspectiveMaps
-----------------------------
Builds transformation maps for perspective transformation.
.. ocv:function:: void buildWarpAffineMaps(const Mat& M, bool inverse, Size dsize, oclMat& xmap, oclMat& ymap)
.. ocv:function:: void ocl::buildWarpAffineMaps(const Mat& M, bool inverse, Size dsize, oclMat& xmap, oclMat& ymap)
:param M: *3x3* transformation matrix.
@ -212,7 +212,7 @@ ocl::buildWarpAffineMaps
------------------------
Builds transformation maps for affine transformation.
.. ocv:function:: void buildWarpAffineMaps(const Mat& M, bool inverse, Size dsize, oclMat& xmap, oclMat& ymap)
.. ocv:function:: void ocl::buildWarpAffineMaps(const Mat& M, bool inverse, Size dsize, oclMat& xmap, oclMat& ymap)
:param M: *2x3* transformation matrix.

@ -7,7 +7,7 @@ ocl::countNonZero
------------------
Returns the number of non-zero elements in src
.. ocv:function:: int countNonZero(const oclMat &src)
.. ocv:function:: int ocl::countNonZero(const oclMat &src)
:param src: Single-channel array
@ -17,7 +17,7 @@ ocl::minMax
------------------
Returns void
.. ocv:function:: void minMax(const oclMat &src, double *minVal, double *maxVal = 0, const oclMat &mask = oclMat())
.. ocv:function:: void ocl::minMax(const oclMat &src, double *minVal, double *maxVal = 0, const oclMat &mask = oclMat())
:param src: Single-channel array
@ -33,7 +33,7 @@ ocl::minMaxLoc
------------------
Returns void
.. ocv:function:: void minMaxLoc(const oclMat &src, double *minVal, double *maxVal = 0, Point *minLoc = 0, Point *maxLoc = 0,const oclMat &mask = oclMat())
.. ocv:function:: void ocl::minMaxLoc(const oclMat &src, double *minVal, double *maxVal = 0, Point *minLoc = 0, Point *maxLoc = 0,const oclMat &mask = oclMat())
:param src: Single-channel array
@ -53,7 +53,7 @@ ocl::Sum
------------------
Returns the sum of matrix elements for each channel
.. ocv:function:: Scalar sum(const oclMat &m)
.. ocv:function:: Scalar ocl::sum(const oclMat &m)
:param m: The Source image of all depth
@ -63,7 +63,7 @@ ocl::sqrSum
------------------
Returns the squared sum of matrix elements for each channel
.. ocv:function:: Scalar sqrSum(const oclMat &m)
.. ocv:function:: Scalar ocl::sqrSum(const oclMat &m)
:param m: The Source image of all depth

@ -3,12 +3,13 @@ Object Detection
.. highlight:: cpp
ocl::oclCascadeClassifier
ocl::OclCascadeClassifier
-------------------------
.. ocv:class:: ocl::OclCascadeClassifier : public CascadeClassifier
Cascade classifier class used for object detection. Supports HAAR cascade classifier in the form of cross link ::
class CV_EXPORTS OclCascadeClassifier : public cv::CascadeClassifier
class CV_EXPORTS OclCascadeClassifier : public CascadeClassifier
{
public:
OclCascadeClassifier() {};
@ -19,11 +20,11 @@ Cascade classifier class used for object detection. Supports HAAR cascade classi
CvSize maxSize = cvSize(0, 0));
};
ocl::oclCascadeClassifier::oclHaarDetectObjects
ocl::OclCascadeClassifier::oclHaarDetectObjects
------------------------------------------------------
Returns the detected objects by a list of rectangles
.. ocv:function:: CvSeq *OclCascadeClassifier::oclHaarDetectObjects(oclMat &gimg, CvMemStorage *storage, double scaleFactor,int minNeighbors, int flags, CvSize minSize = cvSize(0, 0), CvSize maxSize = cvSize(0, 0))
.. ocv:function:: CvSeq* ocl::OclCascadeClassifier::oclHaarDetectObjects(oclMat &gimg, CvMemStorage *storage, double scaleFactor,int minNeighbors, int flags, CvSize minSize = cvSize(0, 0), CvSize maxSize = cvSize(0, 0))
:param image: Matrix of type CV_8U containing an image where objects should be detected.
@ -39,7 +40,7 @@ Detects objects of different sizes in the input image,only tested for face detec
ocl::MatchTemplateBuf
---------------------
.. ocv:class:: ocl::MatchTemplateBuf
.. ocv:struct:: ocl::MatchTemplateBuf
Class providing memory buffers for :ocv:func:`ocl::matchTemplate` function, plus it allows to adjust some specific parameters. ::

@ -3,11 +3,11 @@ Operations on Matrics
.. highlight:: cpp
ocl::convertTo
------------------
ocl::oclMat::convertTo
----------------------
Returns void
.. ocv:function:: void convertTo( oclMat &m, int rtype, double alpha = 1, double beta = 0 ) const
.. ocv:function:: void ocl::oclMat::convertTo( oclMat &m, int rtype, double alpha = 1, double beta = 0 ) const
:param m: The destination matrix. If it does not have a proper size or type before the operation, it will be reallocated
@ -19,11 +19,11 @@ Returns void
The method converts source pixel values to the target datatype. saturate cast is applied in the end to avoid possible overflows. Supports CV_8UC1, CV_8UC4, CV_32SC1, CV_32SC4, CV_32FC1, CV_32FC4.
ocl::copyTo
------------------
ocl::oclMat::copyTo
-------------------
Returns void
.. ocv:function:: void copyTo( oclMat &m, const oclMat &mask ) const
.. ocv:function:: void ocl::oclMat::copyTo( oclMat &m, const oclMat &mask ) const
:param m: The destination matrix. If it does not have a proper size or type before the operation, it will be reallocated
@ -31,11 +31,11 @@ Returns void
Copies the matrix to another one. Supports CV_8UC1, CV_8UC4, CV_32SC1, CV_32SC4, CV_32FC1, CV_32FC4
ocl::setTo
ocl::oclMat::setTo
------------------
Returns oclMat
.. ocv:function:: oclMat &setTo(const Scalar &s, const oclMat &mask = oclMat())
.. ocv:function:: oclMat& ocl::oclMat::setTo(const Scalar &s, const oclMat &mask = oclMat())
:param s: Assigned scalar, which is converted to the actual array type
@ -47,15 +47,16 @@ ocl::absdiff
------------------
Returns void
.. ocv:function:: void absdiff(const oclMat &a, const oclMat &b, oclMat &c)
.. ocv:function:: void ocl::absdiff( const oclMat& a, const oclMat& b, oclMat& c )
.. ocv:function:: void ocl::absdiff( const oclMat& a, const Scalar& s, oclMat& c )
.. ocv:function:: void absdiff(const oclMat &a, const Scalar& sc, oclMat &c)
:param a: The first input array
:param b: The second input array, must be the same size and same type as a
:param sc: Scalar, the second input parameter
:param s: Scalar, the second input parameter
:param c: The destination array, it will have the same size and same type as a
@ -65,17 +66,19 @@ ocl::add
------------------
Returns void
.. ocv:function:: void add(const oclMat &src1, const oclMat &src2, oclMat &dst, const oclMat& mask=oclMat())
.. ocv:function:: void ocl::add( const oclMat & a, const oclMat & b, oclMat & c )
.. ocv:function:: void add(const oclMat &src1, const Scalar &sc, oclMat &dst, const oclMat& mask=oclMat())
.. ocv:function:: void ocl::add( const oclMat & a, const oclMat & b, oclMat & c, const oclMat & mask )
:param src1: The first input array
.. ocv:function:: void ocl::add( const oclMat & a, const Scalar & sc, oclMat & c, const oclMat & mask=oclMat() )
:param src2: The second input array, must be the same size and same type as src1
:param a: The first input array
:param b: The second input array, must be the same size and same type as src1
:param sc: Scalar, the second input parameter
:param dst: The destination array, it will have the same size and same type as src1
:param c: The destination array, it will have the same size and same type as src1
:param mask: he optional operation mask, 8-bit single channel array; specifies elements of the destination array to be changed
@ -85,17 +88,22 @@ ocl::subtract
------------------
Returns void
.. ocv:function:: void subtract(const oclMat &src1, const oclMat &src2, oclMat &dst, const oclMat& mask=oclMat())
.. ocv:function:: void ocl::subtract( const oclMat& a, const oclMat& b, oclMat& c )
.. ocv:function:: void subtract(const oclMat &src1, const Scalar &sc, oclMat &dst, const oclMat& mask=oclMat())
.. ocv:function:: void ocl::subtract( const oclMat& a, const oclMat& b, oclMat& c, const oclMat& mask )
:param src1: The first input array
.. ocv:function:: void ocl::subtract( const oclMat& a, const Scalar& sc, oclMat& c, const oclMat& mask=oclMat() )
:param src2: The second input array, must be the same size and same type as src1
.. ocv:function:: void ocl::subtract( const Scalar& sc, const oclMat& a, oclMat& c, const oclMat& mask=oclMat() )
:param a: The first input array
:param b: The second input array, must be the same size and same type as src1
:param sc: Scalar, the second input parameter
:param dst: The destination array, it will have the same size and same type as src1
:param c: The destination array, it will have the same size and same type as src1
:param mask: he optional operation mask, 8-bit single channel array; specifies elements of the destination array to be changed
@ -105,13 +113,13 @@ ocl::multiply
------------------
Returns void
.. ocv:function:: void multiply(const oclMat &src1, const oclMat &src2, oclMat &dst, double scale = 1)
.. ocv:function:: void ocl::multiply( const oclMat& a, const oclMat& b, oclMat& c, double scale=1 )
:param src1: The first input array
:param a: The first input array
:param src2: The second input array, must be the same size and same type as src1
:param b: The second input array, must be the same size and same type as src1
:param dst: The destination array, it will have the same size and same type as src1
:param c: The destination array, it will have the same size and same type as src1
:param scale: must be 1 now
@ -121,13 +129,15 @@ ocl::divide
------------------
Returns void
.. ocv:function:: void divide(const oclMat &src1, const oclMat &src2, oclMat &dst, double scale = 1)
.. ocv:function:: void ocl::divide( const oclMat& a, const oclMat& b, oclMat& c, double scale=1 )
:param src1: The first input array
.. ocv:function:: void ocl::divide( double scale, const oclMat& b, oclMat& c )
:param src2: The second input array, must be the same size and same type as src1
:param a: The first input array
:param dst: The destination array, it will have the same size and same type as src1
:param b: The second input array, must be the same size and same type as src1
:param c: The destination array, it will have the same size and same type as src1
:param scale: must be 1 now
@ -137,15 +147,15 @@ ocl::bitwise_and
------------------
Returns void
.. ocv:function:: void bitwise_and(const oclMat &src1, const oclMat &src2, oclMat &dst, const oclMat& mask=oclMat())
.. ocv:function:: void ocl::bitwise_and( const oclMat& src1, const oclMat& src2, oclMat& dst, const oclMat& mask=oclMat() )
.. ocv:function:: void bitwise_and(const oclMat &src1, const Scalar &sc, oclMat &dst, const oclMat& mask=oclMat())
.. ocv:function:: void ocl::bitwise_and( const oclMat& src1, const Scalar& s, oclMat& dst, const oclMat& mask=oclMat() )
:param src1: The first input array
:param src2: The second input array, must be the same size and same type as src1
:param sc: Scalar, the second input parameter
:param s: Scalar, the second input parameter
:param dst: The destination array, it will have the same size and same type as src1
@ -157,15 +167,15 @@ ocl::bitwise_or
------------------
Returns void
.. ocv:function:: void bitwise_or(const oclMat &src1, const oclMat &src2, oclMat &dst, const oclMat& mask=oclMat())
.. ocv:function:: void ocl::bitwise_or( const oclMat& src1, const oclMat& src2, oclMat& dst, const oclMat& mask=oclMat() )
.. ocv:function:: void bitwise_or(const oclMat &src1, const Scalar &sc, oclMat &dst, const oclMat& mask=oclMat())
.. ocv:function:: void ocl::bitwise_or( const oclMat& src1, const Scalar& s, oclMat& dst, const oclMat& mask=oclMat() )
:param src1: The first input array
:param src2: The second input array, must be the same size and same type as src1
:param sc: Scalar, the second input parameter
:param s: Scalar, the second input parameter
:param dst: The destination array, it will have the same size and same type as src1
@ -177,9 +187,9 @@ ocl::bitwise_xor
------------------
Returns void
.. ocv:function:: void bitwise_xor(const oclMat &src1, const oclMat &src2, oclMat &dst, const oclMat& mask=oclMat())
.. ocv:function:: void ocl::bitwise_xor( const oclMat& src1, const oclMat& src2, oclMat& dst, const oclMat& mask=oclMat() )
.. ocv:function:: void bitwise_xor(const oclMat &src1, const Scalar &sc, oclMat &dst, const oclMat& mask=oclMat())
.. ocv:function:: void ocl::bitwise_xor( const oclMat& src1, const Scalar& s, oclMat& dst, const oclMat& mask=oclMat() )
:param src1: The first input array
@ -197,7 +207,7 @@ ocl::bitwise_not
------------------
Returns void
.. ocv:function:: void bitwise_not(const oclMat &src, oclMat &dst)
.. ocv:function:: void ocl::bitwise_not(const oclMat &src, oclMat &dst)
:param src: The input array
@ -209,7 +219,7 @@ ocl::cartToPolar
------------------
Returns void
.. ocv:function:: void cartToPolar(const oclMat &x, const oclMat &y, oclMat &magnitude, oclMat &angle, bool angleInDegrees = false)
.. ocv:function:: void ocl::cartToPolar(const oclMat &x, const oclMat &y, oclMat &magnitude, oclMat &angle, bool angleInDegrees = false)
:param x: The array of x-coordinates; must be single-precision or double-precision floating-point array
@ -227,7 +237,7 @@ ocl::polarToCart
------------------
Returns void
.. ocv:function:: void polarToCart(const oclMat &magnitude, const oclMat &angle, oclMat &x, oclMat &y, bool angleInDegrees = false)
.. ocv:function:: void ocl::polarToCart(const oclMat &magnitude, const oclMat &angle, oclMat &x, oclMat &y, bool angleInDegrees = false)
:param magnitude: The source floating-point array of magnitudes of 2D vectors. It can be an empty matrix (=Mat()) - in this case the function assumes that all the magnitudes are =1. If it's not empty, it must have the same size and same type as angle
@ -245,7 +255,7 @@ ocl::compare
------------------
Returns void
.. ocv:function:: void compare(const oclMat &a, const oclMat &b, oclMat &c, int cmpop)
.. ocv:function:: void ocl::compare(const oclMat &a, const oclMat &b, oclMat &c, int cmpop)
:param a: The first source array
@ -261,7 +271,7 @@ ocl::exp
------------------
Returns void
.. ocv:function:: void exp(const oclMat &a, oclMat &b)
.. ocv:function:: void ocl::exp(const oclMat &a, oclMat &b)
:param a: The first source array
@ -273,7 +283,7 @@ ocl::log
------------------
Returns void
.. ocv:function:: void log(const oclMat &a, oclMat &b)
.. ocv:function:: void ocl::log(const oclMat &a, oclMat &b)
:param a: The first source array
@ -285,7 +295,7 @@ ocl::LUT
------------------
Returns void
.. ocv:function:: void LUT(const oclMat &src, const oclMat &lut, oclMat &dst)
.. ocv:function:: void ocl::LUT(const oclMat &src, const oclMat &lut, oclMat &dst)
:param src: Source array of 8-bit elements
@ -299,7 +309,7 @@ ocl::magnitude
------------------
Returns void
.. ocv:function:: void magnitude(const oclMat &x, const oclMat &y, oclMat &magnitude)
.. ocv:function:: void ocl::magnitude(const oclMat &x, const oclMat &y, oclMat &magnitude)
:param x: The floating-point array of x-coordinates of the vectors
@ -313,11 +323,11 @@ ocl::flip
------------------
Returns void
.. ocv:function:: void flip(const oclMat &src, oclMat &dst, int flipCode)
.. ocv:function:: void ocl::flip( const oclMat& a, oclMat& b, int flipCode )
:param src: Source image.
:param a: Source image.
:param dst: Destination image
:param b: Destination image
:param flipCode: Specifies how to flip the array: 0 means flipping around the x-axis, positive (e.g., 1) means flipping around y-axis, and negative (e.g., -1) means flipping around both axes.
@ -327,7 +337,7 @@ ocl::meanStdDev
------------------
Returns void
.. ocv:function:: void meanStdDev(const oclMat &mtx, Scalar &mean, Scalar &stddev)
.. ocv:function:: void ocl::meanStdDev(const oclMat &mtx, Scalar &mean, Scalar &stddev)
:param mtx: Source image.
@ -341,7 +351,7 @@ ocl::merge
------------------
Returns void
.. ocv:function:: void merge(const vector<oclMat> &src, oclMat &dst)
.. ocv:function:: void ocl::merge(const vector<oclMat> &src, oclMat &dst)
:param src: The source array or vector of the single-channel matrices to be merged. All the matrices in src must have the same size and the same type
@ -353,7 +363,7 @@ ocl::split
------------------
Returns void
.. ocv:function:: void split(const oclMat &src, vector<oclMat> &dst)
.. ocv:function:: void ocl::split(const oclMat &src, vector<oclMat> &dst)
:param src: The source multi-channel array
@ -365,9 +375,9 @@ ocl::norm
------------------
Returns the calculated norm
.. ocv:function:: double norm(const oclMat &src1, int normType = NORM_L2)
.. ocv:function:: double ocl::norm(const oclMat &src1, int normType = NORM_L2)
.. ocv:function:: double norm(const oclMat &src1, const oclMat &src2, int normType = NORM_L2)
.. ocv:function:: double ocl::norm(const oclMat &src1, const oclMat &src2, int normType = NORM_L2)
:param src1: The first source array
@ -381,7 +391,7 @@ ocl::phase
------------------
Returns void
.. ocv:function:: void phase(const oclMat &x, const oclMat &y, oclMat &angle, bool angleInDegrees = false)
.. ocv:function:: void ocl::phase(const oclMat &x, const oclMat &y, oclMat &angle, bool angleInDegrees = false)
:param x: The source floating-point array of x-coordinates of 2D vectors
@ -397,7 +407,7 @@ ocl::pow
------------------
Returns void
.. ocv:function:: void pow(const oclMat &x, double p, oclMat &y)
.. ocv:function:: void ocl::pow(const oclMat &x, double p, oclMat &y)
:param x: The source array
@ -411,7 +421,7 @@ ocl::transpose
------------------
Returns void
.. ocv:function:: void transpose(const oclMat &src, oclMat &dst)
.. ocv:function:: void ocl::transpose(const oclMat &src, oclMat &dst)
:param src: The source array
@ -424,7 +434,7 @@ ocl::dft
------------
Performs a forward or inverse discrete Fourier transform (1D or 2D) of the floating point matrix.
.. ocv:function:: void ocl::dft(const oclMat& src, oclMat& dst, Size dft_size, int flags=0)
.. ocv:function:: void ocl::dft( const oclMat& src, oclMat& dst, Size dft_size=Size(0, 0), int flags=0 )
:param src: Source matrix (real or complex).
@ -452,7 +462,7 @@ ocl::gemm
------------------
Performs generalized matrix multiplication.
.. ocv:function:: void gemm(const oclMat& src1, const oclMat& src2, double alpha, const oclMat& src3, double beta, oclMat& dst, int flags = 0)
.. ocv:function:: void ocl::gemm(const oclMat& src1, const oclMat& src2, double alpha, const oclMat& src3, double beta, oclMat& dst, int flags = 0)
:param src1: First multiplied input matrix that should be ``CV_32FC1`` type.

@ -35,7 +35,7 @@ ocl::setBinpath
------------------
Returns void
.. ocv:function:: void setBinpath(const char *path)
.. ocv:function:: void ocl::setBinpath(const char *path)
:param path: the path of OpenCL kernel binaries
@ -45,7 +45,7 @@ ocl::getoclContext
------------------
Returns the pointer to the opencl context
.. ocv:function:: void *getoclContext()
.. ocv:function:: void* ocl::getoclContext()
Thefunction are used to get opencl context so that opencv can interactive with other opencl program.
@ -53,6 +53,6 @@ ocl::getoclCommandQueue
--------------------------
Returns the pointer to the opencl command queue
.. ocv:function:: void *getoclCommandQueue()
.. ocv:function:: void* ocl::getoclCommandQueue()
Thefunction are used to get opencl command queue so that opencv can interactive with other opencl program.

@ -95,9 +95,9 @@ namespace cv
//other opencl program
CV_EXPORTS void *getoclContext();
CV_EXPORTS void* getoclContext();
CV_EXPORTS void *getoclCommandQueue();
CV_EXPORTS void* getoclCommandQueue();
//////////////////////////////// Error handling ////////////////////////
CV_EXPORTS void error(const char *error_string, const char *file, const int line, const char *func);
@ -191,10 +191,10 @@ namespace cv
//! sets every oclMatrix element to s
//It supports 8UC1 8UC4 32SC1 32SC4 32FC1 32FC4
oclMat &operator = (const Scalar &s);
oclMat& operator = (const Scalar &s);
//! sets some of the oclMatrix elements to s, according to the mask
//It supports 8UC1 8UC4 32SC1 32SC4 32FC1 32FC4
oclMat &setTo(const Scalar &s, const oclMat &mask = oclMat());
oclMat& setTo(const Scalar &s, const oclMat &mask = oclMat());
//! creates alternative oclMatrix header for the same data, with different
// number of channels and/or different number of rows. see cvReshape.
oclMat reshape(int cn, int rows = 0) const;
@ -213,7 +213,7 @@ namespace cv
//! locates oclMatrix header within a parent oclMatrix. See below
void locateROI( Size &wholeSize, Point &ofs ) const;
//! moves/resizes the current oclMatrix ROI inside the parent oclMatrix.
oclMat &adjustROI( int dtop, int dbottom, int dleft, int dright );
oclMat& adjustROI( int dtop, int dbottom, int dleft, int dright );
//! extracts a rectangular sub-oclMatrix
// (this is a generalized form of row, rowRange etc.)
oclMat operator()( Range rowRange, Range colRange ) const;
@ -249,7 +249,7 @@ namespace cv
bool empty() const;
//! returns pointer to y-th row
uchar *ptr(int y = 0);
uchar* ptr(int y = 0);
const uchar *ptr(int y = 0) const;
//! template version of the above method
@ -347,7 +347,7 @@ namespace cv
//! transposes the matrix
// supports CV_8UC1, 8UC4, 8SC4, 16UC2, 16SC2, 32SC1 and 32FC1.(the same as cuda)
CV_EXPORTS void transpose(const oclMat &src1, oclMat &dst);
CV_EXPORTS void transpose(const oclMat &src, oclMat &dst);
//! computes element-wise absolute difference of two arrays (c = abs(a - b))
// supports all types except CV_8SC1,CV_8SC2,CV8SC3 and CV_8SC4
@ -407,7 +407,7 @@ namespace cv
CV_EXPORTS void equalizeHist(const oclMat &mat_src, oclMat &mat_dst);
//! bilateralFilter
// supports 8UC1 8UC4
CV_EXPORTS void bilateralFilter(const oclMat &, oclMat &, int , double, double, int);
CV_EXPORTS void bilateralFilter(const oclMat& src, oclMat& dst, int d, double sigmaColor, double sigmaSpave, int borderType=BORDER_DEFAULT);
//! computes exponent of each matrix element (b = e**a)
// supports only CV_32FC1 type
CV_EXPORTS void exp(const oclMat &a, oclMat &b);
@ -719,7 +719,7 @@ namespace cv
OclCascadeClassifier() {};
~OclCascadeClassifier() {};
CvSeq *oclHaarDetectObjects(oclMat &gimg, CvMemStorage *storage, double scaleFactor,
CvSeq* oclHaarDetectObjects(oclMat &gimg, CvMemStorage *storage, double scaleFactor,
int minNeighbors, int flags, CvSize minSize = cvSize(0, 0), CvSize maxSize = cvSize(0, 0));
};
@ -729,7 +729,7 @@ namespace cv
CV_EXPORTS void pyrDown(const oclMat &src, oclMat &dst);
//! upsamples the source image and then smoothes it
CV_EXPORTS void pyrUp(const cv::ocl::oclMat &src, cv::ocl::oclMat &dst);
CV_EXPORTS void pyrUp(const oclMat &src, oclMat &dst);
//! performs linear blending of two images
//! to avoid accuracy errors sum of weigths shouldn't be very close to zero
@ -1705,11 +1705,11 @@ namespace cv
};
//////////////// build warping maps ////////////////////
//! builds plane warping maps
CV_EXPORTS void buildWarpPlaneMaps(Size, Rect, const Mat &, const Mat &, const Mat &, float, oclMat &, oclMat &);
CV_EXPORTS void buildWarpPlaneMaps(Size src_size, Rect dst_roi, const Mat &K, const Mat &R, const Mat &T, float scale, oclMat &map_x, oclMat &map_y);
//! builds cylindrical warping maps
CV_EXPORTS void buildWarpCylindricalMaps(Size, Rect, const Mat &, const Mat &, float, oclMat &, oclMat &);
CV_EXPORTS void buildWarpCylindricalMaps(Size src_size, Rect dst_roi, const Mat &K, const Mat &R, float scale, oclMat &map_x, oclMat &map_y);
//! builds spherical warping maps
CV_EXPORTS void buildWarpSphericalMaps(Size, Rect, const Mat &, const Mat &, float, oclMat &, oclMat &);
CV_EXPORTS void buildWarpSphericalMaps(Size src_size, Rect dst_roi, const Mat &K, const Mat &R, float scale, oclMat &map_x, oclMat &map_y);
//! builds Affine warping maps
CV_EXPORTS void buildWarpAffineMaps(const Mat &M, bool inverse, Size dsize, oclMat &xmap, oclMat &ymap);

@ -337,10 +337,10 @@ class CppHeaderParser(object):
atype = arg[:pos+1].strip()
if aname.endswith("&") or aname.endswith("*") or (aname in ["int", "string", "Mat"]):
atype = (atype + " " + aname).strip()
aname = "param"
aname = ""
else:
atype = arg
aname = "param"
aname = ""
if aname.endswith("]"):
bidx = aname.find('[')
atype += aname[bidx:]
@ -575,6 +575,8 @@ class CppHeaderParser(object):
"""
if not self.block_stack:
return name
if name.startswith("cv."):
return name
n = ""
for b in self.block_stack:
block_type, block_name = b[self.BLOCK_TYPE], b[self.BLOCK_NAME]

@ -5,6 +5,7 @@ from table_formatter import *
from optparse import OptionParser
from operator import itemgetter, attrgetter
from summary import getSetName, alphanum_keyselector
import re
if __name__ == "__main__":
usage = "%prog <log_name>.xml [...]"
@ -21,14 +22,13 @@ if __name__ == "__main__":
options.generateHtml = detectHtmlOutputType(options.format)
# expand wildcards and filter duplicates
file = os.path.abspath(args[0])
input_file = args[0]
file = os.path.abspath(input_file)
if not os.path.isfile(file):
sys.stderr.write("IOError reading \"" + file + "\" - " + str(err) + os.linesep)
parser.print_help()
exit(0)
# read all passed files
test_sets = []
try:
tests = testlog_parser.parseLogFile(file)
@ -41,7 +41,7 @@ if __name__ == "__main__":
if not test_sets:
sys.stderr.write("Error: no test data found" + os.linesep)
quit()
exit(0)
# find matches
setsCount = len(test_sets)
@ -81,6 +81,13 @@ if __name__ == "__main__":
if case.get('status') == 'failed':
has_failed = True
testsuits.append({'name': prevGroupName, 'time': suit_time, \
'failed': has_failed})
if len(testsuits)==0:
print 'No testsuits found'
exit(0)
tbl = table()
# header
@ -103,4 +110,11 @@ if __name__ == "__main__":
tbl.htmlPrintTable(sys.stdout)
htmlPrintFooter(sys.stdout)
else:
tbl.consolePrintTable(sys.stdout)
input_file = re.sub(r'^[\.\/]*', '', input_file)
find_module_name = re.search(r'([^_]*)', input_file)
module_name = find_module_name.group(0)
splitter = 15 * '*'
print '\n%s\n %s\n%s\n' % (splitter, module_name, splitter)
tbl.consolePrintTable(sys.stdout)
print 4 * '\n'

@ -1194,8 +1194,8 @@ cvCalcOpticalFlowPyrLK( const void* arrA, const void* arrB,
st = cv::Mat(count, 1, CV_8U, (void*)status);
if( error )
err = cv::Mat(count, 1, CV_32F, (void*)error);
cv::calcOpticalFlowPyrLK( A, B, ptA, ptB, status ? cv::_OutputArray(st) : cv::_OutputArray(),
error ? cv::_OutputArray(err) : cv::_OutputArray(),
cv::calcOpticalFlowPyrLK( A, B, ptA, ptB, st,
error ? cv::_OutputArray(err) : cv::noArray(),
winSize, level, criteria, flags);
}

Loading…
Cancel
Save