(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ı:

[code]
#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;
}
[/code]

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++)