Raspberry Pi-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.Terminalimizi 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. Yoksa o iş olmaz.

Bu yüklemeler bittikten sonra böyle bir ekranla karşılaşmamız olası

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 bu kurulum esnasında bazı paketlerin yüklenemediğini söyledi

Burada bu paketi ayrı olarak yükledik ve oldu.

Raspberry Pi içerisinde hali hazırda Python2.7 ve Python3 yüklü halde gelmekte. Şimdi OpenCv’yi 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

Burada python2 numpy paketi bulamadı ama python3 için ise zaten mevcut uyarısı aldık. Siz de bu hata olmayabilir. Devam ediyoruz.

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 \
        ../

Hata aldık

Hatamızı farkettim. opencv versiyonunu değiştirmeyi unutmuşum tekrar deniyoruz

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

Yani 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. Eğer hata alırsam bu klasörü komple silip, 4.5.2 versiyonunu tekrar yükleyeceğim

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. Benim android telefonuma yüklediğim 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.

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

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

Bir cevap yazın

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