Merhaba arkadaşlar bu yazımda OpenCV kütüphanesinin bazı fonksiyonlarını kullanmayı göreceğiz. C++ ile programlayacağız. Nedenleri anlatmadan önce OpenCV kütüphanesini kurmamış olanlar varsa şurdan hemencecik halledebilirler. Her şeyi adım adım anlatacağım. Biraz uzun olacak ama mümkün olduğunca sıkmamaya ve açık yazmaya çalışacağım.
Neden C++:
- Üzerine çalıştığım bir proje gereği c++ ile yazmam gerekiyor.
- Proje performans odaklı olduğu için tercihimiz c++ oldu.
- C++ öğrenmesi biraz zahmetli ancak isveç çakısı gibi bir dil.
- Performans odaklı bir geliştirme yapıyor olmasaydım muhtemelen tercihim python olurdu.
- C++ üzerine oldukça geniş bir döküman dünyası olması işimi kolaylaştırıyor.
Kullacağım Teknolojiler:
- Vim Editör
- g++
- OpenCV
- C++
E hadi başlayalım.
Kendi yöntemlerim ile anlatacağım ancak kendinize uyarlayabilirsiniz.
ctrl + alt + t kombinasyonu ile uçbirim ekranımızı açıyoruz ya da nasıl isterseniz öyle açın 🙂
mkdir OpenCVCalismalar // OpenCVCalismalar adında bir dizin oluşturdum
cd OpenCVCalismalar // oluşturduğum dizinin içine girdim
cd image // resimleri içine atacağım bir dizin oluşturdum.
Şimdi image adlı dizine deneme.jpg adında herhangi bir resim koyun.
vim resmi_ac.cpp // vim editör ile resmi_ac.cpp adında bir cpp dosyası açıyorum
#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>using namespace std;
using namespace cv;int main()
{
Mat img = imread(“image/deneme.jpg”); // Mat sınıfını dahil ediyoruz.
// imread() fonksiyonu ile img adında bir değişkene cpp_opencv.png adlı resmi okutuyoruz.
if (img.empty()){ //img nin boş olup olmadığını kontrol et
cout << “Resim bulunamadi !” << endl; // Eğer boşsa ekrana Resim Bulunamadi ! yazdır.
}
else{
namedWindow(“Resmi Ac”, CV_WINDOW_AUTOSIZE); // Pencere başlığına Resmi Ac adı verildi. Pencere boyutu otomatik ayarlandı.imshow(“Resim Ac”, img); // img yi Resmi Ac başlığı altında gösterdik.
waitKey(0); // Bir giriş alınması bekleniyor.
destroyWindow(“Resim Ac”); // Pencere kapandı.
}return 0;
}
Kodları yazdıktan sonra sıra geldi derlemeye.
g++ resmi_ac.cpp -o resmi_ac `pkg-config –cflags –libs opencv` // programımızı derler.
./resmi_ac // programımızı çalıştırır.
Ekran görüntülerim:
Resmi görüntüleyebildiğinizi umuyorum.
Şimdi resmimizin boyutuyla oynayalım birazda.
Yeni bir cpp dosyasında yazalım kodlarımızı.
vim resimle_oyna.cpp // resimle_oyna.cpp adında bir dosya açıyoruz.
İçine şu kodları yazıyoruz.
#include “opencv2/highgui/highgui.hpp”
#include “opencv2/imgproc/imgproc.hpp”
#include “opencv2/core/core.hpp”using namespace std;
using namespace cv;int main()
{
Mat normal, resized, saved;normal = imread(“image/deneme.jpg”); // normal resmimiz
namedWindow(“Normal Resim”, CV_WINDOW_AUTOSIZE); // normal resmimiz için pencere başlığımızı oluşturduk
imshow(“Normal Resim”, normal); // normal resmimizi açtık
resize(normal, resized, Size(), 0.5, 0.5, INTER_LINEAR); // resize() fonksiyonu ile resmimizi küçülttük
namedWindow(“Kucuk Resim”, CV_WINDOW_AUTOSIZE); // küçük resmimiz için pencere başlığımızı oluşturduk
imshow(“Kucuk Resim”, resized); // küçük resmimizi açtıkimwrite(“kucuk_resim.jpg”, resized); // küçük resim kaydedildi kucuk_resim.jpg adında
resize(normal, resized, Size(), 1.5, 1.5, INTER_LINEAR); // resmimizi büyüttük
namedWindow(“Buyuk Resim”, CV_WINDOW_AUTOSIZE);
imshow(“Buyuk Resim”, resized);
imwrite(“buyuk_resim.jpg”, resized);waitKey(0);
return 0;
}
g++ resimle_oyna.cpp -o resimle_oyna `pkg-config –cflags –libs opencv` // derlemek için gereken komutumuz.
./resimle_oyna // programımızı çalıştırmak için gerekli komutumuz.
Büyük resim içinde kodlar aynı olduğu için açıklama satırı koymadım arkadaşlar. Ekran görüntümü alırken büyük resmi kapattım çünkü ortalık biraz karıştı o açıkken 🙂 (Çok yer kapladı)
Herhangi bir sorunuzda bana ulaşabilirsiniz. OpenCV ile ilgili öğrendiklerimi paylaşmaya devam edeceğim. Herkese iyi çalışmalar 🙂
Sorular kısmından konu ile ilgili soruları sorabilirsiniz