more formatting
This commit is contained in:
parent
23fb570cbd
commit
aaefd31844
@ -52,26 +52,26 @@ Build
|
|||||||
|
|
||||||
Let's build OpenCV:
|
Let's build OpenCV:
|
||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
git clone git://github.com/Itseez/opencv.git
|
git clone git://github.com/Itseez/opencv.git
|
||||||
cd opencv
|
cd opencv
|
||||||
git checkout 2.4
|
git checkout 2.4
|
||||||
mkdir build
|
mkdir build
|
||||||
cd build
|
cd build
|
||||||
|
|
||||||
Generate a Makefile or a MS Visual Studio* solution, or whatever you use for
|
Generate a Makefile or a MS Visual Studio* solution, or whatever you use for
|
||||||
building executables in your system:
|
building executables in your system:
|
||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
cmake -DBUILD_SHARED_LIBS=OFF ..
|
cmake -DBUILD_SHARED_LIBS=OFF ..
|
||||||
|
|
||||||
or
|
or
|
||||||
|
|
||||||
.. code-block:: bat
|
.. code-block:: bat
|
||||||
|
|
||||||
cmake -DBUILD_SHARED_LIBS=OFF -G "Visual Studio 10" ..
|
cmake -DBUILD_SHARED_LIBS=OFF -G "Visual Studio 10" ..
|
||||||
|
|
||||||
.. note:: When OpenCV is built as a set of **static** libraries (``-DBUILD_SHARED_LIBS=OFF`` option)
|
.. note:: When OpenCV is built as a set of **static** libraries (``-DBUILD_SHARED_LIBS=OFF`` option)
|
||||||
the Java bindings dynamic library is all-sufficient,
|
the Java bindings dynamic library is all-sufficient,
|
||||||
@ -81,9 +81,9 @@ Examine the output of CMake and ensure ``java`` is one of the modules "To be bui
|
|||||||
If not, it's likely you're missing a dependency. You should troubleshoot by looking
|
If not, it's likely you're missing a dependency. You should troubleshoot by looking
|
||||||
through the CMake output for any Java-related tools that aren't found and installing them.
|
through the CMake output for any Java-related tools that aren't found and installing them.
|
||||||
|
|
||||||
.. image:: images/cmake_output.png
|
.. image:: images/cmake_output.png
|
||||||
:alt: CMake output
|
:alt: CMake output
|
||||||
:align: center
|
:align: center
|
||||||
|
|
||||||
.. note:: If ``CMake`` can't find Java in your system set the ``JAVA_HOME``
|
.. note:: If ``CMake`` can't find Java in your system set the ``JAVA_HOME``
|
||||||
environment variable with the path to installed JDK
|
environment variable with the path to installed JDK
|
||||||
@ -97,15 +97,15 @@ through the CMake output for any Java-related tools that aren't found and instal
|
|||||||
|
|
||||||
Now start the build:
|
Now start the build:
|
||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
make -j8
|
make -j8
|
||||||
|
|
||||||
or
|
or
|
||||||
|
|
||||||
.. code-block:: bat
|
.. code-block:: bat
|
||||||
|
|
||||||
msbuild /m OpenCV.sln /t:Build /p:Configuration=Release /v:m
|
msbuild /m OpenCV.sln /t:Build /p:Configuration=Release /v:m
|
||||||
|
|
||||||
Besides all this will create a ``jar`` containing the Java interface (:file:`bin/opencv-244.jar`)
|
Besides all this will create a ``jar`` containing the Java interface (:file:`bin/opencv-244.jar`)
|
||||||
and a native dynamic library containing Java bindings and all the OpenCV stuff
|
and a native dynamic library containing Java bindings and all the OpenCV stuff
|
||||||
@ -122,8 +122,8 @@ Java sample with Ant
|
|||||||
|
|
||||||
* In this folder create the :file:`build.xml` file with the following content using any text editor:
|
* In this folder create the :file:`build.xml` file with the following content using any text editor:
|
||||||
|
|
||||||
.. code-block:: xml
|
.. code-block:: xml
|
||||||
:linenos:
|
:linenos:
|
||||||
|
|
||||||
<project name="SimpleSample" basedir="." default="rebuild-run">
|
<project name="SimpleSample" basedir="." default="rebuild-run">
|
||||||
|
|
||||||
@ -175,18 +175,18 @@ Java sample with Ant
|
|||||||
|
|
||||||
</project>
|
</project>
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
This XML file can be reused for building other Java applications.
|
This XML file can be reused for building other Java applications.
|
||||||
It describes a common folder structure in the lines 3 - 12 and common targets
|
It describes a common folder structure in the lines 3 - 12 and common targets
|
||||||
for compiling and running the application.
|
for compiling and running the application.
|
||||||
|
|
||||||
When reusing this XML don't forget to modify the project name in the line 1,
|
When reusing this XML don't forget to modify the project name in the line 1,
|
||||||
that is also the name of the `main` class (line 14).
|
that is also the name of the `main` class (line 14).
|
||||||
The paths to OpenCV `jar` and `jni lib` are expected as parameters
|
The paths to OpenCV `jar` and `jni lib` are expected as parameters
|
||||||
(``"${ocvJarDir}"`` in line 5 and ``"${ocvLibDir}"`` in line 37), but
|
(``"${ocvJarDir}"`` in line 5 and ``"${ocvLibDir}"`` in line 37), but
|
||||||
you can hardcode these paths for your convenience.
|
you can hardcode these paths for your convenience.
|
||||||
See `Ant documentation <http://ant.apache.org/manual/>`_ for detailed description
|
See `Ant documentation <http://ant.apache.org/manual/>`_ for detailed description
|
||||||
of its build file format.
|
of its build file format.
|
||||||
|
|
||||||
* Create an :file:`src` folder next to the :file:`build.xml` file and a :file:`SimpleSample.java` file in it.
|
* Create an :file:`src` folder next to the :file:`build.xml` file and a :file:`SimpleSample.java` file in it.
|
||||||
|
|
||||||
@ -336,66 +336,66 @@ First, download and install `SBT <http://www.scala-sbt.org/>`_ using the instruc
|
|||||||
Next, navigate to a new directory where you'd like the application source to live (outside :file:`opencv` dir).
|
Next, navigate to a new directory where you'd like the application source to live (outside :file:`opencv` dir).
|
||||||
Let's call it "JavaSample" and create a directory for it:
|
Let's call it "JavaSample" and create a directory for it:
|
||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
cd <somewhere outside opencv>
|
cd <somewhere outside opencv>
|
||||||
mkdir JavaSample
|
mkdir JavaSample
|
||||||
|
|
||||||
Now we will create the necessary folders and an SBT project:
|
Now we will create the necessary folders and an SBT project:
|
||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
cd JavaSample
|
cd JavaSample
|
||||||
mkdir -p src/main/java # This is where SBT expects to find Java sources
|
mkdir -p src/main/java # This is where SBT expects to find Java sources
|
||||||
mkdir project # This is where the build definitions live
|
mkdir project # This is where the build definitions live
|
||||||
|
|
||||||
Now open :file:`project/build.scala` in your favorite editor and paste the following.
|
Now open :file:`project/build.scala` in your favorite editor and paste the following.
|
||||||
It defines your project:
|
It defines your project:
|
||||||
|
|
||||||
.. code-block:: scala
|
.. code-block:: scala
|
||||||
|
|
||||||
import sbt._
|
import sbt._
|
||||||
import Keys._
|
import Keys._
|
||||||
|
|
||||||
object JavaSampleBuild extends Build {
|
object JavaSampleBuild extends Build {
|
||||||
def scalaSettings = Seq(
|
def scalaSettings = Seq(
|
||||||
scalaVersion := "2.10.0",
|
scalaVersion := "2.10.0",
|
||||||
scalacOptions ++= Seq(
|
scalacOptions ++= Seq(
|
||||||
"-optimize",
|
"-optimize",
|
||||||
"-unchecked",
|
"-unchecked",
|
||||||
"-deprecation"
|
"-deprecation"
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
def buildSettings =
|
def buildSettings =
|
||||||
Project.defaultSettings ++
|
Project.defaultSettings ++
|
||||||
scalaSettings
|
scalaSettings
|
||||||
|
|
||||||
lazy val root = {
|
lazy val root = {
|
||||||
val settings = buildSettings ++ Seq(name := "JavaSample")
|
val settings = buildSettings ++ Seq(name := "JavaSample")
|
||||||
Project(id = "JavaSample", base = file("."), settings = settings)
|
Project(id = "JavaSample", base = file("."), settings = settings)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Now edit :file:`project/plugins.sbt` and paste the following.
|
Now edit :file:`project/plugins.sbt` and paste the following.
|
||||||
This will enable auto-generation of an Eclipse project:
|
This will enable auto-generation of an Eclipse project:
|
||||||
|
|
||||||
.. code-block:: scala
|
.. code-block:: scala
|
||||||
|
|
||||||
addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "2.1.0")
|
addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "2.1.0")
|
||||||
|
|
||||||
Now run ``sbt`` from the :file:`JavaSample` root and from within SBT run ``eclipse`` to generate an eclipse project:
|
Now run ``sbt`` from the :file:`JavaSample` root and from within SBT run ``eclipse`` to generate an eclipse project:
|
||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
sbt # Starts the sbt console
|
sbt # Starts the sbt console
|
||||||
> eclipse # Running "eclipse" from within the sbt console
|
> eclipse # Running "eclipse" from within the sbt console
|
||||||
|
|
||||||
You should see something like this:
|
You should see something like this:
|
||||||
|
|
||||||
.. image:: images/sbt_eclipse.png
|
.. image:: images/sbt_eclipse.png
|
||||||
:alt: SBT output
|
:alt: SBT output
|
||||||
:align: center
|
:align: center
|
||||||
|
|
||||||
You can now import the SBT project to Eclipse using :guilabel:`Import ... -> Existing projects into workspace`.
|
You can now import the SBT project to Eclipse using :guilabel:`Import ... -> Existing projects into workspace`.
|
||||||
Whether you actually do this is optional for the guide;
|
Whether you actually do this is optional for the guide;
|
||||||
@ -404,25 +404,25 @@ we'll be using SBT to build the project, so if you choose to use Eclipse it will
|
|||||||
To test that everything is working, create a simple "Hello OpenCV" application.
|
To test that everything is working, create a simple "Hello OpenCV" application.
|
||||||
Do this by creating a file :file:`src/main/java/HelloOpenCV.java` with the following contents:
|
Do this by creating a file :file:`src/main/java/HelloOpenCV.java` with the following contents:
|
||||||
|
|
||||||
.. code-block:: java
|
.. code-block:: java
|
||||||
|
|
||||||
public class HelloOpenCV {
|
public class HelloOpenCV {
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
System.out.println("Hello, OpenCV");
|
System.out.println("Hello, OpenCV");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Now execute ``run`` from the sbt console, or more concisely, run ``sbt run`` from the command line:
|
Now execute ``run`` from the sbt console, or more concisely, run ``sbt run`` from the command line:
|
||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
sbt run
|
sbt run
|
||||||
|
|
||||||
You should see something like this:
|
You should see something like this:
|
||||||
|
|
||||||
.. image:: images/sbt_run.png
|
.. image:: images/sbt_run.png
|
||||||
:alt: SBT run
|
:alt: SBT run
|
||||||
:align: center
|
:align: center
|
||||||
|
|
||||||
Running SBT samples
|
Running SBT samples
|
||||||
-------------------
|
-------------------
|
||||||
@ -433,17 +433,17 @@ First, create a :file:`lib/` folder and copy the OpenCV jar into it.
|
|||||||
By default, SBT adds jars in the lib folder to the Java library search path.
|
By default, SBT adds jars in the lib folder to the Java library search path.
|
||||||
You can optionally rerun ``sbt eclipse`` to update your Eclipse project.
|
You can optionally rerun ``sbt eclipse`` to update your Eclipse project.
|
||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
mkdir lib
|
mkdir lib
|
||||||
cp <opencv_dir>/build/bin/opencv_<version>.jar lib/
|
cp <opencv_dir>/build/bin/opencv_<version>.jar lib/
|
||||||
sbt eclipse
|
sbt eclipse
|
||||||
|
|
||||||
Next, create the directory :file:`src/main/resources` and download this Lena image into it:
|
Next, create the directory :file:`src/main/resources` and download this Lena image into it:
|
||||||
|
|
||||||
.. image:: images/lena.png
|
.. image:: images/lena.png
|
||||||
:alt: Lena
|
:alt: Lena
|
||||||
:align: center
|
:align: center
|
||||||
|
|
||||||
Make sure it's called :file:`"lena.png"`.
|
Make sure it's called :file:`"lena.png"`.
|
||||||
Items in the resources directory are available to the Java application at runtime.
|
Items in the resources directory are available to the Java application at runtime.
|
||||||
@ -451,9 +451,9 @@ Items in the resources directory are available to the Java application at runtim
|
|||||||
Next, copy :file:`lbpcascade_frontalface.xml` from :file:`opencv/data/lbpcascades/` into the :file:`resources`
|
Next, copy :file:`lbpcascade_frontalface.xml` from :file:`opencv/data/lbpcascades/` into the :file:`resources`
|
||||||
directory:
|
directory:
|
||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
cp <opencv_dir>/data/lbpcascades/lbpcascade_frontalface.xml src/main/resources/
|
cp <opencv_dir>/data/lbpcascades/lbpcascade_frontalface.xml src/main/resources/
|
||||||
|
|
||||||
Now modify src/main/java/HelloOpenCV.java so it contains the following Java code:
|
Now modify src/main/java/HelloOpenCV.java so it contains the following Java code:
|
||||||
|
|
||||||
@ -517,21 +517,21 @@ You will also get errors if you try to load OpenCV when it has already been load
|
|||||||
|
|
||||||
Now run the face detection app using ``sbt run``:
|
Now run the face detection app using ``sbt run``:
|
||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
sbt run
|
sbt run
|
||||||
|
|
||||||
You should see something like this:
|
You should see something like this:
|
||||||
|
|
||||||
.. image:: images/sbt_run_face.png
|
.. image:: images/sbt_run_face.png
|
||||||
:alt: SBT run
|
:alt: SBT run
|
||||||
:align: center
|
:align: center
|
||||||
|
|
||||||
It should also write the following image to :file:`faceDetection.png`:
|
It should also write the following image to :file:`faceDetection.png`:
|
||||||
|
|
||||||
.. image:: images/faceDetection.png
|
.. image:: images/faceDetection.png
|
||||||
:alt: Detected face
|
:alt: Detected face
|
||||||
:align: center
|
:align: center
|
||||||
|
|
||||||
You're done!
|
You're done!
|
||||||
Now you have a sample Java application working with OpenCV, so you can start the work on your own.
|
Now you have a sample Java application working with OpenCV, so you can start the work on your own.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user