(Ders 34) OpenCV ile Fare Yardımıyla Çizim (C++)

(Ders 46) OpenCV ile Resmin Piksellerini Değiştirme (C++)
(Ders 25) OpenCV ile Gri Resimlerin Piksel Renk Değerlerini Bulma(C++)

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

Ekran Görüntüsü:

Açıklama:

Önceki derslerimizde fare koordinatlarını bulmayı ve resmin piksellerini değiştirmeyi öğrenmiştik.

Bu iki bilgiyi birleştirerek resmin üzerine fareyle (mause) çizim yapma programı yaptık.

Biraz romantik olalım dedik:)

Program Kodları:

#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <cstdlib>

using namespace std;
using namespace cv;

cv::Mat resim = cv::imread("resim.jpg");
int cizgiKalinligi = 4;

void ciz(int y, int x)
{
	resim.at<cv::Vec3b>(x, y)[0] = 0; //mavi
	resim.at<cv::Vec3b>(x, y)[1] = 0; //yeşil
	resim.at<cv::Vec3b>(x, y)[2] = 255; //kırmızı
	cv::imshow("Kare", resim);
}
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)
	{
		//tek piksele çizim yapınca görünmesi zor oluyor ve
		//bazı pikselleri işaretlenmiyordu
		//aşağıdaki döngülerle komşu piksellerde boyanıyor
		for (int i = -cizgiKalinligi; i <= cizgiKalinligi; i++)
		{
			for (int j = -cizgiKalinligi; j <= cizgiKalinligi; j++)
			{
				ciz(x + j, y + i);
			}
		}
	}

}

int main() {
	cv::namedWindow("Kare");
	setMouseCallback("Kare", fareTakip, NULL);
	cv::imshow("Kare", resim);
	cv::waitKey();
	return 0;
}

Ek (İşlem yapılan resim):

 

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

(Ders 46) OpenCV ile Resmin Piksellerini Değiştirme (C++)
(Ders 25) OpenCV ile Gri Resimlerin Piksel Renk Değerlerini Bulma(C++)