-Program Açıklaması:--
Resimler matrislerden bir diğer ifadeyle sayılardan oluştuğu için bu programımızda koordinatları verilen piksellerin renk değerlerine ulaştık ve bu renk değerlerini programımızda sayısal olarak gösterdik.-
Ekstradan bulduğumuz değerlerin doğru olup olmadığını da şu şekilde kontrol ettik. Piksel isminde bir pencere oluşturduk ve bu pencereyi bulduğumuz renk değeriyle doldur dedik.
Bu şekilde bulunan renk değerinin doğruluğunu kontrol etmiş olduk.-
-Ek Açıklama:--
OpenCV RGB yerine BGR renk kodlarını kullandığı için biz iki kod değerinide ekranda gösterdik.-
-Programın Kullanım Şekli:--
Fareyle sol tuşa tıklayarak resim üzerinde geziniyoruz.-
İlgili değerler konsol penceresinde görünüyor.-
--Program Kodu:---
Kod:
#include "opencv2/core/core.hpp"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include "iostream"
using namespace cv;
using namespace std;
Mat resim;
void renkCiz(int mavi, int yesil, int kirmizi)
{
//8U nun anlamı 8 bit resim demektir
//C3 un anlamı 3 kanallı yani üç rengin karışımından resim oluştur demek
//bu renkler kirmizi, yesil ve mavidir
Mat img(200, 200, CV_8UC3, Scalar(mavi, yesil, kirmizi));
namedWindow("Piksel", CV_WINDOW_AUTOSIZE);
imshow("Piksel", img);
}
void fareTakip(int event, int x, int y, int flags, void *kullanici)
{
//farenin sol tuşuna basarak sürüklendiğinde çizim yapıyor veya
//farenin sol tuşuna tıklandığında çizim yapıyor
if ((event == EVENT_MOUSEMOVE && flags == EVENT_FLAG_LBUTTON) || event == EVENT_LBUTTONDOWN)
{
try {
system("cls");
cout << "<-----------------Renkli Resim----------------->" << endl;
cout << "<----------------Piksel Bilgisi---------------->" << endl;
Vec3b yogunluk = resim.at<Vec3b>(y, x);
int mavi = yogunluk.val[0];
int yesil = yogunluk.val[1];
int kirmizi = yogunluk.val[2];
renkCiz(mavi, yesil, kirmizi);
cout << endl;
cout << " " << "Koordinat x = " << x << endl;
cout << " " << "Koordinat y = " << y << endl << endl << endl;
cout << " " << "Mavi Ton Degeri = " << mavi << endl;
cout << " " << "Yesil Ton Degeri = " << yesil << endl;
cout << " " << "Kirmizi Ton Degeri = " << kirmizi << endl << endl << endl;
cout << " " << "BGR = ( " << mavi << " , " << yesil << " , " << kirmizi << " )" << endl;
cout << " " << "RGB = ( " << kirmizi << " , " << yesil << " , " << mavi << " )" << endl << endl << endl;
cout << "Not1: BGR >> Blue , Green , Red" << endl;
cout << "Not2: RGB >> Red , Green , Blue" << endl;
cout << "Not3: Renkli resimler kirmizi, yesil ve mavi renklerin karisimiyla olusur." << endl;
cout << "Not4: Bu karisimda degeri 0 a yakin olan renkler daha pasiftir." << endl;
cout << "Not5: degeri 255 e yakin olan renkler daha baskindir.";
}
catch (...)
{
system("cls");
cout << "<-----------------Hata olustu.----------------->" << endl;
cout << "<----------Pencerenin disina cikildi.---------->" << endl << endl;
}
}
}
int main()
{
resim = imread("resim.jpg", CV_LOAD_IMAGE_COLOR);
namedWindow("Renkli Resim", CV_WINDOW_AUTOSIZE);
imshow("Renkli Resim", resim);
//fare hareketleri burada takip ediliyor
setMouseCallback("Renkli Resim", fareTakip, NULL);
waitKey(0);
return 0;
}
----Ek (Üzerinde İşlem Yapılan Resim):--
---
--
