Hoşgeldin Misafir

OpenCV ile Resmin Kenarlarını Bulma (C++)

SurHan

28 Kas 2017
4,186 Mesaj

Aktiflik

Seviye

Deneyim

TIM / GÖREV:
kenar-belirleme-candy.png


-Açıklama:--


Bazı projelerde resmin tamamıyla uğraşmaktansa kenarlarıyla uğraşarak istediğimiz sonuca daha çabuk ulaşırız. Aşağıdaki kodları ve açıklamaları inceleyiniz.-

-Program Kodu:--


Kod:
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/highgui/highgui.hpp"
#include <stdlib.h>
#include <stdio.h>
 
using namespace cv;
 
Mat src, src_gray;
Mat dst, detected_edges;
 
int edgeThresh = 1;
int lowThreshold;
int const max_lowThreshold = 100;
int ratio = 3;
int kernel_size = 3;
char* window_name = "Kenar Bulma";
 
void CannyThreshold(int, void*)
{
	//gürültü azaltılıyor
	blur(src_gray, detected_edges, Size(3, 3));
 
	Canny(detected_edges, detected_edges, lowThreshold, lowThreshold*ratio, kernel_size);
 
	dst = Scalar::all(0);
 
	src.copyTo(dst, detected_edges);
	imshow(window_name, dst);
}
 
int main()
{
	//resim yükleniyor
	src = imread("resim.jpg");
 
	if (!src.data)
	{
		return -1;
	}
 
	//src ile aynı türde ve boyutta matris oluşturuldu
	dst.create(src.size(), src.type());
 
	//resim gri yapıldı
	cvtColor(src, src_gray, CV_BGR2GRAY);
 
	//pencere oluşturuldu
	namedWindow(window_name, CV_WINDOW_AUTOSIZE);
 
	//Trackbar eklendi
	createTrackbar("Eşik:", window_name, &lowThreshold, max_lowThreshold, CannyThreshold);
 
	//resim gösteriliyor
	CannyThreshold(0, 0);
 
	//bir tuşa basınca program kapanıyor
	waitKey(0);
 
	return 0;
}

-Ek (İşlem yapılan orjinal resim):--

resim-3.jpg