Bu yazıda üstünkörü anlatılan konular;
- Rasbian üzerine OpenCv Kurulumu
- Pi kamera modülü kurulumu
- Pi kamerayı opencv ile birlikte kullanmak
Rasbian hazırlıkları
Öncelikle eğer Rasbian Jessie kurulumunu yeni yaptıysanız ilk olarak dosya sisteminizi micro-SD kartın tüm alanı içerecek şekilde genişletmeniz gerekiyor.
Aynı ekrandan Enable Camera
seçeniği ile kamerayı aktif ediyoruz ve rpi’ya reset atıyoruz.
Hafıza alanımızı genişletmemize rağmen erişebildiğimiz alan çok kısıtlı ve rasbian üzerinde kurulu gelen bazı programlar çok fazla yer kaplıyor. Wolfram-Engine’i eğer kullanmıyorsanız kaldırabilirsiniz, silindikten sonra 600 küsur mb yer açılıyor.
$ sudo apt-get purge wolfram-engine
OpenCV kurulmuna geçmeden önce OpenCV’nin ihtiyaç duyduğu
$ sudo apt-get update
$ sudo apt-get upgrade
Gerekli paketleri yüklüyoruz;
$ sudo apt-get -y install build-essential cmake cmake-qt-gui pkg-config libpng12-0 libpng12-dev\
libpng++-dev libpng3 libpnglite-dev zlib1g-dbg zlib1g zlib1g-dev pngtools libtiff5-dev libtiff5 libtiffxx0c2 libtiff-tools
Daha sonra gtk’yı yüklüyoruz. Gtk arayüz için gerekli ve rasbian bu paketi içermiyor. Eğer arayüz kullanacaksak (kamera görüntüsü gösterme dahil) bunu kurmamız gerekiyor.
$ sudo apt-get install libgtk2.0-dev
OpenCV Kurulumu
Buradan linux için olan versiyonu indiriyoruz. 2.4.13 versiyonunu kullanacağız. Zipten çıkarıyoruz ve çıkardığımız klasörün içerisinde build diye bir klasör oluşturuyoruz, açıyoruz.
$ tar -xvjpf OpenCV-2.4.13.tar.bz2
$ cd OpenCV-2.4.13/
$ mkdir build
$ cd build
Aşağıdaki komut ile makefile oluşturuyoruz. Burası önemli; burada istediğimiz özelliklere göre bir makefile düzenleniyor. Örneğin WITH_GTK=ON seçeneği ekleyerek Opencv’nin gtk özelliği ile birlikte derlenmesini istiyorum. Aksi durumda make işleminden sonra gtk özelliği eklemek istiyorsak tekrar buraya dönmemiz gerekecek. Opencv’nin make işlemi rpi üzerinde yaklaşık 5 saat sürdüğü için büyük bir zaman kaybı olacaktır.
$ cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D
WITH_V4L=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_GTK=ON -D WITH_OPENGL=ON ..
daha fazla seçeneği cmake-gui ..
komutu ile görebilirsiniz.
Compile ve install kısımlarına geldik. Önce make
ardında make install
diyerek opencv’yi yüklüyoruz. Make işlemi daha önceden de söylediğim gibi yaklaşık 5 saat sürüyor.
$ make
$ make install
Bu işlemleri tamamlandıktan sonra ufak bir kaç ayar kalıyor. Aşağıdaki komut ile opencv.conf dosyasını açıyoruz.
$ sudo nano /etc/ld.so.conf.d/opencv.conf
İçerisine şu konumu yazıyoruz /usr/local/lib
, kaydedip kapatıyoruz.
bashrc
dosyasını editliyoruz;
Dosyanın sonuna pkg-config
’in bulunduğu konumu yazıyoruz (echo $PKG_CONFIG_PATH
ile öğrenebilirsiniz);
$ PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig export PKG_CONFIG_PATH
OpenCV kurulumumuz tamamlandı. Sorunsuz bir şekilde çalıştığından emin olmak için bir kaç demo çalıştırabilirsiniz. Demo programlar Opencv içerisindeki bin klasörünün altında bulunuyor. Kurulumunuz sorunsuz tamamlandı ise hafızadan tasarruf için indirdiğiniz sıkıştırılımış dosyayı silebilrisiniz…
Raspicam kurulumu
Kamera modülünü malesef OpenCV ile hazır olarak kullanamıyoruz. Çünkü kamera modülü webcam değil gömülü bir donanım olarak görülüyor (CSI: Miami). Ayrıca malesef raspberry pi üreticileri bu kamera için herhangi bir resmi api geliştirmemiş. Kamerayı kullanmamız için sadece raspistill diye bir uygulamaları var.
Kamera modülünü OpenCV ile kullanmamız için yazılmış açık kaynak bir kütüphane var (adamlar yazmış…). Biz bu kütüphaneyi kullanacağız. Biraz daha farklı ve çağdışı bir yöntem var. Dileyen bu yönteme şuradan erişebilir. Raspistill uygulamasını farklı bir klasörde derliyor ve içerisine opencv projesi yazıyor :) . Kurulumu biraz zor çünkü bu tutorial yazıldıktan sonra raspistill’de çok fazla değişklikler olmuş. Deneyipte kuramayan olursa bana ulaşsın(Bul beni!).
Kullanacağımız kütüphane burada. Aslında bu kütüphane de üstteki yöntem referans alınarak geliştirilmiş ve hataları da var ama kullanılabilir durumda.
Şu şekilde hemen indirip build klasörü açıp makefile oluşturuyoruz;
$ git clone https://github.com/cedricve/raspicam .
$ cd raspicam
$ mkdir build
$ cd build
$ cmake ..
Son olarak make edip yüklüyoruz;
$ make
$ sudo make install
$ sudo ldconfig
Artık Pi kamerayı ve OpenCV’yi birlikte test edebiliriz, örnek kod;
#include <ctime>
#include <iostream>
#include <raspicam/raspicam_cv.h>
;
using namespace std
int main ( int argc,char **argv ) {
time_t timer_begin,timer_end;
::RaspiCam_Cv Camera;
raspicam::Mat image;
cvint nCount=100;
//set camera params
.set( CV_CAP_PROP_FORMAT, CV_8UC1 );
Camera//Open camera
<<"Opening Camera..."<<endl;
coutif (!Camera.open()) {cerr<<"Error opening the camera"<<endl;return -1;}
//Start capture
<<"Capturing "<<nCount<<" frames ...."<<endl;
cout( &timer_begin );
time for ( int i=0; i<nCount; i++ ) {
.grab();
Camera.retrieve ( image);
Cameraif ( i%5==0 ) cout<<"\r captured "<<i<<" images"<<std::flush;
}
<<"Stop camera..."<<endl;
cout.release();
Camera//show time statistics
( &timer_end ); /* get current time; same as: timer = time(NULL) */
time double secondsElapsed = difftime ( timer_end,timer_begin );
<< secondsElapsed<<" seconds for "<< nCount<<" frames : FPS = "
cout<< ( float ) ( ( float ) ( nCount ) /secondsElapsed ) <<endl;
//save image
::imwrite("raspicam_cv_image.jpg",image);
cv<<"Image saved at raspicam_cv_image.jpg"<<endl;
cout}
Bu kodu cmake ile çalıştıralım. CMakeLists.txt dosyasını içerisine şunları yazıyoruz;
cmake_minimum_required (VERSION 2.8)
project (raspicam_test)
find_package(raspicam REQUIRED)
find_package(OpenCV)
IF ( OpenCV_FOUND AND raspicam_CV_FOUND)
MESSAGE(STATUS "COMPILING OPENCV TESTS")
add_executable (simpletest_raspicam_cv simpletest_raspicam_cv.cpp)
target_link_libraries (simpletest_raspicam_cv ${raspicam_CV_LIBS})
ELSE()
MESSAGE(FATAL_ERROR "OPENCV NOT FOUND IN YOUR SYSTEM")
ENDIF()
Ve make edip çalıştırıyoruz;
$ cmake ..
$ make
$ ./simpletest_raspicam_cv
Yeni bir proje oluşturacaksanız bu dosyayı örnek alabilirsiniz.
GNU severler derneği üyeleri aşağıdakini kullanarak da çalıştırabilirler;
$ g++ simpletest_raspicam_cv.cpp -o simpletest_raspicam_cv -I/usr/local/include/ -lraspicam
-lraspicam_cv -lmmal -lmmal_core -lmmal_util -lopencv_core -lopencv_highgui
Soru, görüş ve önerileriniz için bana ulaşabilirsiniz!