OpenCv Tespit Edilen Hedef Özellikleri

0
OpenCv Tespit Edilen Hedef Özellikleri

Herkese merhaba bir önceki yazıda renk tespiti yapmıştık yani ortamda istediğimiz renge göre hedefi tespit etmiştik, evet tespit ettik ama bu şimdi ne işimize yarar? bunu şu şekilde işe yaratabiliriz. Biz hedefi tespit ettikten eğer hedefin ekranda ki konumunu büyüklüğünü açısnı vs. bulabilirse o zaman işimiz yarayabilir. Misal ne yapılır en bilindik örneklerden hedefi takip eden kamera, araba, drone’a kadar varabilir. Şimdi hedefin ekranda nerede olduğunu bulduracağız daha sonra ki yazılarda bu elde ettiğimiz verileri aruino’ya gönderip çeşitli işlemler yapabiliriz. Şimdi önceki derste ki kodlarımızın üstüne ufak ekelemler yapalım ve hedefin koordinat ve alan bilgilerine ulaşalım burada ekstradan kullanacağımız fonksiyon moment fonksiyonu bu fonksiyon bize tespit edilen rengin alan ve koordinat bilgilerini verecektir.

Şimdi ekleyeceğimiz kod parçasına bakalım ;


Moments mom;//bahsettiğim moments fonksiyonu bize değerleri sağlayacak
mom = moments(renkTespit);//moments fonksiyonu ile değerlere ulaşıp atama işlemini yapıyoruz
alan = mom.m00;//tespit edilen beyaz kısmın alanı
x = mom.m10 / alan;//tespit edilen beyaz kısmın x koordinatı
y = mom.m01 / alan;//tespit edilen beyaz kısmın y koordinatı
printf("alan ---> %f\n",alan);//ekranda görmek için
printf("y ---> %f\n",y);
printf("x ---> %f\n", x);

Şimdi önceki konuda ki kod ile bu kodun birleşmiş hali


#include "stdafx.h"
#include <opencv2/opencv.hpp>
using namespace cv;
int main()
{
VideoCapture video(0);
Mat okunan,hsv,renkTespit;
int minB=0, minG=0, minR=0, maxB=255, maxG=255, maxR=255;

<strong></strong>

namedWindow("ayar",CV_WINDOW_AUTOSIZE);//tracbar'ları ekranda göstermek için kullanacağımız pencere
createTrackbar("maviMin","ayar",&minB,255);//scalar değerleri için kullanacağımız trackbar'lar
createTrackbar("yesilMin","ayar",&minG,255);
createTrackbar("kirmiziMin", "ayar", &minR, 255);

createTrackbar("maivMax", "ayar", &maxB, 255);
createTrackbar("yesilMax", "ayar", &maxG, 255);
createTrackbar("kirmiziMax", "ayar", &maxR, 255);
namedWindow("ayar");

Moments mom;//bahsettiğim moments fonksiyonu bize değerleri sağlayacak
float alan, x, y;
while (true)
{
video.read(okunan);//kameradan görüntü alıyoruz
imshow("orjinal görüntü",okunan);//elde edilen görüntüyü ekranda gösteriyoruz, göstermek zorunda değiliz

cvtColor(okunan,hsv,CV_BGR2HSV);//hsv renk formatına çeviriyoruz
imshow("hsv", hsv);//elde edilen görüntüyü ekranda gösteriyoruz, göstermek zorunda değiliz

inRange(hsv,Scalar(minB,minG,minR),Scalar(maxB,maxG,maxR),renkTespit);//tresholding işlemini yani siyah ve beyaz'a indirgiyoruz
imshow("tespit edilen", renkTespit);//elde edilen görüntüyü ekranda gösteriyoruz, göstermek zorunda değiliz

mom = moments(renkTespit);//moments fonksiyonu ile değerlere ulaşıp atama işlemini yapıyoruz
alan = mom.m00;//tespit edilen beyaz kısmın alanı
x = mom.m10 / alan;//tespit edilen beyaz kısmın x koordinatı
y = mom.m01 / alan;//tespit edilen beyaz kısmın y koordinatı
printf("alan ---> %f\n",alan);//ekranda görmek için
printf("y ---> %f\n",y);
printf("x ---> %f\n", x);


if (waitKey(10) == 27)//döngüden çıkış şartı esc tuşuna basılırsa çıksın
{
break;
}
}
return 0;
}

Bu derste hedefin ekran da nerede olduğunu ve ekranda ne kadar piksel yoğunluğuna sahip olduğuna değinildi, temel olarak arduino , raspberry vs mikrodenetleyiciler ile haberleşilip daha somut projeler yapılabilir, herkese  iyi çalışmalar.

LEAVE A REPLY