New Debian Images with UVC camera support, Python and OpenCV in Wiki

Image

As you maybe noticed we play a lot recently with video processing and OpenCV + Python, so we decided to release new image which includes these packages.

Unfortunately we are on the limit with the current 2GB cards, so we had to release two images:

1. Debian with OpenCV + UVC camera support + Python without XFCE4 which still fits in 2GB cards we ship now.

2. Debian with XFCE4 + OpenCV + UVC + Python on 4GB image. We recommend you to use Class10 card as with Class4 things work many times slower.

We are now working to source new fast 4GB cards which to ship with A13-OLinuXino new image.

You can download the images from our WIKI

OpenCV + Python fun with A13-OLinuXino-WIFI

Image

OpenCV is open source huge image processing library. It was build by thousands of contributors for many years.

Now OpenCV is so powerful that you can make with the latest 2.4 revision even face recognition, gesture analysis and any kind of image filtering and enhancements.

There are tons of funny projects based on OpenCV like these videos:

Again OpenCV is not something new, it is used for years on desktop computers, but now you can have OpenCV running on small 2W embedded OLinuXino which you can add to your robot or interactive construction.

Installing OpenCV on A13-OLinuXino

1. Make sure that your A13 Linux image support cams:

# ls -l /dev/video*

You should have video0 or video1. The demo uses video0.

2. Install OpenCV

# apt-get install libopencv-dev

(If you dont want all packages, use core dist)

3. Install Python

# apt-get install python-dev

(This will install Python2.7)

4. Get OpenCV support for python

# apt-get install python-opencv

Now you are ready to develop with OpenCV on A13-OLinuXino!

Our first “Hello world” example will be simple, we will run web server, then with OpenCV will take pictures every 5 seconds and once per minute will store to the SD-card.

This way you can make time elapsed videos like this one: http://www.youtube.com/watch?v=RU3DBvmaR3g

Here is the code with comments:

from cv2 import * #import opencv module
import sys        #import system module

def main():
    cam = VideoCapture(0)     #tell opencv where to take pictures from in this case from /dev/video0
    index = 1     #this is the picture index
    while True: #search the SD-card for previous pictures to calc last picture index (in case of power failure for instance which interrupted the picture save process)
        test = imread("img" + str(index) + ".jpg")
        if test == None:
            break
        else:
            index += 1

    while True:
        for i in range(12): # wait 12 * 5 seconds = 1 minute to save picture
            s, img = cam.read() # capture the picture, s is flag which =1 if capture is successful
            if s:
                imwrite("capture.jpg", img)
            else:
                sys.exit(-1)
            waitKey(5000) # just wait 5 seconds and do nothing

        imwrite("img" + str(index) + ".jpg", img) # save the picture to SD-card and increase picture index
        print("img" + str(index) + ".jpg")
        index += 1

    return 0

if __name__ == '__main__':
    main()

now let’s setup the web server so we can see the pictures with web interface:

5. Get Apache (or whatever else you want)

# apt-get install apache2

the code on the web page is simple:

<!DOCTYPE html>
<html>
<body>
<h2>CAM FEED</h2>
<img border="0" src="images/capture.jpg" alt="Capture go here...">
</body>
</html>

this code is already in the tar.gz file at GitHub

6. Go to www-dir

# cd /var/www/
# mkdir CAM
# cd CAM
# tar zxf demo.tar.gz .

7. Go to images folder and start the python module

# python images/cam2.py &

8. Open browser and enter the address where your A13 is connected:

http://192.168.0.xx/CAM/

9. You should see images every 5 sec. Additionally every 1 minute a image is saved on the SD-card.

Next Newer Entries