• Stars
    star
    1,078
  • Rank 42,909 (Top 0.9 %)
  • Language
    Java
  • Created over 13 years ago
  • Updated about 1 month ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Fast computer vision library for SFM, calibration, fiducials, tracking, image processing, and more.

Build Status Join the chat at https://gitter.im/lessthanoptimal/BoofCV Maven Central


Table of Contents


Introduction

BoofCV is an open source real-time computer vision library written entirely in Java and released under the Apache License 2.0. Functionality includes low-level image processing, camera calibration, feature detection/tracking, structure-from-motion, classification, and recognition.

Cloning GIT Repository

The bleeding edge source code can be obtained by cloning the git repository.

git clone -b SNAPSHOT --recursive https://github.com/lessthanoptimal/BoofCV.git boofcv

Is the data directory empty? That's because you didn't follow instructions and skipped --recursive. Fix that by doing the following.

cd boofcv
git submodule update --init --recursive

Quick Start Examples and Demonstrations

To run BoofCV you need Java 11 or newer and any free version will work, e.g. Zulu. To build BoofCV, just let the Gradle script handle everything. It will automatically download what it needs and ignore your local JDK if it's not compatible.

cd boofcv
git clean -fd main # Removes stale autogenerated code
./gradlew autogenerate
./gradlew examplesJar
java -jar examples/examples.jar
./gradlew demonstrationsJar
java -jar demonstrations/demonstrations.jar

All the code for examples and demonstrations is in boofcv/examples and boofcv/demonstrations. Example code is intended easy to understand, so look there first.

Click HERE for instruction on building and running Applications. There you can calibrate cameras, create QR codes, batch scan for QR codes, batch downsample images, ... etc.

Maven Central Repository

BoofCV is on Maven Central and can be easily added to your favorite build systems; Maven, Gradle, ... etc. It's divided up into many modules, but most people will just need 'boofcv-core'. Additional modules are listed below for GUI and IO components. To include it in a Gradle project add the following to your dependencies:

For Gradle projects:

dependencies {
    api(group: 'org.boofcv', name: 'boofcv-core', version: '1.1.3')
}

Here are a list of the most commonly used modules and what they are for:

Name Description
boofcv-core All the core libraries without any of the integration modules listed below
boofcv-android Useful functions for working inside of Android devices.
boofcv-ffmpeg javacpp-presets their ffmpeg wrapper is used for reading video files.
boofcv-javacv JavaCV is a wrapper around OpenCV mainly for file IO.
boofcv-jcodec JCodec is a pure Java video reader/writer.
boofcv-kotlin Kotlin extensions which take advantage of Kotlin's unique features.
boofcv-pdf Needed to render fiduals as PDF documents
boofcv-swing Visualization using Java Swing. Required for examples and demonstrations.
boofcv-WebcamCapture A few functions that make WebcamCapture even easier to use.

Directories

Directory Description
applications/ Helpful applications
data/ Directory containing optional data used by applets and examples.
demonstrations/ Demonstration code which typically lets experiment by changing parameters in real-time
examples/ Set of example code designed to be easy to read and understand.
integration/ Contains code which allows BoofCV to be easily integrated with 3rd party libraries. Primary for video input/output.
main/ Contains the source code for BoofCV

Building from Source

Building and installing BoofCV into your local Maven repository is easy[1] using the gradlew script:

cd boofcv
git clean -fd main                # Removes stale autogenerated code
./gradlew autogenerate            # Creates auto generated files
./gradlew publishToMavenLocal     # Installs it into the local maven repository 

If you wish to have jars instead, the following commands are provided.

./gradlew oneJarBin               # Builds a single jar with all of BoofCV in it
./gradlew createLibraryDirectory  # Puts all jars and dependencies into boofcv/library
./gradlew alljavadoc              # Combines all JavaDoc from all sub-projects into a single set

[1] A couple of the integration submodules have a custom build process that can't be performed by Gradle. The script is smart enough to ignore modules and tell you that it is doing so if you haven't configured it yet.

IntelliJ

IntelliJ is the recommended IDE for use with BoofCV. With IntelliJ you can directly import the Gradle project.

  1. File->Project From Existing Sources
  2. Select your local "boofcv" directory
  3. Confirm that you wish to import the Gradle project

Eclipse

Similar to IntelliJ, you can now import Gradle projects like BoofCV using the Buildship tooling. Instructions


Dependencies

Core BoofCV modules depends on the following libraries

The following is required for unit tests

Code from the following libraries has been integrated into BoofCV

The optional sub-projects in integration also have several dependencies. See those sub-projects for a list of their dependencies.


Contact

For questions or comments about BoofCV please use the message board. Only post a bug report after doing some due diligence to make sure it is really a bug and that it has not already been reported.

Message Board

More Repositories

1

ejml

A fast and easy to use linear algebra library written in Java for dense, sparse, real, and complex matrices.
Java
559
star
2

BoofAndroidDemo

Demonstration of BoofCV for Android devices
Java
125
star
3

PyBoof

Python wrapper around the BoofCV Computer Vision Library
Python
64
star
4

Java-Matrix-Benchmark

Java Matrix Benchmark is a tool for evaluating Java linear algebra libraries for speed, stability, and memory usage.
Java
57
star
5

GeoRegression

Java based geometry library for transforming, fitting, and intersecting geometric shapes and motion models.
Java
53
star
6

ddogleg

Java numerics library for optimization, polynomial root finding, sorting, robust model fitting, and more.
Java
50
star
7

gversion-plugin

Gradle plugin for autogenerating version info from gradle and git
Groovy
43
star
8

DeepBoof

Java library for running and visualizing Deep Neural Networks trained in Torch.
Java
23
star
9

VectorPerformance

Java
22
star
10

TutorialObjectTracking

Demonstration on how to perform object tracking from live video streams on the desktop and Android devices.
Java
19
star
11

BoofCPP

Partial port of BoofCV to C++ to accelerate specific operations
C++
19
star
12

BoofProcessing

Interface which allows you to use BoofCV in Processing .
Java
17
star
13

ValidationBoof

Source code used to validate the correctness of BoofCV
Java
15
star
14

BoofCV-Data

Data for BoofCV project
PostScript
14
star
15

LearnBoof3D

Lessons for learning 3D computer vision in BoofCV
Java
14
star
16

jrplidar

java driver for RP-LIDAR sensor
Java
10
star
17

KBoofExamples

BoofCV examples written in Kotlin
Kotlin
9
star
18

Bubo

Project Bubo is a library for robotics related mapping, control, and sensor processing.
Java
7
star
19

AndroidAutoFocus

Camera 2 API is a beast. This article is focused on computer vision developers who just want a stream of RGB or gray scale images and not to worry about all those the pesky implementation details.
Java
5
star
20

CalibrateCompare

Compares BoofCV's calibration against other libraries
Java
4
star
21

BertschStereo

Java
4
star
22

IpolOpticalFlow

Java implementations of IPOL algorithms for optical flow
Java
4
star
23

rovio

Java classes for control and processing images from a Rovio
Java
4
star
24

SURFPerformance

Benchmark for SURF interest point detector and descriptors
Java
4
star
25

BoofApplications

Prebuild tools, demonstrations, and examples applications for BoofCV.
Java
4
star
26

SpeedTestCV

Speed Test Comparing Image Processing Routines
Java
3
star
27

JBumblebee

Java JNI wrapper for the Bumblebee2 stereo camera
C
3
star
28

DepthFromFocus

Java
3
star
29

ExampleWebcamRPI

Example of using BoofCV on a Raspberry PI to scan for QR Codes from a webcam.
Java
3
star
30

AndroidTestBoofCV

Application for testing BoofCV's capabilities on Android devices and evaluating its performance.
Java
3
star
31

RobotWebcamVO

Project demonstrating how to use a webcam to perform visual odometry on a simple robot.
Java
3
star
32

create

Java
2
star
33

michelepattern

Java
2
star
34

Auto64Fto32F

Java Library for automatically generating float (32F) code from Java double (64F)
Java
2
star
35

bow

Toying around with Bag of Words classifiers in python
Python
1
star
36

bubo-data

Storage for ProjectBUBO data files
1
star
37

EjmlRegressionTests

Regression Tests for EJML
Python
1
star
38

pypete

Python code that I wrote
Python
1
star
39

Java-Matrix-Benchmark-Pages

Jekyll website for JMatBench
SCSS
1
star
40

native-helper-plugin

Simple functions to help with native builds in Gradle
Groovy
1
star