Difference between revisions of "Raspberry PI"
m |
m |
||
Line 61: | Line 61: | ||
= How do I get webcams to work? = | = How do I get webcams to work? = | ||
BoofCV uses [http://webcam-capture.sarxos.pl/ Webcam Capture] and in | Out of the box BoofCV uses [http://webcam-capture.sarxos.pl/ Webcam Capture] due to its easy of use and in Webcam Capture's default configuration it doesn't work on Raspberry PI. The good news is that there is a simple fix that needs to be added to your source code to get it to run on Raspberry PI! | ||
* [https://github.com/sarxos/webcam-capture/wiki/How-To-Configure-Raspberry-Pi Configuring Webcam Capture] | |||
* [https://github.com/sarxos/webcam-capture/tree/master/webcam-capture-drivers/driver-raspberrypi More WebcamCapture Raspberry PI Goodness] | |||
* [[#Simple Example Application| Example BoofCV Project Using Webcam Capture]] | |||
Performance might be an issue with Webcam Capture. There for you might want to consider some alternatives which may or may not be as user friendly. | |||
* [https://github.com/Hopding/JRPiCam JRPiCam] uses raspistill to capture images | |||
* [https://github.com/lessthanoptimal/libwebcam My fork of libwebcam.] Added a Java wrapper and added more controls. Not supported. | |||
If there's another library you find that can capture images and is fast you should be able to wrap it and get the images into BoofCV. | |||
= How do I use the Raspberry PI Camera? = | = How do I use the Raspberry PI Camera? = | ||
The easiest way to access the camera is to treat it as a UVC device. | The easiest way to access the camera is to treat it as a UVC device and use a library based on [https://en.wikipedia.org/wiki/Video4Linux V4L]. Unfortunately, you have to tell your Raspberry PI to load the UVC driver each time you boot by doing the following ([https://raspberrypi.stackexchange.com/questions/10480/raspi-camera-board-and-motion Stack Exchange]): | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> |
Revision as of 06:33, 27 April 2020
Raspberry PI's (RPI) are low cost and very popular ARM devices hobby projects. BoofCV is very easy to set up and run on RPI's. Just compare my experience getting OpenCV and BoofCV up and running (article). Basically hours in a best case scenario vs minutes for BoofCV. Things change constantly so maybe it has gotten better since then. It also runs quite fast and well. Check out this these benchmark results.
As is often the case with a RPI to get everything working well and working with your hardware (i.e. a camera) there will be some assembly required. Just as an example, let's say you want to use a RPI to scan QR codes using the RPI camera you need to do the following:
Got an RPI running as a desktop machine? You should run the BoofCV demonstration applications! They mostly work. Cameras can be a bit of an issue though. RPI camera requires injecting special code that the demo application's don't have. USB cameras also work but USB is slow on a RPI. Here are the steps you need to follow
- Replace the JDK
- Download and Run Demonstrations
Replacing Default Java
The default Java installation on Raspberry PI is not optimized for running on ARM and runs much, much slower than it should. You will need to download another version and use that.
- Download JDK built for Raspberry PI
- Decompress
tar -xzf jdk.tar.gz
- Move to a location you like, e.g.
sudo mv jdk-11 /opt
- Add it to your path, e.g.
PATH=/opt/jdk-11:$PATH
Simple Example Application
Want a minimalist example? Want to scan for QR codes? Got you covered!
https://github.com/lessthanoptimal/ExampleWebcamRPI
Instructions are in the README.MD and it starts by saying to follow the instructions here... You do NOT need to build BoofCV to build that application. It will download all dependencies for you automatically.
Building BoofCV
You can build BoofCV the usual way, just make sure you use Java 11 or newer to do so and install the ARM optimized JDK! On a regular desktop it takes about 1 minute to build, but on a Raspberry PI it can take 10 minutes or so.
To build and install into your local Maven repository:
cd boofcv
./gradlew install
If you are running your Raspberry PI as a Desktop you can run the demonstration apps. Might also want to plug a camera in or setup your Raspberry PI camera as discussed below.
cd boofcv
./gradlew demonstrations
java -jar demonstrations/demonstrations.jar
Trouble Shooting:
If the `./gradlew` command fails and complains about Java 11 that means you didn't download Java 11 yet or your path is incorrect. One way to get around that is to force Gradle to use a specific JDK.
/gradlew -Dorg.gradle.java.home=/path/to/jdk-11/ demonstrations
How do I get webcams to work?
Out of the box BoofCV uses Webcam Capture due to its easy of use and in Webcam Capture's default configuration it doesn't work on Raspberry PI. The good news is that there is a simple fix that needs to be added to your source code to get it to run on Raspberry PI!
- Configuring Webcam Capture
- More WebcamCapture Raspberry PI Goodness
- Example BoofCV Project Using Webcam Capture
Performance might be an issue with Webcam Capture. There for you might want to consider some alternatives which may or may not be as user friendly.
- JRPiCam uses raspistill to capture images
- My fork of libwebcam. Added a Java wrapper and added more controls. Not supported.
If there's another library you find that can capture images and is fast you should be able to wrap it and get the images into BoofCV.
How do I use the Raspberry PI Camera?
The easiest way to access the camera is to treat it as a UVC device and use a library based on V4L. Unfortunately, you have to tell your Raspberry PI to load the UVC driver each time you boot by doing the following (Stack Exchange):
sudo modprobe bcm2835-v4l2
It should now show up in the list of cameras if you type v4l2-ctl --list-devices. This is what I see on my system. I also have a webcam plugged in to USB that's why there are two devices:
mmal service 16.1 (platform:bcm2835-v4l2): /dev/video1 Logitech Webcam C930e (usb-3f980000.usb-1.1.3.1): /dev/video0
/dev/video1 is the device associated with the Raspberry PI camera. You can now access it using Webcam Capture if you follow the instructions in the section above