Showing posts with label Tutorial. Show all posts
Showing posts with label Tutorial. Show all posts

Saturday, December 13, 2014

Access Raspberry Pi via SSH, VNC and netatalk from your Mac

Originally I planned to use a Mac for my work with opencv on the Raspberry Pi. I failed to set up the Mac properly so I switched to my Ubuntu Laptop which was laying around. And it was so much easier. Mostly because of the various tutorials available. Recently I hadn't any time to play around with opencv but maybe I find some time now and then. And since where I live now, I don't have my Linux PC with me, I have to do it with my MacBook Air.

The first thing if you want to work with a Raspberry Pi and don't have a Monitor available, you want to link it somehow to your PC/Mac and do the work from there. I explained how I did it with my Ubuntu Laptop here and now I want the same functionality with my MacBook.

So first I want to find out the IP address of the Raspberry Pi. I looked in the AppStore and found a free app called "IP Scanner" (Link), which shows all the IP addresses of all the devices in your network.

Connecting over SSH

To connect to your RPi open the terminal on your Mac and type this with the IP adress of your RPi:
 ssh pi@192.168.0.101  
Type in your password (default: raspberry).

Finally in your terminal you should see:
Now every command you type here, the RPi executes - not your computer.

Connecting over VNC

Sometimes this is not enough and you want to see the GUI of the RPi. You can also do this over the network with a VNC server. The part on the RPi is the same and I just copy it from my former tutorial.

On your RPi:
First connect to your RPi over SSH and install tightVNC.
 sudo apt-get update  
 sudo apt-get upgrade  
 sudo apt-get install tightvncserver  
To start the VNC Server use this command:
 vncserver :1 -geometry 1024x600 -depth 16 -pixelformat rgb565  
You must specify a password (8 characters) that you need to connect later. Answer no to the view only question.

On your Mac:
On the Mac you don't need to install anything. Sure, you could install any VNC Viewer you like, but if my computer already comes with the tools, I like to use them.
In Finder press
 cmd+K  
A new window opens where you can type in the IP of your RPi (don't forget to edit the command!):
 vnc://192.168.0.101:5901  

The 01 at the end it the VNC server on the RPi, to start the server on the Pi we chose 1 as well. After that type in your password and hit connect.

After that 'Screen Sharing' should open and you see this:

This is very comfortable like this and you can even save your password and your IP.

File transfers with Netatalk

To transfer files I use Netatalk which is already installed on my Pi. I just paste the command from my older tutorial. Here we have to do it again only on the RPi.

On your RPi install netatalk:
 sudo apt-get install netatalk  
After that give it some time to fully boot and then you should see the RPi in your finder under shared:

Here you click on 'Connect As ...'. In the window that will open type in 'pi' as Name and your password from natatalk (default raspberry).


After that I have the full functionality as I had in Linux.

Program versions:
Mac OSX 10.10.1
Raspian wheezy

Monday, February 3, 2014

Tutorial: Build imageclipper on Mac OS X 10.9

In object detection using cascade classification you will get better results the more images you have to train your classifiers. But for the training it is necessary to prepare images that contain examples of the object you want to detect. More clearly, you have to crop loads of images that only the desired object is visible without much background. But cropping hundreds or thousands of images may be a lengthy process. For exactly this purpose Naotoshi Seo created a small, fast, multi platform software, named imageclipper.


Although the application still works, there are some problems we have to face:

--> He only provides a executable file for Windows. Unix users have to compile it themselves.

I searched a lot how to do this and found someone who uploaded a compiled version for Mac here - just to face another, for me already well known problem.

--> The software is outdated and it was compiled with an older version of OpenCV (here: version 2.1). Since then the links to the libraries and headers have changed. When trying to start imageclipper with a new Version of OpenCV you will get the following error:

dyld: Library not loaded: libopencv_core.2.1.dylib

So you will have to compile it for yourself if you want to use the speed advantage of imageclipper.

Preparation

Download the imageclipper source code

Get it from here: https://github.com/noplay/imageclipper
It is a fork of the original imageclipper with some Mac specific updates. Unpack it and navigate to the folder /src inside. There is all what you need.

Install boost

To compile the imageclipper source code you need the boost C++ source libraries. You can install it easily using MacPorts - just like you installed cmake. Just open the Terminal and enter this command:
 sudo port install boost   
After entering your password boost will be downloaded and installed.

Configure Xcode

1. Create a new project - a C++ Command Line Tool - and name it "imageclipper".

2. Copy all the files of the /src folder of the imageclipper fork in the folder of your project, that you just created.

3. Copy the content of the "imageclipper.cpp" in your "main.cpp".

4. Now we have to include the libraries:

4.1 Include the OpenCV libraries like I explained here in point 5 of "Configure Xcode": Tutorial: Configure Xcode for OpenCV programming

4.2 In the same manner add the boost libraries. They are located in /opt/local/lib. Just add all the .dylib-files named something with "libboost".

5. Configure search paths:

5.1 Add following Header Search Paths:
/usr/local/include
/usr/local/include/opencv
/usr/local/lib
/opt/local/include
/opt/local/include/boost

and the path to your project where you copied the imageclipper source files inside, for example:
/users/christian/documents/programming/imageclipper

It should look like this:

5.2 Add following Library Search Paths:
/usr/local/lib
/opt/local/lib

6. Compile imageclipper.

That's it. You can now compile imageclipper. You find the executable file in
/Users/USER-NAME/Library/Developer/Xcode/DerivedData/PROJECT-NAME/Build/Products

I have already done this. Has long as you followed my instructions of installing OpenCV and your libraries are located in the same path, you can just download my executable file and use it.

Download imageclipper executable for Mac

In another post, I explain how to use imageclipper.

Program versions:
OS: Mac OS X 10.9.1
Xcode: 5.0.2
OpenCV: 2.4.8.0
MacPorts: 2.2.1
boost: 1.55.0

Saturday, February 1, 2014

Tutorial: First OpenCV program

After we installed OpenCV and configured Xcode it's time to create an easy program.

For the first program we want to refer to a OpenCV tutorial where we change the contrast and brightness of an image. But as I mentioned in my first post, this tutorial is outdated and was compiled with a older version of OpenCV. So we have to do some small changes to the code.

Edit the code

First edit the "main.cpp" file. Delete everything and copy the following code inside. You can also download it here.

1:  #include <opencv/cv.h>  
2:  #include <opencv/highgui.h>  
3:  #include <iostream>  
4:    
5:  using namespace cv;  
6:    
7:  double alpha; /**< Simple contrast control */  
8:  int beta; /**< Simple brightness control */  
9:    
10:  int main( int argc, char** argv )  
11:  {  
12:    // Read image given by user  
13:    // Change the path here to your image, look at form below  
14:    Mat image = imread( "/users/name/documents/programming/imgs/test1.jpg" );  
15:    Mat new_image = Mat::zeros( image.size(), image.type() );  
16:      
17:    // Initialize values  
18:    std::cout<<" Basic Linear Transforms "<<std::endl;  
19:    std::cout<<"-------------------------"<<std::endl;  
20:    std::cout<<"* Enter the alpha value [1.0-3.0]: ";std::cin>>alpha;  
21:    std::cout<<"* Enter the beta value [0-100]: "; std::cin>>beta;  
22:      
23:    // Do the operation new_image(i,j) = alpha*image(i,j) + beta  
24:    for( int y = 0; y < image.rows; y++ )  
25:    { for( int x = 0; x < image.cols; x++ )  
26:    { for( int c = 0; c < 3; c++ )  
27:    {  
28:      new_image.at<Vec3b>(y,x)[c] =  
29:      saturate_cast<uchar>( alpha*( image.at<Vec3b>(y,x)[c] ) + beta );  
30:    }  
31:    }  
32:    }  
33:      
34:    // Create Windows  
35:    namedWindow("Original Image", 1);  
36:    namedWindow("New Image", 1);  
37:      
38:    // Show stuff  
39:    imshow("Original Image", image);  
40:    imshow("New Image", new_image);  
41:      
42:    // Wait until user press some key  
43:    waitKey();  
44:    return 0;  
45:  }  

Note that I edited the include files in line 1 and 2. This is because of a newer version of OpenCV. If you navigate to /usr/local/include you will see that there are two folders now - opencv and opencv2. opencv contains the old header files and opencv2 the newer ones. So we just add the folder name to the path. Newer tutorials from the OpenCV website always include already the path and they use the opencv2 headers.

Run the program

Now it's time to finally compile and run the program. For this go to Product --> Run or just hit ⌘R

Down in the right corner you can see the console output where you can choose some values of the image manipulation.


Type in some numbers and hit enter. Here is the result for the values I chose.


Program versions:
OS: Mac OS X 10.9.1
Xcode: 5.0.2
OpenCV: 2.4.8.0

Tutorial: Configure Xcode for OpenCV programming

In this post I want to show you how to configure Xcode to work with OpenCV if you installed it like I explained here.

Start Xcode

1. When you open Xcode, select "Create a new Xcode project".

2. Under OS X Applications select "Command Line Tool".

3. Give your project a name and select as Type "C++".

4. Select a path where you want to save your project.

Configure Xcode

Before actually writing some code, we have to prepare Xcode so that it can use OpenCV. For this we have to include the header and library files.

As I explained in the install tutorial, OpenCV was installed to /usr/local. The header files are in /usr/local/include and the libraries are located in /usr/local/lib. These paths we have to add to the "Search Paths" in Xcode. To go there, you have to:

1. Select your project file in the project navigator on the left.

2. Now you can access the "Build Settings". In the search box type in "Search Paths" or simply scroll down until you see them.

3. Double click on "Header Search Paths" and add two lines:
    /usr/local/include
    /usr/local/lib

4. Double click on "Library Search Paths" and add this line:
    /usr/local/lib

5. Now we just have to add the *.dylib files from OpenCV. To do this:

  5.1 right click on your project file.

  5.2 Select "Add files to "projectname" ...".

  5.3 Don't select a path. Just hit / to open a line where you can specify a path. Enter /usr/local/lib and hit enter.

  5.4 Select all the *.dylib files you want to add. Just add all of them for now. If you want to you can create a folder and move all the files in there.

Finally it should look like in this screeshot below. With this configuration you are ready to write programs with OpenCV.


Remark:
In case you didn't build opencv yourself and installed it instead via macports, the procedure of configuring Xcode is the same. Just modify the paths. Instead of
/usr/local/lib and /usr/local/include
Macports installs the libraries in
/opt/local/lib and /opt/local/include

Program versions:
OS: Mac OS X 10.9.1
Xcode: 5.0.2
OpenCV: 2.4.8.0

Friday, January 31, 2014

Tutorial: Installing OpenCV on a Mac (OS X 10.9.1 Mavericks)

Since I found it quite hard to get OpenCV up and running and most of the tutorials I found were outdated, I will update them to work on the latest releases of OpenCV and Mac OS X. In every post I will also tell you which versions I used because I always thought this was a missing information. Here I used:

OS: Mac OS X 10.9.1
Xcode: 5.0.2
OpenCV: 2.4.8.0
MacPorts: 2.2.1
cmake: 2.8.12_3

OpenCV is available from various sources. You can get it via package managers like Homebrew or MacPorts or you can build it yourself from source. It's much easier if you get it from any of the mentioned package managers but in the beginning I got some errors with that when I tried to compile tutorials. Manly because it is installed in a different location as if you build it yourself. As the OpenCV tutorials always refer to the standard path, I would recommend for beginners to build it from source so you don't have to change the code of the examples and tutorials. So, let's go.

Preparation

Install Xcode

First of all you need to have Xcode installed. Just get it from the Mac App Store. The actual Version is 5.0.2. In other tutorials you will always find that you need to install the "Command Line Tools" for Xcode. Well, maybe you needed it. But Xcode 5 comes with these tools already installed. So nothing to do here.
Before you continue, launch Xcode. When you start it the first time you have to agree to the license agreement. If you don't do this, the following will not work.

Download OpenCV

Download the OpenCV Libraries. For Mac you want to use the Unix version. You will get a .zip file - unzip it.

Get MacPorts

Just download the package from their site MacPorts-2.2.1-10.9-Mavericks
... and install it. For help, refer to the MacPorts Guide.

You can check if it was installed correctly by typing
 port version  
in the terminal. The terminal app is in the Utilities folder in your applications.

Get cmake

For this you want to use the previously installed MacPorts. So launch your terminal app again. Then type this in:
 sudo port install cmake   
This may take a while until everything is downloaded and installed. You can check your installation by typing this in your terminal:
 port installed   
This will show all your installed ports. You should see cmake there.

Build OpenCV

We finally have made all the necessary preparations and are ready to build OpenCV.

1.
Copy the unpacked folder of OpenCV to your desktop und rename it to "opencv".

2.
Open your terminal and type the following in:
 cd Desktop/opencv  
 mkdir build  
 cd build  
With these commands you go to your OpenCV folder on the desktop, create a new folder inside named "build" and enter this folder.

3.
Now we can build and install OpenCV:
 cmake -G "Unix Makefiles" ..  
 make -j8  
 sudo make install  

That's it. You just built OpenCV from source and installed it to /usr/local.

In another post I will guide you through the process of creating your first OpenCV project in Xcode.

Source: Tilo Mitra