20 Ekim 2018 Cumartesi

OpenCV (Python) Kütüphanesinin Ubuntu'ya Kurulumu

OpenCV (Python) Kütüphanesinin (Extra Modülü - Contrib ve CUDA-cuDNN ile) Ubuntu'ya Kurulumu


OpenCV (Open Source Computer Vision Library) açık kaynak kodlu Bilgisayarla Görme kütüphanesidir. Hem akademik hem de ticari amaç için kullanımı ücretsizdir. C++, Python ve Java programlama dilleriyle Windows, Linux, Mac OS, iOS ve Android işletim sistemlerinde kullanılabilmektedir. OpenCV ile görüntü işleme (image processing), makine öğrenmesi (machine learning), bilgisayarla görme (computer vision), derin öğrenme (deep learning) alanlarında algoritma, uygulama geliştirebilirsiniz. Bunun için OpenCV size çok sayıda algoritmayı fonksiyon şeklinde kullanmanızı sağlayan imkanlar sunmaktadır. Yapmanız gereken tek şey dökümanlardan ilgili fonksiyonun aldığı parametre ve girdileri doğru vererek sonuçlarını doğru bir şekilde almak. Burada OpenCV'nin Python programlama dili ile kullanılması için yapılması gereken derleme işlemi (kurulum) gerçekleştirilecektir. Kurulum virtualenvwrapper kullanılarak oluşturulan sanal ortama yapılacaktır. Python Sanal Ortam virtualenvwrapper Kurulumu için önceki yazımdan faydalanabilirsiniz. Derleme için Cmake-gui programından faydalanılacaktır ve GCC derleyicisi derleme işleminde kullanılacaktır. Ayrıca bu kurulum (derleme) esnasında OpenCV'nin extra modülü olarak anılan contrib modülü de derleme işlemine dahil edilecektir. OpenCV contrib içerisinde yer alan modüllere buradan bakabilirsiniz.


Adım 1.
OpenCV kütüphanesinin sitesinde ki releases sayfasından istediğiniz versiyonunun "Sources" linkinde yer alan kaynak kodlarını indiriniz. (Bu kurulum (derleme) için OpenCV 3.4.3 versiyonu kullanılacaktır, aşağıdaki ekran görüntüsünden de göreceğiniz gibi aslında son versiyon olarak 4.0.0-alpha çıkmış bulunmaktadır ancak son çıkan versiyonlarda bir takım hatalar çıkmaktadır bu hatalar zamanla düzeltilerek daha kararlı bir hale geldikten sonra kullanılmasını tavsiye ederim.)


Adım 2.
İndirilen sıkıştırılmış dosya (opencv-3.4.3.zip) çıkarılır. opencv-3.4.3 klasörü içerisinde "source" ve "build" adında 2 yeni boş klasörler oluşturulur ve opencv-3.4.3 klasörü içerisinde yer alan diğer tüm dosyalar "source" klasörü içerisine taşınır.






Adım 3.
OpenCV ekstra modüllerinin yer aldığı Contrib dosyası github sayfasından indirilir. Burada dikkat etmeniz gereken nokta kurulumunu yapacağınız OpenCV versiyonuyla aynı versiyondaki contrib dosyasını indirmek olacaktır. Burada OpenCV-3.4.3 kurulumu yapacağımız için opencv_contrib-3.4.3 klasörü indirildi ve sıkıştırılmış dosya çıkartıldı.



Adım 4.
Yazının giriş bölümünde bahsettiğim gibi kurulumu sanal ortama yapacağız ve sanal ortam oluşturmak için virtualenvwrapper kullanacağız. Python Sanal Ortam virtualenvwrapper Kurulumu için önceki yazıma bakmanızı tavsiye ederim. mkvirtualenv komutuyla "opencv_3.4.3" adında yeni bir Python 3 sanal ortamı oluşturuyoruz. Burada sanal ortamınıza istediğiniz ismi verebilirsiniz. Oluşturduğunuz sanal ortamdan deactivate komutuyla çıkabilir ve workon komutuyla tekrar oluşturduğunuz sanal ortama giriş yapabilirsiniz.




Adım 5.
Yeni oluşturulan sanal ortama geçiş yaptıktan sonra ileride ihtiyaç duyacağımız NumPy Python paketini bu aşamada sanal ortamınıza aşağıdaki komutu çalıştırarak kurmanız gerekmektedir.


pip install numpy


Sanal ortamınıza kurulan paketleri lssitepackages komutunu çalıştırarak görebilirsiniz. Bu komutu çalıştırdığımızda NumPy paketinin sanal ortamımıza başarılı bir şekilde kurulduğunu görüyoruz.



Adım 6.
Kurulum için cmake-gui'den faydalanacağız. Eğer cmake-gui kurulu değilse aşağıdaki kodu çalıştırarak cmake-gui'nin kurulumunu gerçekleştirebilirsiniz.


sudo apt install cmake-gui



Adım 7.
Terminal açılır ve kurulumu yapacağımız, yeni oluşturduğumuz sanal ortama geçiş yapılır ve cmake-gui komutu çalıştırılarak sanal ortamınızda cmake-gui açılır. Burada cmake-gui'yi sanal ortamınızdan açmanız dikkat edilmesi gereken bir noktadır. Eğer sanal ortamdan açmazsanız, sanal ortamdaki Python ve paketlerini değil de, işletim sisteminizde mevcut bulunan Python ve paketlerini görür. Bu durumda bu klasör yollarını el ile düzeltmeniz gerekir. Tüm bunlarla uğraşmamak için cmake-gui'yi sanal ortamınızdan açmaya dikkat edin. Cmake-gui açıldıktan sonra;
  • "Where is the source code:" yazan bölümde opencv-3.4.3 klasöründe oluşturduğumuz "source" klasörü "Browse Source ..." butonuna basılarak seçilir.
  • "Where to build the binaries:" yazan bölümde opencv-3.4.3 klasöründe oluşturduğumuz "build" klasörü "Browse Build ..." butonuna basılarak seçilir.

ve aşağıda yer alan "Configure" butonuna basılır.



Adım 8. "Configure" butonuna bastıktan sonra yeni bir pencere açılacaktır. Bu pencerede derleme işlemi için kullanılacak derleyicinin seçilmesi istenmektedir. Burada tanımlı yerel (default native compiler) derleyici seçilir.


Adım 9.1.
Derleyiciyi seçtikten sonra konfigürasyon işlemi başlayacaktır. "Configuration done" mesajını görene kadar bekleyiniz. Konfigurasyon işlemi sırasında OpenCV kütüphanesi ile kullanılabilecek diğer araçların bilgisayarınızda kurulu olup olmadığına bakılır ve sonunda size bunlar hakkında bilgiler verir. Bu kısım aslında çok detaylı bilgiler içermektedir ve hepsini tek tek açıklamak mümkün değildir. Şu an konfigurasyona dahil edilmeyen ancak ileride OpenCV'nin bir modülünü kullanmak istediğinizde bir takım eksik araçlardan kaynaklanan hatalar aldıkça hangi araçlara nerede ne zaman ihtiyaç duyacağınızı daha iyi anlayacaksınız.


Adım 9.2.
OpenCV'nin extra modüllerini (opencv contrib) yüklemek için OPENCV_EXTRA_MODULES_PATH özelliğinde indirmiş olduğumuz opencv_contrib-3.4.3 klasörü içerisinde yer alan modules klasörünün yolu tanımlanır.


Adım 9.3.
OpenCV algoritmalarını özellikle Derin Öğrenme (Deep Neural Network) algoritmalarını GPU üzerinde çalıştırmak için işletim sisteminize CUDA ve cuDNN kurulumlarının yapılmış olması gerekmektedir. Ubuntu'ya CUDA Kurulumu ve Ubuntu'ya cuDNN Kurulumu yazılarımı inceleyebilirsiniz. Eğer kurulumlar işletim sisteminizde mevcut ise WITH_CUDA özelliğini aktif hale getiriniz.



Adım 9.4.
Eğer OpenCV ile birlikte Python örneklerinin de derlenmesini istiyorsanız BUILD_EXAMPLES ve INSTALL_PYTHON_EXAMPLES özellikleri AKTİF hale getirilirken INSTALL_C_EXAMPLES özelliği PASİF duruma getirilir.


Adım 9.5.
Cmake-gui'de PYTHON ile ilgili tüm özellikleri aşağıdaki ekran görüntüsünde görebilirsiniz. Buradan PYTHON2, PYTHON3 tercihlerinizi ayarlayabilirsiniz. Bizim amacımız PYTHON3 ile sanal ortama kurulum yapmak olduğundan PYTHON3_EXECUTABLE özelliğinde belirtilen klasör yolunun bizim oluşturduğumuz sanal ortamda bulunan python3 için doğru olmasıdır. Bununla birlikte PYTHON3_INCLUDE_DIR ve PYTHON3_NUMPY_INCLUDE_DIRS özelliklerinde doğru klasör yolunun belirtildiğine dikkat edin. Son olarak PYTHON3_PACKAGES_PATH değişkeninde yazan klasör yolunu unutmamamız gerekir, çünkü derleme işlemi sonunda cv2.so burada belirtilen adreste oluşturulacaktır.

Tüm bu işlemlerden sonra "Configure" butonuna birkez daha basılır "Configuring done" mesajını gördükten sonra "Generate" butonuna basılır.


Adım 10.
"Generating done" mesajını gördükten sonra, kurulumu tamamlamak için "build" klasörüne geçilir (sanal ortam içerisinde olmalısınız) ve aşağıdaki kod parçası çalıştırılır.


sudo make install






Derleme işlemi bittiğinde /usr/local/lib/python3.5/site-packages/ klasöründe yani PYTHON3_PACKAGES_PATH değişkeninde belirtilen adreste ".so" uzantılı opencv kütüphanesi oluşturulur.


Ekran görüntüsünde de gördüğünüz gibi oluşturulan opencv kütüphanesinin ismi çok uzun ve kullanılmaya çok uygun değildir. Bu sebeple bu uzun isimli dosyayı aşağıdaki komutu çalıştırarak (bir dosyayı bir yerden başka bir yere taşımak için kullanılan mv komutu yardımıyla) cv2.so olarak değiştiriyoruz.


sudo mv cv2.cpython-35m-x86_64-linux-gnu.so cv2.so




Adım 11.
Son aşamada derleme işlemi sonunda oluşturulan cv2.so OpenCV kütüphanesini oluşturduğumuz sanal ortama tanıtmamız yani bağlamamız gerekmektedir. Bunu yapabilmek için ln -s komutuyla symbolic link oluşturulur. Oluşturduğumuz sanal ortamı klasör olarak açmak için Home(~) klasörüne geçilir ve ctrl + H kısayol tuşlarına basılır.


Bu tuşlara basıldığında gizli klasörler gösterilir. Bu gizli klasörler arasında virtualenvwrapper kurulumu sırasında oluşturduğumuz .virtualenv klasörü vardır. Oluşturduğumuz ve oluşturacağımız tüm sanal ortamlar bu klasör altında oluşturulur.



Burada .virtualenv/opencv_3.4.3/lib/python3.5/site-packages klasörüne geçilir ve bağlama işlemi için aşağıdaki kod çalıştırılır.


ln -s /usr/local/lib/python3.5/site-packages/cv2.so cv2.so




Ekran görüntülerinde gördüğünüz gibi sanal ortama başarılı bir şekilde opencv kütüphanelerini tanıtmayı başardık. Gerçekten başarılı olup olmadığımızı anlamak için cv2 python ortamında koda eklenir(import edilir). Eğer hata almıyorsak yaptığımız işlemler başarılıdır. Aşağıdaki kod parçasını çalıştırarak hem derleme işleminin başarılı olup olmadığını anlayabilir hem de kullandığınız OpenCV kütüphanesinin versiyonunu öğrenebilirsiniz.

1
2
import cv2
cv2.__version__


3 yorum:

  1. Merhabalar derlemeden sonra opencv.pc dosya nerede bulunur ?

    YanıtlaSil
    Yanıtlar
    1. Package opencv was not found in the pkg-config search path.

      Perhaps you should add the directory containing opencv.pc to the PKG_CONFIG_PATH environment variable

      No package 'opencv' found
      bir hata alıyorum

      Sil
    2. hangi aşamada alıyorsunuz ? Hangi opencv paketini kurmaya çalışıyorsunuz ?

      Sil