Opencv Kütüphanesi
Opencv Kütüphanesi
OpenCV, bir resim ya da video içindeki anlamlı bilgileri çıkarıp işleyebilmek için INTEL tarafından C ve C++ dilleri kullanılarak geliştirilmiş, açık kaynak kodlu bir “Görüntü İşleme” kütüphanesidir. OpenCV kütüphanesi, beş temel bileşenden oluşmaktadır. Bu bileşenlerin dört tanesi Şekil 1’de görülmektedir
Şekil 1. OpenCV’nin 4 Temel Bileşeni
Computer Vision (Bilgisayarla Görü/Görme) kelimesinin baş harfleri kullanılarak isimlendirilen CV bileşeni, temel resim işleme fonksiyonları ve Bilgisayarla Görü/Görme için kullanılan yüksek seviyeli algoritmaları bünyesinde barındıran beş temel kütüphaneden biridir. Machine Learning Library kelimesinin baş harfleri kullanılarak isimlendirilen MLL bileşeni, adından da anlaşılacağı üzere Makina Öğrenmesi dalı için gerekli istatistiksel verilere ulaşmak, mevcut verileri sınıflandırmak için kullanılan fonksiyonları/araçları içeren diğer bir kütüphanedir. HighGUI bileşeni, slider, form gibi OpenCV kütüphanesi içerisinde tanımlanmış pek çok nesneyi yaratabilmemizi sağlayan bir grafik arabirimi olmakla beraber, resim ve videoları kaydetmek, yüklemek, hafızadan silmek için gerekli giriş/çıkış (I/O) fonksiyonlarını da içerir.
CXCore bileşeni, OpenCV’ye ait IplImage, cvPoint, cvSize, cvMat, cvHistogram...vs gibi veri yapılarını bünyesinde barındıran, XML desteği de sağlayan bir kütüphanedir. Son olarak CvAux bileşeni, şablon eşleştirme (template-matching), şekil eşleştirme (shape matching), bir objenin ana hatlarını bulma (finding skeletons), yüz tanıma (face-recognition), ağız hareketleri izleme (mouth-tracking), vücut hareketlerini tanıma (gesture recognition) ve kamera kalibrasyonu gibi daha pek çok deneysel algoritmaları bünyesinde barındıran kütüphanedir. OpenCV kütüphanesi, BSD lisansı ile lisanslanmıştır. Özgür lisanslar içinde en özgürü olarak bilinen bu lisansta kodu alan kişi, istediği gibi kullanma özgürlüğüne sahiptir. Akademik ve ticari kullanımı ücretsiz olan bu kütüphane Windows, Linux, MacOS X gibi farklı platformlarda kullanılabilir.
Intel’in görüntü işleme laboratuvarlarında geliştirilen ve hız açısından optimize edilen OpenCV Kütüphanesi gerçek zamanlı uygulamalar hedef alınarak geliştirilmiştir. USB 2.0 teknolojisi ile birlikte artık standart bir bilgisayarda bile gerçek zamanlı uygulamalar çalıştırılabilmektedir. Tüm bu gelişmeler oyuncak yapımından endüstriyel üretime kadar pek çok alanda bu kütüphanenin kullanılmasına yol açmıştır. Kullanılan Noktalar ve İşletim Sistemleri aşağıdaki gibidir.
PROGRAMLAMA DİLLERİ: İŞLETİM SİSTEMLERİ:
C/C++ LİNUX
JAVA ANDROID
.NET iOS
PHP BLACKBERRY 10
MATLAB WINDOWS
PYTHON
DELPHI
1. PC Üzerinden Kurulumu (LUBUNTU, UBUNTU)
Öncelikle Lubuntu işletim sisteminde OpenCV.sh diye bir text dosyası oluşturup içerisine aşağıdaki kodu yazıp içeriğindeki paket ve kütüphaneleri yüklüyoruz.
OpenCV.sh text içeriği:
version="$(wget -q -O - http://sourceforge.net/projects/OpenCVlibrary/files/OpenCV-unix | egrep -m1 -o '\"[0-9](\.[0-9])+' | cut -c2-)" echo "Installing OpenCV" $version mkdir OpenCV cd OpenCV echo "Removing any pre-installed ffmpeg and x264" sudo apt-get -qq remove ffmpeg x264 libx264-dev echo "Installing Dependenices" sudo apt-get -qq install libOpenCV-dev build-essential checkinstall cmake pkg-config yasm libtiff4-dev libjpeg-dev libjasper-dev libavcodec-dev libavformat-dev libswscale-dev libdc1394-22-dev libxine-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libv4l-dev python-dev python-numpy libtbb-dev libqt4-dev libgtk2.0-dev libfaac-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev x264 v4l-utils ffmpeg echo "Downloading OpenCV" $version
wget -O OpenCV-$version.zip http://sourceforge.net/projects/OpenCVlibrary/files/OpenCV-unix/$version/OpenCV-"$version".zip/download echo "Installing OpenCV" $version
unzip OpenCV-$version.zip cd OpenCV-$version mkdir build cd build 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_QT=ON -D WITH_OPENGL=ON .. make -j2 sudo make install sudo sh -c 'echo "/usr/local/lib" > /etc/ld.so.conf.d/OpenCV.conf' sudo ldconfig echo "OpenCV" $version "ready to be used"
Daha sonra bu text dosyasının kaydedildiği yere terminal üzerinden gelip terminalde açılabilirliğini aşağıdaki komut ile belirliyoruz. Ve daha sonra çalıştırıyoruz.
· chmod +x OpenCV.sh
· ./OpenCV.sh
2. PcDuino Üzerine kurulumu:
Öncelikle Lubuntu işletim sisteminde OpenCVBefore.sh diye bir text dosyası oluşturup içerisine aşağıdaki kodu yazıyoruz. [13]
OpenCVbefore.sh text dosyasının içeriği:
sudo apt-get install libgtk2.0-dev sudo apt-get install pkg-config echo "Kurulum Tamamlandı"
echo "AMMAR ASLAN BAŞARIYLA YÜKLENDİ" ve çalıştırıyoruz. Ayrıca OpenCVSetupScriptForPcDunioAndRasbrreryPi.sh adına bir text daha oluşturup aşağıda belirtilen kısmı ekleyip derliyoruz. version="$(wget -q -O - http://sourceforge.net/projects/OpenCVlibrary/files/OpenCV-unix | egrep -m1 -o '\"[0-9](\.[0-9])+' | cut -c2-)"
echo "Installing OpenCV" $version mkdir OpenCV cd OpenCV echo "Removing any pre-installed ffmpeg and x264" sudo apt-get -qq remove ffmpeg x264 libx264-dev echo "Installing Dependenices" sudo apt-get -qq install libOpenCV-dev build-essential checkinstall cmake pkg-config yasm libtiff4-dev libjpeg-dev libjasper-dev libavcodec-dev libavformat-dev libswscale-dev libdc1394-22-dev libxine-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libv4l-dev python-dev python-numpy libtbb-dev libqt4-dev libgtk2.0-dev libfaac-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev x264 v4l-utils ffmpeg echo "Downloading OpenCV" $version wget -O OpenCV-$version.zip http://sourceforge.net/projects/OpenCVlibrary/files/OpenCV-unix/$version/OpenCV- "$version".zip/download echo "Installing OpenCV" $version unzip OpenCV-$version.zip cd OpenCV-$version mkdir build cd build cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D BUILD_PYTHON_SUPPORT=ON -D BUILD_EXAMPLES=ON .. make -j2 sudo make install sudo sh -c 'echo "/usr/local/lib" > /etc/ld.so.conf.d/OpenCV.conf' sudo ldconfig echo "OpenCV" $version "ready to be used" echo "Kurulum Tamamlandı" echo "AMMAR ASLAN BAŞARIYLA YÜKLEDİ !!"
Bu işlemlerden sonra OpenCV işletim sisteminin sistem dosyasına kayıtlı ve C++ dilini derlemeye uygun hâle geliyor.
Aşağıdaki program dosya yolu verilen bir görüntünün OpenCV
Kütüphanesi ile nasıl açılacağını göstermektedir.
UYGULAMALAR(C++ ve OpenCv)
#include <highgui.h>
int main(){
IplImage* img;
img =
cvLoadImage("C:\\Lenna.jpg");
cvNamedWindow("LENNA", 1);
cvShowImage("LENNA", img );
cvWaitKey(0);
cvReleaseImage(&img);
cvDestroyWindow("LENNA");
return 0; }
IplImage
veri yapısı, çeşitli resim dosyalarını hafızaya alabilmek için oluşturulmuş
özel bir veri yapısıdır. Program 1’de istenen resim IplImage tipinde bir
değişkene cvLoadImage fonksiyonu yardımıyla atanır. Bu fonksiyon, BMP, DIB,
JPEG, JPG, JPE, PNG, PBM, PGM, PPM, SR, RAS, TIFF ve TIF uzantılı resim
dosyalarını okuyabilir. Okunabilen resim dosyaları cvShowImage Fonksiyonu ile
form üzerinde gösterilir. İşlem bittikten sonra yaratılan bütün nesneler
hafızadan silinir.
Aşağıdaki programda, seçilen bir resme Gaussian
Filtresi uygulanmıştır.
#include "cv.h"
#include "highgui.h"
int main(){
IplImage* img;
img = cvLoadImage("C:\\Lenna.jpg");
cvNamedWindow("Filtre_Oncesi",1);
cvShowImage( "Filtre_Oncesi",img);
cvNamedWindow("Filtre_Sonrasi",1);
IplImage* img2;
CvSize boyut;
boyut=cvGetSize(img);
img2 = cvCreateImage(boyut,8,3);
cvSmooth(img,img2,CV_GAUSSIAN,5,5);
cvSmooth(img2,img2,CV_GAUSSIAN,5,5);
cvShowImage("Filtre_Sonrasi",img2); cvWaitKey(0); return
0;}
Yukarıdaki
programda Şekil 5.3.2’deki resme ard
arda 2 defa Gaussian Filtresi uygulanarak Şekil 6.3.2’deki resim elde
edilmiştir. Programda “cvsmooth” fonksiyonunun parametreleri değiştirilerek
resme farklı filtreler de uygulanabilir.
Şekil 6.3.3 Gaussian
Filtresi Uygulanan Resim
Gölge tespiti
için gerekli kodlar ve ekran çıktıları PcDuino kartı üzerinde bulunan Geany
platformunda C++ ve OpenCV yardımı ile gerçekleştirildi.
Yorumlar
Yorum Gönder