Raspberry Pi-3 OpenCV C++//Python Kurulumu

Görüntü işleme uygulamalarını, masaüstü veya dizüstü bilgisayarlar yardımı ile gerçekleştirebiliyoruz. Peki görüntü işleme uygulamalarını taşınabilir hale getirmek için ne yapabiliriz? Bu noktada aslında mini bir bilgisayar olan Raspberry Pi kullanabiliriz. İnternette Raspberry Pi hakkında birçok bilgi mevcut. Aynı şeyleri tekrarlamakta bir fayda görmüyorum. O yüzden direkt kuruluma başlıyorum. Şimdi OpenCV 3.2'nin Raspberry Pi3 için kurulumunu gerçekleştireceğiz. Tabiki eski sürüm Raspberry Pi ler içinde kurulumu gerçekleştirmiş olacaktır.

Hangi Raspberry Pi İşletimi? Rasbian Jessie
Hangi Programlama Dilleri için? Python ve C++ 

Daha Önceki OpenCV Kurulumlarını Kaldırma

sudo apt-get remove libopencv*
sudo apt-get autoremove
Kurulum için Ön Koşullar:
Sistemin güncellenmesi:
sudo apt-get update
sudo apt-get upgrade
sudo rpi-update
sudo reboot
Eğer daha önce güncelleme yapmadıysanız bu işlemler biraz zaman alabilir. Ama sonuçta güncel bir sistem güvenlik ve kararsızlık açıklıklarından arınmış demektir.
Geliştirici Araçlarının Kurulması:
sudo apt-get install build-essential cmake cmake-curses-gui pkg-config
Kütüphanelerin Kurulması: (Kütüphane içeriklerini kendi ihtiyaçlarınıza göre düzenleyebilirsiniz.)
sudo apt-get install \
  libjpeg-dev \
  libtiff5-dev \
  libjasper-dev \
  libpng12-dev \
  libavcodec-dev \
  libavformat-dev \
  libswscale-dev \
  libeigen3-dev \
  libxvidcore-dev \
  libx264-dev \
  libgtk2.0-dev
Ek Kütüphaneler:
sudo apt-get install libatlas-base-dev gfortran
Python Kurulumu:
Raspbian Jessie üzerinde Python2 ve Python3 versiyonları zaten kurulu durumda biz OpenCV 3.2.0 ı her iki Python için kurmuş olacağız.
Python-dev ve numpy Kurulumu:
sudo apt-get install python2.7-dev python2-numpy
sudo apt-get install python3-dev python3-numpy

Şimdi sırada OpenCV'nin indirilmesi ve yüklenilmesi işleminde:
OpenCV İndirme İşlemi:
sudo mount /dev/your-dev-name /home
mkdir /home
cd  /home
wget https://github.com/opencv/opencv/archive/3.2.0.zip -O opencv_source.zip
wget https://github.com/opencv/opencv_contrib/archive/3.2.0.zip -O opencv_contrib.zip
Son iki satırdaki /3.2.0 ifadesi bizim OpenCV sürümümüzü gösteriyor. Eğer siz güncellemeyi yaparken yeni bir versiyon yayınlanmış ise sadece rakamları değiştirmeniz yeterli olacaktır.
Unzip İşlemi:
cd /home
unzip opencv_source.zip
unzip opencv_contrib.zip
OpenCV Kurulum İşlemi:
OpenCV 3.2 yi Python2, Python3 ve C++ için kurarken CMake(text based user interface) kullanmamız gerekmektedir.
Çalışılacak Konumun Oluşturulması:
cd /home
mkdir build
cd build
OpenCV'nin İhtiyaçlara Göre Konfigürasyonu:
Bu ayarlamaları kendi ihtiyaçlarınıza göre şekilledirebilirsiniz. Ben Debug ve Test versiyonlarını kapattım. Çünkü Raspberry Pi üzerinde ihtiyaç duymadım. Ancak bilgisayar kurulumu yaparken kurmadığım ama performansa kattı sağladığı için NEON optimizasyonunu açık halde konfigurasyon yaptım.
cmake -D CMAKE_BUILD_TYPE=RELEASE \
 -D CMAKE_INSTALL_PREFIX=/usr/local \
 -D BUILD_WITH_DEBUG_INFO=OFF \
 -D BUILD_DOCS=OFF \
 -D BUILD_EXAMPLES=OFF \
 -D BUILD_TESTS=OFF \
 -D BUILD_opencv_ts=OFF \
 -D BUILD_PERF_TESTS=OFF \
 -D INSTALL_PYTHON_EXAMPLES=ON \
 -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-3.2.0/modules \
 -D ENABLE_NEON=ON \
 -D WITH_LIBV4L=ON \
        ../
Cmake konfigurasyonu birkaç dakika sonra bitecektir ve şöyle bir uyarı görmeniz lazım:
.....
-- Configuring done
-- Generating done
-- Build files have been written to: /home/pi/usbmem/opencv/opencv-3.2.0/build
Eğer "Generating done" ifadesini görmüyorsanız. Birşeyler ters gitmiş demektir. Hata mesajını kontrol edip çözebilirsiniz. Eğer yine halledemezseniz bana mesaj atmaktan çekinmeyin.

Cmake TextGUI Gözden Geçirme:
Eğer hata mesajı aldıysanız, aşağıdaki listeyi kontrol edin ve gerekli düzenlemeleri yapın, hata mesajı almadıysanız bu adımı atlayabilirsiniz
$ ccmake ../
                                       Page  1 of ..
 ANT_EXECUTABLE                   ANT_EXECUTABLE-NOTFOUND
 BUILD_CUDA_STUBS                 OFF
 BUILD_DOCS                       OFF
 BUILD_EXAMPLES                   OFF
 BUILD_JASPER                     ON
 BUILD_JPEG                       ON
 BUILD_LIBPROTOBUF_FROM_SOURCES   OFF
 BUILD_OPENEXR                    OFF
 ... more options here ....

Press [enter] to edit option
Press [c] to configure
Press [h] for help           Press [q] to quit without generating
Press [t] to toggle advanced mode (Currently Off)
OpenCV'yi Çalıştırma:
make -j4
Compile işlemi biraz zaman alabilir. Bu arada kahvenizi alıp kitap okuyabilirsiniz.. İşlem bittikten sonra:
[100%] Built target ...
Şimdi Kelimenin Tam Anlamı ile Yükleme İşlemi Yapıyoruz:
sudo make install
sudo ldconfig
Tebrikler Raspberry Pi görüntü işleme için hazır.
/usr/local/lib/libcv*
/usr/local/lib/python2.7/dist-packages/cv*
/usr/local/lib/python3.4/dist-packages/cv*
/usr/local/include/opencv2
/usr/local/bin/opencv_*
/usr/local/share/OpenCV/
Yüklemeyi Test
Python2 ve Python3 için:
Terminal üzerinde aşağıdaki komutlar ile aynı çıktıyı almanız lazım
$ python3
Python 3.4.2 (default, Oct 19 2014, 13:31:11)
[GCC 4.9.1] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
>>> print (cv2.__version__)
3.2.0
>>>
C++ kurulumunu Test etmek için:
Yeni bir boş text dosyası oluşturun. Adını resizing.cpp yapın.

#include "iostream"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/core/core.hpp"

using namespace std;
using namespace cv;

// this function represents the size of the image for comparing 
void printsize(Mat &,Mat &);  

int main()
{
 
 // firstly read and show an image
 Mat image,resized;
 image = imread(".../mirror.jpg",1); // address of the image in you computer
 
 namedWindow("Display image",1);
 imshow("Display image",image);
 
 // resizing the input image
 resize(image, resized, Size(), 0.5, 0.5, 1); // third parameter represents the output size
 
 namedWindow("Display resized image", 1);
 imshow("Display resized image", resized);

 // to check the resizing
 printsize(image,resized);

 waitKey(0);
    return 0;
}

void printsize(Mat &image, Mat &resized) {
 int r1, c1, r2, c2;
 r1 = image.rows;
 c1 = image.cols;
 r2 = resized.rows;
 c2 = resized.cols;
 cout << r1 << " " << c1 << endl;
 cout << r2 << " " << c2 << endl;
}
Yukarıdaki kod bloğunu boş text dosyasına kopyalayın ve terminalde:
g++ $(pkg-config --libs --cflags opencv) -o resizing resizing.cpp
Komutu ile çalıştırın. Text dosyanızın olduğu klasörde yeni bir dosyanın oluşturulduğunu göreceksiniz. Çift tıklayıp çalıştır dediğiniz zaman resmin resize edildiğini göreceksiniz.

23 yorum: