Gömülü Sistemler Raspberry Pi Yazılım

Raspberry Pi 3-OpenCV Kurulumu GÜNCEL-AYRINTILI

Önceki dersimizde Raspberry Pi ‘yi kullanıma ve uzaktan programlamaya hazır hale getirşmiştik. Şimdi ise görüntü işleme uygulamalarını yapabilmemiz için Raspberry Pi içine Opencv kütüphanelerini kurmayı göstereceğim.

Raspberry Pi içine OpenCV kurmanız için öncelikle python yazılım sistemine ihtiyacımız var. Raspberry Pi içinde Python ve Python3 zaten kurulu halde geliyor, yine de kontrol ettirmek ve hangi sürümünü kullandığınızı bilmek istiyorsanız şu adımları takip etmeniz gerekir.

Raspberry Pi komut satırını çalıştırınız. Ve komut satırına bu komutları yazıp enter’layın.

Yukarıdaki komutlarda python3 için 3.7.3, pyhon için ise 2.7.16 versiyonlarının yüklü olduğunu öğreniyoruz. Aynı zamanda pip versiyonun da 18.1 olduğunu öğreniyoruz.

NOT: Eğer daha önceden opencv kütüphaneleri bilgisayarınızda yüklü olarak geldiyse, bu komutlar ile silebilirsiniz.

sudo apt-get remove libopencv*
sudo apt-get autoremove

Ben ilk defa kuracağım için yazmaya gerek duymuyorum .

Kurulum Aşaması

İlk olarak sistemimizi güncelleyelim.Terminali açalım ve aşağıda ki komutlar yardımıyla sistemimizi güncelleyelim ve tekrar boot edelim. Kurulum ortalama 3 saat sürmektedir, ve en az 2 GB lık boş hafıza alanınız bulunmalıdır.

sudo apt-get update
sudo apt-get upgrade
sudo rpi-update
sudo reboot

Kurulum aşamasında bir takım kütüphaneler için sorular soracaktır E diyerek devam edelim

NOT: Komutlar Ctrl-C Ctrl-V olarak kullananlar. Linux işletim sisteminde bunu yapabilmek için, Ctrl+Shift+V ye basmalılar.

Bu yüklemeler bittikten sonra böyle bir ekranla karşılaşıyoruz. Yüklemeler esnasında bağlantıda kopuklar meydana gelebilir. VNC ile tekrar bağlanmayı deneyince sorun kalmayacaktır.

Ardından gerekli geliştirici ayarlarını yüklüyoruz.

sudo apt-get install build-essential cmake cmake-curses-gui pkg-config

Bu adımda ise geliştirme yaparken gerekli kütüphaneleri yükleyeceğiz. (Eğer toplu halde yükleme işlemi yaparken hata verir ise , teker teker yüklemeniz gerekmekte)

libtiff5-dev \
  libjasper-dev \
  libpng12-dev \
  libavcodec-dev \
  libavformat-dev \
  libswscale-dev \
  libeigen3-dev \
  libxvidcore-dev \
  libx264-dev \

Mesela burada kurulum esnasında bu paketin yüklenemediğini söyledi. Hemen alt satırda “sudo app-get install libgt2.0-dev ” komutu ile özel olarak yüklediğimde sorun ortadan kalktı

Raspberry Pi içerisinde hali hazırda Python2.7 ve Python3 yüklü halde geliyor demiştim. Şimdi OpenCv’yi her iki python versiyonları için yükleme işlemine geçelim.

sudo apt-get install python2.7-dev python2-numpy
sudo apt-get install python3-dev python3-numpy

Artık OpenCv depolarına giderek indirme işlemini başlatabiliriz. Bunun için bir klasör oluşturalım.


mkdir /home/pi/opencv

Klasörümüzün içerisine girelim.


cd  /home/pi/opencv

Ve indirme işlemini başlatalım.

opencv en güncel sürümünü öğrenmek için bu internet sitesinden bakabilirsiniz. https://github.com/opencv/opencv bu yazı yazılarken şuan için en güncel sürümü 4.5.2

Eğer siz indirirken yeni versiyon geldiyse sadece komuttaki rakamları değiştirmeniz yeterli

wget https://github.com/opencv/opencv/archive/4.5.2.zip -O opencv_source.zip
wget https://github.com/opencv/opencv_contrib/archive/4.5.2.zip -O opencv_contrib.zip

zip dosyalarını çıkaralım

	
unzip opencv_source.zip
unzip opencv_contrib.zip

Şimdi ise cmake kurulumu yapacağız.. Burada build adında bir klasör oluşturup içine giriyoruz.

cd /home/pi/opencv/opencv-4.5.2
mkdir build
cd build

Cmake ayarlarımızı default ayarında bırakıyoruz. Direkt olarak kopyala yapıştır yaparak Enter tuşuna basabilirsiniz.”NEON” optimizasyonunu aktif ederek OpenCv performansını birazcıkta olsa arttırmış olduk.


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_C_EXAMPLES=ON \
	-D INSTALL_PYTHON_EXAMPLES=ON \
	-D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-4.5.2/modules \
	-D ENABLE_NEON=ON \
	-D WITH_LIBV4L=ON \
        ../

Görnek istediğimiz yazı yukarıda arkadaşlar.

--Configuring done
-- Generating done
-- Build files have been written to: /home/pi/opencv/opencv-4.5.2/build

Yeni hatalar ile karşılaşırsanız mutlaka klasörleme ve isimlere dikkat edin. Ben öncelikle cmake’in 3.2.0 versiyonunu indirmişim ama hatamı sonra farkettim ve üstüne tekrar build yaptım.

Bu adımımız yaklaşık olarak 2saat 20dk kadar sürmekte. Bu arada kitap neyin bişey okuyabilirsiniz 🙂

make -j4

Eğer yukarıda ki komuttan sonra %99 gibi rakamlarda takılma donma yaşarsanız aynı dizin içerisine girerek


make -j2

Komutuyla tekrar çalıştırabilirsiniz.Kaldığı yerden devam edecektir.Baştan başlamayacaktır. “make -j4” komutu ile donma yaşabilirsiniz çünkü aynı anda 4 çekirdeği de aktif olarak çalıştıracaktır.Bu adımdan sonra . Hala donma yaşarsanız, make -j yazmayı deneyin, tek çekirdek ile devam edecektir ama süre tabi ki artacaktır.

[100%] Built target ...

ifadesini gördüyseniz neredeyse bitmiş demektir.Aşağıda ki 2 komutumuzu da girerek işlemi sonlandırıyoruz.

sudo make install
sudo ldconfig

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
>>>

KARŞILAŞABİLECEK HATALAR

Eğer ki bu noktada ‘CV2 hatası alıyorsanız. “NO MODULE NAMED “CV2” ‘

pip3 install opencv-python

Diyerek pip dosyamızı otomatik olarak güncelleyebilirsiniz.

Ardından yine hata alırsanız, bu kütüphaneleri tek tek yükleyin hata giderilecektir

pip3 install opencv-python 
sudo apt-get install libcblas-dev
sudo apt-get install libhdf5-dev
sudo apt-get install libhdf5-serial-dev
sudo apt-get install libatlas-base-dev
sudo apt-get install libjasper-dev 
sudo apt-get install libqtgui4 
sudo apt-get install libqt4-test

Ve mutlu son

Artık görüntü işleme projelerinize başlayabilirsiniz.

Eğer OpenCv doğru bir şekilde yüklendiyse yukarıdaki kod çalıştıktan sonra bize 4.5.1 çıktısı verir  ve yükleme işlemimiz doğru şekilde yapılmış demektir

Bu işlemlerden sonra eğer Raspberry Pi Kamera modülümüz var ve onu kullanmak istiyor isek  aşağıdaki işlemleri yapabiliriz. Eğer Raspberry Pi Kamera modülünüzü ilk defa kullanıyorsanız bir takım kurulumlar yapmanız gerekebilir. gerekli işlemlere https://akademi.robolinkmarket.com/raspberry-pi-kamera-modulu-kurulumu-ve-cekim-modlari/ bu linkten ulaşabilirsiniz

Raspberry Pi bazı usb kameraları da tanıyabilmektedir, ayrıca cep telefonlarını da “Iriun” gibi programlarla veya “ip webcam” programlarıyla Raspberry Pi ile kullanabilirsiniz.

Hemen Basit bir Uygulama ile Test Edelim

Programda Raspberry Pi’ye bağlı kameramızdan görüntü alacağız ve istediğimiz anda klavyeden ‘s’ tuşuna basarak fotoğraf çekip kaydedebileceğiz. Eğer elinizde bir USB webcam veya Raspberry Pi kameranız yoksa cep telefonunuzu bir IP webcam programı yükleyerek kamera olarak kullanabilirsiniz. Örnek program budur. Bu programı kullanarak telefonunuzu  wifi ağınız üzerinden Raspberry Pi’ye bağlayabilirsiniz. Bu durumda yazmanız gereken kod, (IP Webcam programı için) kodlarımızın içerisinde yorum satırı olarak bulunmaktadır.

Benim gibi Pi Camera modülu olanlar ise bu şekilde Cameralarını Raspberry Pi ye entegre edebilirler

Program Kodları

#OpenCv kütüphanesini programımıza dahil ediyoruz.
import cv2
sayac=0
 
#görüntü alacağımız kamerayı tanımlıyoruz.
kamera=cv2.VideoCapture(0)
 
#Eğer kameranız IP kamera ise (veya cep telefonu) video adresini tanımlıyoruz.
#Aşağıdaki link benim ağım için geçerlidir.
#Siz telefonun kendi ağınızda alacağı adresi yazmalısınız.
#Bu satırı aktif ederseniz üstteki "kamera=cv2.VideoCapture(0)" satırını yorum haline getirebilirsiniz.
#kamera=cv2.VideoCapture("192.168.0.13:8080/video")
 
#Kameradan gelecek görüntünün çözünürlüğü değeri 640x480 olarak ayarlanıyor.
kamera.set(3,640)
kamera.set(4,480)
 
#Kamera açıldıysa aşağıdaki blok sürekli çalışacak.
while kamera.isOpened():
 
    #kamera'dan 1 kare okunuyor.
    ret,kare=kamera.read()
 
    #eğer kamera'dan veri doğru bir şekilde okunduysa
    if ret== True:
 
        #Burada kareyi 180 derece döndürdüm çünkü benim kameram ters duruyor.
        kare=cv2.flip(kare,0)
 
        #Kameradan alınan görüntü "resim" isimli pencerede gösteriliyor.
        cv2.imshow("resim",kare)
 
        #1milisaniye boyunca Klavyeden bir tuşa basılması bekleniyor
        basilanTus=cv2.waitKey(1)&0xFF
 
        #Eğer basılan tuş 's' ise görüntü jpg formatında ismi numaralandırılarak kaydediliyor.
        if basilanTus==ord('s'):
            cv2.imwrite("resim"+str(sayac)+".jpg",kare)
            sayac+=1
 
        #Eğer basılan tuş x ise programdan çıkılıyor.
        if basilanTus==ord('x'):
            break
 
#Pencereleri kapat.
cv2.destroyAllWindows();
 
#Programı durdur.
exit()

Kodu çalıştırdığınızda aşağıdaki gibi bir ekranla karşılaşmanız gerekmektedir. Programı durdurmak için klavyeden ‘x’ tuşuna basmanız yeterlidir.

Farklı projelerde görüşmek üzere kolay gelsin

Yararlandığım Kaynaklar:


https://github.com/opencv/opencv
https://tr.wikibooks.org/wiki/Linux_%C4%B0%C5%9Fletim_Sistemi/Linux_Komutlar%C4%B1/Dosya_ve_klas%C3%B6r_komutlar%C4%B1
http://gomuluyazilim.com/bilgisayarli-gorme-computer-vision-raspberry-pi-opencv-kurulumu/
https://www.youtube.com/watch?v=dsCZHNzsBNA
https://mikrodunya.wordpress.com/2021/01/17/raspberry-pi-ile-goruntu-islemeye-giris-2-opencv-ile-basit-bir-uygulama/
https://justpaste.it/6tltd

Hatalarla karşılaşanlar özellikle aşağıda belirttiğim linkteki kütüphaneleri yüklerlerse hataları büyük oranda geçecektir.

https://stackoverflow.com/questions/53347759/importerror-libcblas-so-3-cannot-open-shared-object-file-no-such-file-or-dire

Similar Posts

4 thoughts on “Raspberry Pi 3-OpenCV Kurulumu GÜNCEL-AYRINTILI
  1. Her şeyi yapmama rağmen hata alıyorum şu şekilde ;

    pi@pi:~ $ python3
    Python 3.7.3 (default, Jan 22 2021, 20:04:44)
    [GCC 8.3.0] on linux
    Type “help”, “copyright”, “credits” or “license” for more information.
    >>> import cv2
    RuntimeError: module compiled against API version 0xe but this version of numpy is 0xd
    Traceback (most recent call last):
    File “”, line 1, in
    File “/home/pi/.local/lib/python3.7/site-packages/cv2/__init__.py”, line 5, in
    from .cv2 import *
    ImportError: numpy.core.multiarray failed to import

    Yardımcı olabilir misiniz? Googleladım fakat çözemedim.

    1. Numpy sürümüyle ilgili bir hata alıyorsunuz. Numpy sürümünü kurulumdan önce güncellemeyi deneyin.
      Şu komutu çalıştırmayı deneyebilirsiniz.
      pip install numpy –upgrade

  2. [ 51%] Building CXX object modules/highgui/CMakeFiles/opencv_highgui.dir/src/backend.cpp.o
    /usr/bin/ld: CMakeFiles/opencv_calib3d.dir/src/usac/ransac_solvers.cpp.o: in function `cv::usac::Ransac::run(cv::Ptr&)::{lambda(cv::Range const&)#3}::operator()(cv::Range const&) const::{lambda(cv::usac::Score const&, cv::Mat const&, bool)#1}::operator()(cv::usac::Score const, cv::Mat const, bool) const’:
    ransac_solvers.cpp:(.text._ZZZN2cv4usac6Ransac3runERNS_3PtrINS0_12RansacOutputEEEENKUlRKNS_5RangeEE1_clES8_ENKUlRKNS0_5ScoreERKNS_3MatEbE_clESC_SF_b[_ZZZN2cv4usac6Ransac3runERNS_3PtrINS0_12RansacOutputEEEENKUlRKNS_5RangeEE1_clES8_ENKUlRKNS0_5ScoreERKNS_3MatEbE_clESC_SF_b]+0x44): undefined reference to `__atomic_load_8′
    /usr/bin/ld: ransac_solvers.cpp:(.text._ZZZN2cv4usac6Ransac3runERNS_3PtrINS0_12RansacOutputEEEENKUlRKNS_5RangeEE1_clES8_ENKUlRKNS0_5ScoreERKNS_3MatEbE_clESC_SF_b[_ZZZN2cv4usac6Ransac3runERNS_3PtrINS0_12RansacOutputEEEENKUlRKNS_5RangeEE1_clES8_ENKUlRKNS0_5ScoreERKNS_3MatEbE_clESC_SF_b]+0x74): undefined reference to `__atomic_load_8′
    /usr/bin/ld: ransac_solvers.cpp:(.text._ZZZN2cv4usac6Ransac3runERNS_3PtrINS0_12RansacOutputEEEENKUlRKNS_5RangeEE1_clES8_ENKUlRKNS0_5ScoreERKNS_3MatEbE_clESC_SF_b[_ZZZN2cv4usac6Ransac3runERNS_3PtrINS0_12RansacOutputEEEENKUlRKNS_5RangeEE1_clES8_ENKUlRKNS0_5ScoreERKNS_3MatEbE_clESC_SF_b]+0x400): undefined reference to `__atomic_store_8′
    /usr/bin/ld: ransac_solvers.cpp:(.text._ZZZN2cv4usac6Ransac3runERNS_3PtrINS0_12RansacOutputEEEENKUlRKNS_5RangeEE1_clES8_ENKUlRKNS0_5ScoreERKNS_3MatEbE_clESC_SF_b[_ZZZN2cv4usac6Ransac3runERNS_3PtrINS0_12RansacOutputEEEENKUlRKNS_5RangeEE1_clES8_ENKUlRKNS0_5ScoreERKNS_3MatEbE_clESC_SF_b]+0x420): undefined reference to `__atomic_load_8′
    /usr/bin/ld: CMakeFiles/opencv_calib3d.dir/src/usac/ransac_solvers.cpp.o: in function `cv::usac::Ransac::run(cv::Ptr&)::{lambda(cv::Range const&)#3}::operator()(cv::Range const&) const [clone .isra.0]’:
    ransac_solvers.cpp:(.text._ZZN2cv4usac6Ransac3runERNS_3PtrINS0_12RansacOutputEEEENKUlRKNS_5RangeEE1_clES8_.isra.0[_ZNSt17_Function_handlerIFvRKN2cv5RangeEEZNS0_4usac6Ransac3runERNS0_3PtrINS5_12RansacOutputEEEEUlS3_E1_E9_M_invokeERKSt9_Any_dataS3_]+0xfac): undefined reference to `__atomic_load_8′
    collect2: error: ld returned 1 exit status
    make[2]: *** [modules/calib3d/CMakeFiles/opencv_calib3d.dir/build.make:788: lib/libopencv_calib3d.so.4.8.1] Error 1
    make[1]: *** [CMakeFiles/Makefile2:4766: modules/calib3d/CMakeFiles/opencv_calib3d.dir/all] Error 2
    make[1]: *** Waiting for unfinished jobs….
    [ 51%] Building CXX object modules/highgui/CMakeFiles/opencv_highgui.dir/src/window.cpp.o
    [ 51%] Linking CXX executable ../../bin/opencv_model_diagnostics
    [ 51%] Built target opencv_model_diagnostics
    [ 51%] Building CXX object modules/highgui/CMakeFiles/opencv_highgui.dir/src/roiSelector.cpp.o
    [ 51%] Linking CXX shared library ../../lib/libopencv_dnn_superres.so
    [ 51%] Built target opencv_dnn_superres
    [ 51%] Building CXX object modules/highgui/CMakeFiles/opencv_highgui.dir/src/window_gtk.cpp.o
    [ 51%] Linking CXX shared library ../../lib/libopencv_highgui.so
    [ 51%] Built target opencv_highgui
    make: *** [Makefile:182: all] Error 2
    Hatası alıyorum ve çözemiyorum sebebi ve çözümü nedir ?

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir