Herkese merhaba bu yazıda çok kolay gerçekleştirebileceğimiz herhangi bir yerdeki resim dosyasını okumayı anlatmaya çalışacağım. Peki bu resim okuma bize ne sağlayacak ileriki örneklerde kameradan görüntü alıp (video şeklinde) belirlediğimiz durum sonucunda elde edilen resim üzerinde işlemler yapacağız. Şuan sadece okuma ile ilgilenelim ve koduna bakalım.
Herşey den önce bilmemiz gereken bir değer husus ise bu okuduğumuz yazdığımız tüm değerler (frame’ler) OpenCv’de matris şeklinde saklanırlar herşey matris işlemleri üzerine dönüyor aslında işin matematiksel modelini merak edenler için şurayı inceleyebilirler.
#include "stdafx.h" #include <opencv2/opencv.hpp> using namespace cv; int main() { Mat resim=imread("c:/users/acer/desktop/gorev.jpg"); imshow("deneme",resim); waitKey(0); }
- İlk başta yukarıda ki “#include <opencv2/opencv.hpp>” bu kısım yani OpenCv’ye bağlandığımız kütüphanedir bu kütüphane eklenmezse programımız OpenCv fonksiyonlarını sınıflarını tanımayacaktır.
- “using namespace cv;” Bu kısım ise bize kolaylık sağlayan bir kısımdır bu kısmı yukarıda bir kez tanımlayarak her seferinde OpenCv elemanlarının başına “cv::” yazmaktan kurtuluyoruz eğer bu name space’i eklemezsek şu şekilde yazmak zorunda kalacaktık.
#include "stdafx.h" #include <opencv2/opencv.hpp> int main() { cv::Mat resim=cv::imread("c:/users/acer/desktop/gorev.jpg"); imshow("deneme",resim); cv::waitKey(0); }
- Artık main fonksiyonunun içine gelecek olursak Mat değişken türünde bir değişken tanımlanmış ve içine belirlenen uzantıdaki resim aktarılmıştır. Burada Mat değişken türü bir matrisi temsil eder aslında. Bizim resmimizde bir matris olduğu için kolaylıkla bu değişken tipinde saklayabiliriz resmimizi.
- Daha sonra imshow kısmına geldiğimizde ise elde ettiğimiz resmi ekran da göstermemizi sağlayan OpenCv fonksiyonudur ekranda herhangi bir çıktı almak istiyorsak bu fonksiyonu kullanırız. İlk parametresi pencere ismini gösterir ikinci parametre ise ekranda çıktı olarak gösterilecek matrisimizi (frame) temsil eder.
- En sondaki “waitKey(0);” ise kesinlikle koda eklenmeli göz ardı edilmemelidir. Çünkü OpenCv programın bitmesi için bir bitirme şartı bekler ve bu bitirme şartıda waitKey fonksiyonudur. Bu fonksiyon yerine misal getchar(); fonksiyonuda bir tuşa basılmasını bekler normalde ama OpenCv ile çalışmıyor biz OpenCv’nin kendi fonksiyonu olan waitKey fonksiyonunu kullanmaya dikkat edelim.
Herkese iyi çalışmalar.