(Ders 35) OpenCV ile Resimlerin Piksel Renklerini Bulma (C++)

(Ders 25) OpenCV ile Gri Resimlerin Piksel Renk Değerlerini Bulma(C++)
(Ders 36) OpenCV ile Kameradan Piksel Renk Değerlerini Bulma (C++)

Size faydalı olduysa, sosyal medyada paylaşarak bize destek olun. Teşekkürler.

Ekran Görüntüsü:

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:

#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):

Size faydalı olduysa, sosyal medyada paylaşarak bize destek olun. Teşekkürler.

(Ders 25) OpenCV ile Gri Resimlerin Piksel Renk Değerlerini Bulma(C++)
(Ders 36) OpenCV ile Kameradan Piksel Renk Değerlerini Bulma (C++)