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

(Ders 35) OpenCV ile Resimlerin Piksel Renklerini Bulma (C++)
(Ders 27) OpenCV ile Fareyle Dikdörtgen Çizme (C++)

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

Ekran Görüntüsü:

Açıklama:

Görüntü işleme projelerinde zaman zaman webcam’den alınan görünütüdeki piksellerin RGB ve BGR kodlarına ihtiyaç duyarız, bu örnek bu amaçla tasarlandı.
İlk önce webcam açılıyor, siz herhangi bir yere tıklayıncada ilgili pikselin renk değerleri analiz ediliyor.

Program Kodu:

[code]
#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()
{
namedWindow("Kamera", CV_WINDOW_AUTOSIZE);

VideoCapture video(0); //dahili webcam icin 0 yaziniz harici webcamlar icin 1,2,3 gibi sayilar yaziniz
if (!video.isOpened())//eğer webcam açılmazsa
{
cout << "Webcam acilamadi" << endl;
}

while (true) //sonsuz dongu
{
bool frameOkundu = video.read(resim); //video’yu resim’e frame frame okuyor

imshow("Kamera", resim);

//fare hareketleri burada takip ediliyor
setMouseCallback("Kamera", fareTakip, NULL);

if (waitKey(30) == 27) //27 ascii tus karsiligi ESC tusudur. 30 milisaniye ESC’ye basilirsa
{
return 0;
}
}

waitKey(0);
return 0;
}
[/code]

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

(Ders 35) OpenCV ile Resimlerin Piksel Renklerini Bulma (C++)
(Ders 27) OpenCV ile Fareyle Dikdörtgen Çizme (C++)