{"id":9138,"date":"2011-08-22T23:10:00","date_gmt":"2011-08-22T21:10:00","guid":{"rendered":"https:\/\/fatihboy.com\/post\/kinect-kamera-islemleri"},"modified":"2011-08-22T23:10:00","modified_gmt":"2011-08-22T21:10:00","slug":"kinect-kamera-islemleri","status":"publish","type":"post","link":"https:\/\/fatihboy.com\/en\/kinect-kamera-islemleri\/","title":{"rendered":"Kinect ile Kamera ve Derinlik \u0130\u015flemleri"},"content":{"rendered":"<p>&nbsp;&nbsp; Kinect makale serisinde daha \u00f6nce sizlere <a href=\"\/en\/?p=9021\" target=\"_blank\" rel=\"noopener noreferrer\">Kinect donan\u0131m\u0131 ve yap\u0131labilecekleri<\/a> hakk\u0131nda bilgiler payla\u015fm\u0131\u015f, ard\u0131nda da birlikte <a href=\"\/en\/?p=9067\" target=\"_blank\" rel=\"noopener noreferrer\">geli\u015ftirme ortam\u0131m\u0131z\u0131 Kinect i\u00e7in haz\u0131rlam\u0131\u015ft\u0131k<\/a>. Bu makalemde, elimizi art\u0131k iyice koda bula\u015ft\u0131rarak Kinect kamera kullan\u0131m\u0131n\u0131n detaylar\u0131n\u0131 inceliyor olaca\u011f\u0131m.<\/p>\n\n\n\n<p>&nbsp;&nbsp; Makalemizde ele alaca\u011f\u0131m\u0131z \u00f6rne\u011fimiz bir WPF uygulamas\u0131 olacak, \u00f6nceki makalemizde ba\u015flad\u0131\u011f\u0131m\u0131z <em>MerhabaKinect<\/em> uygulamam\u0131z. Geli\u015ftirme ortam\u0131m\u0131z\u0131 haz\u0131rlarken olu\u015fturdu\u011fumuz MerhabaKinect uygulamam\u0131z\u0131 hat\u0131rlayacak olursak ana ekran kodumuz a\u015fa\u011f\u0131daki \u015fekildeydi;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">using System;\nusing System.Windows;\nusing System.Windows.Media;\nusing System.Windows.Media.Imaging;\nusing Microsoft.Research.Kinect.Nui;\n\nnamespace Com.Enterprisecoding.MerhabaKinect {\n    \/\/\/ &lt;summary>\n    \/\/\/ Interaction logic for MainWindow.xaml\n    \/\/\/ &lt;\/summary>\n    public partial class MainWindow : Window {\n        private Runtime kinect;\n\n        public MainWindow() {\n            InitializeComponent();\n\n            kinect = new Runtime();\n        }\n\n        private void Window_Loaded(object sender, RoutedEventArgs e) {\n}\n\nprivate void Window_Closed(object sender, System.EventArgs e) {\n            kinect.Uninitialize();\n        }\n    }\n}<\/pre>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"xml\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;Window x:Class=\"Com.Enterprisecoding.MerhabaKinect.MainWindow\"\n        xmlns=\"http:\/\/schemas.microsoft.com\/winfx\/2006\/xaml\/presentation\"\n        xmlns:x=\"http:\/\/schemas.microsoft.com\/winfx\/2006\/xaml\"\n        Title=\"Merhaba Kinect\" Height=\"580\" Width=\"710\" Loaded=\"Window_Loaded\" Closed=\"Window_Closed\">\n    &lt;Grid>\n        &lt;Image Height=\"240\" HorizontalAlignment=\"Left\" Margin=\"12,20,0,0\" Name=\"normalVideo\" Stretch=\"Fill\" VerticalAlignment=\"Top\" Width=\"320\" \/>\n        &lt;Image Height=\"240\" HorizontalAlignment=\"Left\" Margin=\"355,20,0,0\" Name=\"cmyk32Video\" Stretch=\"Fill\" VerticalAlignment=\"Top\" Width=\"320\" \/>\n\n        &lt;Image Height=\"240\" HorizontalAlignment=\"Left\" Margin=\"12,280,0,0\" Name=\"derinlikVideo\" Stretch=\"Fill\" VerticalAlignment=\"Top\" Width=\"320\" \/>\n        &lt;Image Height=\"240\" HorizontalAlignment=\"Left\" Margin=\"355,280,0,0\" Name=\"islenmis\" Stretch=\"Fill\" VerticalAlignment=\"Top\" Width=\"320\" \/>\n    &lt;\/Grid>\n&lt;\/Window><\/pre>\n\n\n\n<p>&nbsp;&nbsp; Ana ekran\u0131m\u0131zda yer alan girid i\u00e7erisinde 4 adet Image bile\u015feni bulunmakta. Bu bile\u015fenleri Kinect \u00fczerinden gelen verilerin i\u015flenmesi sonucu olu\u015fan g\u00f6r\u00fcnt\u00fcleri g\u00f6stermekte kullanaca\u011f\u0131z. Kinect \u00fczerinden kamera ve derinlik bilgisi ile i\u015flem yap\u0131lacaksa, ilk yap\u0131lmas\u0131 gereken yukar\u0131daki kodda Window_Load fonsiyonu i\u00e7erisinde Kinect \u00e7al\u0131\u015fma zaman\u0131na bu iki bilgiyi kullanarak i\u015flem yapaca\u011f\u0131m\u0131z\u0131 bildirmek olmal\u0131;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">kinect.Initialize(RuntimeOptions.UseDepth | RuntimeOptions.UseColor);<\/pre>\n\n\n\n<p>&nbsp;&nbsp; Ard\u0131ndan ise s\u0131ras\u0131yla VideoFrameReady, DepthFrameReady olay bildirimlerini dinlemeli ve video, derinlik ak\u0131\u015flar\u0131n\u0131 ba\u015flatmal\u0131y\u0131z;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">kinect.VideoStream.Open(ImageStreamType.Video, 2, ImageResolution.Resolution640x480, ImageType.Color);\nkinect.DepthStream.Open(ImageStreamType.Depth, 2, ImageResolution.Resolution320x240, ImageType.Depth);<\/pre>\n\n\n\n<p>&nbsp;&nbsp; Ana ekran\u0131m\u0131zda yer alan 4 image bile\u015feninden ilki do\u011frudan kameradan gelen veri ak\u0131\u015f\u0131n\u0131n g\u00f6r\u00fcnt\u00fclenmesinde kullan\u0131l\u0131rken, ikincisi CMYK32 format\u0131nda gelen ak\u0131\u015f\u0131 g\u00f6r\u00fcnt\u00fcleyecektir. Kinect SDK\u2019s\u0131 ile belki de yap\u0131labilecek i\u015flerden en kolay\u0131 gelen g\u00f6r\u00fcnt\u00fc ak\u0131\u015f\u0131n\u0131 g\u00f6r\u00fcnt\u00fclemektir. Bu i\u015flem i\u00e7in her bir video karesi haz\u0131r oldu\u011funda gelen g\u00f6r\u00fcnt\u00fc verisini imaja \u00e7evirmemiz yeterli olacakt\u0131r;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">private void kinect_VideoFrameReady(object sender, ImageFrameReadyEventArgs e) {\n    PlanarImage Image = e.ImageFrame.Image;\n\n    normalVideo.Source = BitmapSource.Create(Image.Width, Image.Height, 96, 96, PixelFormats.Bgr32, null, Image.Bits, Image.Width * Image.BytesPerPixel);\n    cmyk32Video.Source = BitmapSource.Create(Image.Width, Image.Height, 96, 96, PixelFormats.Cmyk32, null, Image.Bits, Image.Width * Image.BytesPerPixel);\n}<\/pre>\n\n\n\n<p>&nbsp;&nbsp; Her bir video karesi haz\u0131r oldu\u011funda Kinect \u00e7al\u0131\u015fma-zaman\u0131 olu\u015fan veriyi <strong>VideoFrameReady<\/strong> olay\u0131 \u00fczerinden bizlere bildirecektir. Gelen veriler i\u00e7erisinden g\u00f6r\u00fcnt\u00fcye ula\u015fmak i\u00e7in ise <em>e.ImageFrame.Image<\/em> yolunu takip etmemiz gerekecektir. Daha sonras\u0131nda, g\u00f6r\u00fcnt\u00fcn\u00fcn geni\u015flik ve y\u00fckseklik bilgileri ile g\u00f6r\u00fcnt\u00fc verisini kullanarak istedi\u011fimiz g\u00f6r\u00fcnt\u00fc format\u0131na \u00e7evirmemiz m\u00fcmk\u00fcn olacakt\u0131r. Yukar\u0131daki kod par\u00e7ac\u0131\u011f\u0131 g\u00f6r\u00fcnt\u00fc verisini ayn\u0131 anda BGR32 ve CMYK32 formatlar\u0131na d\u00f6n\u00fc\u015ft\u00fcr\u00fclerek a\u015fa\u011f\u0131daki ekran g\u00f6r\u00fcnt\u00fcs\u00fcnde oldu\u011fu gibi formumuzda g\u00f6r\u00fcnt\u00fclenecektir;<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2011\/08\/KinectVideoStream.png\"><img decoding=\"async\" src=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2011\/08\/KinectVideoStream_thumb.png\" alt=\"Kinect video ak\u0131\u015f\u0131n\u0131n formumuz \u00fczerinde g\u00f6r\u00fcnt\u00fclenmesi\"\/><\/a><\/figure>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; Bir sonraki ad\u0131m\u0131m\u0131z ise gelen derinlik bilgisi g\u00f6sterebilmek olmal\u0131. Kineck SDK \u00fczerinden al\u0131nan derinlik bilgisi Kinect \u00e7al\u0131\u015fma zaman\u0131n\u0131n ilklenme parametrelerine ba\u011fl\u0131 olarak iki farkl\u0131 formatta al\u0131nacakt\u0131r; yaln\u0131zca derinlik bilgisi (<strong>Depth<\/strong>) ya da derinlik ve oyuncu bilgisi (<strong>DepthAndPlayerIndex<\/strong>). Farkl\u0131 bu iki t\u00fcr verinin i\u015flenmesi de k\u00fc\u00e7\u00fck farkl\u0131l\u0131klar g\u00f6sterecektir. Derinlik bilgisinin i\u015flenmesinin yeni ba\u015flayanlar i\u00e7in karma\u015f\u0131k olabilece\u011fini g\u00f6z \u00f6n\u00fcne alarak ba\u015flang\u0131\u00e7 olarak sadece derinlik bilgisini alarak ilerlememiz daha do\u011fru olacakt\u0131r. Derinlik bilgisi bize <strong>DepthFrameReady<\/strong> olay bildirimi \u00fczerinden ve byte dizisi olarak iletilecektir. \u0130letilen bu byte dizisi bize her bir piksel i\u00e7in o piksel\u2019de bulunan en yak\u0131n nesnenin milimetre cinsinden uzakl\u0131\u011f\u0131n\u0131 verecektir. Byte dizisiyle iletilen piksel bilgisi, al\u0131nan g\u00f6r\u00fcnt\u00fcn\u00fcn sol \u00fcst k\u00f6\u015fesinden itibaren ve soldan-sa\u011fa, yukar\u0131dan-a\u015fa\u011f\u0131ya \u015fekilde ilerleyerek her bir piksele denk gelen uzakl\u0131k bilgisini iletecektir. Ak\u0131\u015f\u0131 sadece derinlik bilgisi olarak talep etmemiz durumunda dizi i\u00e7erisindeki her 16bitlik verinin low-order 12 bit\u2019i (0-11) bize ilgili pixel i\u00e7in kameraya en yak\u0131n nesnenin milimetre cinsinden uzakl\u0131\u011f\u0131n\u0131 verecektir, geriye kalan 4 bit ise kullan\u0131lmayacakt\u0131r. Bu yaz\u0131mda, ald\u0131\u011f\u0131m\u0131z derinlik bilgisini i\u015fleyerek sizlere gri tonlanm\u0131\u015f bir g\u00f6r\u00fcnt\u00fc olarak verece\u011fim. Nesnelerin kameraya yak\u0131nl\u0131k-uzakl\u0131klar\u0131na g\u00f6re tonlamalar\u0131 da de\u011fi\u015fkenlik g\u00f6sterecektir.<\/p>\n\n\n\n<p>&nbsp;&nbsp; Olay bildirimi ile gelen derinlik bilgisini alarak, g\u00f6r\u00fcnt\u00fc i\u015flemede oldu\u011fu gibi image nesnesi ve geni\u015flik\/y\u00fckseklik bilgilerini ald\u0131ktan sonra olu\u015fturaca\u011f\u0131m\u0131z g\u00f6r\u00fcnt\u00fcy\u00fc saklamakta kullanaca\u011f\u0131m\u0131z bir byte dizini olu\u015fturmal\u0131y\u0131z. G\u00f6r\u00fcnt\u00fcm\u00fcz ARGB format\u0131nda olaca\u011f\u0131ndan her bir pixel i\u00e7in 4 byte kullanmal\u0131y\u0131z (<em>Alfa, k\u0131rm\u0131z\u0131, ye\u015fil ve mavi kanallar\u0131 i\u00e7in birer byte<\/em>), dolay\u0131s\u0131yla da g\u00f6r\u00fcnt\u00fcm\u00fcz\u00fc tutacak olan byte dizisi <em>geni\u015flik * y\u00fckselik * 4<\/em> boyutunda olmal\u0131d\u0131r;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">var bitmap = new byte[yukseklik * genislik * 4];<\/pre>\n\n\n\n<p>&nbsp;&nbsp; Olu\u015fturaca\u011f\u0131m\u0131z g\u00f6r\u00fcnt\u00fcy\u00fc tutaca\u011f\u0131m\u0131z byte dizimizi haz\u0131rlad\u0131ktan sonra, art\u0131k her bir piksel i\u00e7in kaynak dizimizi d\u00f6nebiliriz.<\/p>\n\n\n\n<p>&nbsp;&nbsp; Bu a\u015famada dikkat edilmesi gereken bir nokta, bir \u00f6nceki paragrafta da belirtti\u011fim gibi derinlik bilgisinin 16bitlik par\u00e7alarda bize iletildi\u011fidir; fakat iletilen bu derinlik bilgisinin byte dizisi olarak geldi\u011fini g\u00f6z \u00f6n\u00fcne alacak olursak, veriyi 2 byte\u2019l\u0131k (<em>2 * 8bit = 16bit<\/em>) par\u00e7alar halinde incelememiz gerekti\u011fi a\u015fikar olacakt\u0131r. Yani her defas\u0131nda iletilen byte dizinin iki indeksi ile muhatap olmal\u0131y\u0131z.<\/p>\n\n\n\n<p>&nbsp;&nbsp; Dikkat edilmesi gereken bir ba\u015fka noktada, her defas\u0131nda muhatap olaca\u011f\u0131m\u0131z bu iki indeksin ters s\u0131ralanm\u0131\u015f oldu\u011fudur. Dolay\u0131s\u0131yla da i\u015fleme ba\u015flarken bit d\u00fczeyinde ufak bir kayd\u0131rma ve ard\u0131ndan da birle\u015ftirme yap\u0131yor olmam\u0131z gerekecektir.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">private void kinect_DepthFrameReady (object sender, ImageFrameReadyEventArgs e) {\n    var image = e.ImageFrame.Image;\n    var yukseklik = image.Height;\n    var genislik = image.Width;\n    var derinlikVerisi = image.Bits;\n\n    var bitmap = new byte[yukseklik * genislik * 4];\n\n    for (int y = 0, veriIndeksi = 0; y &lt; yukseklik; y++) {\n        var yukseklikOfseti = y * genislik;\n\n        for (var x = 0; x &lt; genislik; x++, veriIndeksi += 2) {\n            var gercekUzaklik = derinlikVerisi[veriIndeksi] | (derinlikVerisi[veriIndeksi + 1] &lt;&lt; 8);\n\n            \/\/....\n        }\n    }\n}<\/pre>\n\n\n\n<p>&nbsp;&nbsp; G\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi a\u015fa\u011f\u0131daki kod par\u00e7ac\u0131\u011f\u0131 ile ger\u00e7ek uzunluk bilgisine eri\u015febilmekteyiz;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">var gercekUzaklik = derinlikVerisi[veriIndeksi] | (derinlikVerisi[veriIndeksi + 1] &lt;&lt; 8);<\/pre>\n\n\n\n<p>&nbsp;&nbsp; Buradaki mant\u0131\u011f\u0131 san\u0131r\u0131m \u00f6rnek \u00fczerinden a\u00e7\u0131klamak daha kolay olacakt\u0131r. i\u015flemekte oldu\u011fumuz derinlik bilgisinin derinlikVerisi i\u00e7erisinde a\u015fa\u011f\u0131daki \u015fekilde oldu\u011funu d\u00fc\u015f\u00fcnelim;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">derinlikVerisi[veriIndeksi] = 135\n\nderinlikVerisi[veriIndeksi + 1]  = 15<\/pre>\n\n\n\n<p>Bu durumda muhatap oldu\u011fumuz derinlik verisi \u015fu \u015fekilde \u00e7\u00f6z\u00fcmlenmeli;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">derinlikVerisi[veriIndeksi] = 135 => 10000111\n\nderinlikVerisi[veriIndeksi + 1] = 15 => 1111<\/pre>\n\n\n\n<p>&nbsp; yani 111100000000 + 10000111 = <strong>11110000111<\/strong><\/p>\n\n\n\n<p>Bu hesaplamalar a\u015fina, oldu\u011fumuz \u015fekliyle \u00e7arpma, toplama ve \u00fcst i\u015flemleriyle yap\u0131labilirdi;<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>derinlikVerisi[veriIndeksi +1] *&nbsp; ( 2^8 )+ derinlikVerisi[veriIndeksi]<\/p><\/blockquote>\n\n\n\n<p>&nbsp; Fakat bilgisayarlar\u0131n ne \u015fekilde i\u015fledi\u011fini biliyorsan\u0131z bunun daha az maliyetli yolunun ayn\u0131 i\u015flemi bit d\u00fczeyinde ger\u00e7ekle\u015ftirmek oldu\u011funu tahmin edeceksinizdir. Dolay\u0131s\u0131yla da ayn\u0131 i\u015flemi bit d\u00fczeyinde ger\u00e7ekle\u015ftirmek hi\u00e7 \u015f\u00fcphesiz ki bize zaman kazand\u0131racakt\u0131r.<\/p>\n\n\n\n<p>&nbsp;&nbsp; Geldi\u011fimiz noktada art\u0131k ger\u00e7ek derinlik bilgisine ula\u015fm\u0131\u015f oluyoruz. S\u0131rada, bu bilgiyi kullanarak gri tonlamada bir piksel olu\u015fturmak kal\u0131yor. ARGB skalas\u0131nda gri tonda bir renk olu\u015fturabilmek i\u00e7in alfa kanal\u0131na 0 de\u011ferini verirken, di\u011fer kanallara (<em>k\u0131rm\u0131z\u0131, ye\u015fil ve mavi<\/em>) ayn\u0131 de\u011feri vermeliyiz. Tonlama i\u00e7in ise uzakl\u0131k bilgisi kullan\u0131labilir. ARGB skalas\u0131nda her bir kanal\u0131n 0 ile 255 de\u011fer aral\u0131\u011f\u0131nda olmas\u0131 gerekti\u011fini g\u00f6z \u00f6n\u00fcne al\u0131rsak uzakl\u0131k bilgisi de bu aral\u0131kta olmal\u0131d\u0131r. Bu hesaplama i\u00e7in a\u015fa\u011f\u0131daki kod par\u00e7ac\u0131\u011f\u0131 kullan\u0131labilir;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">var yogunluk = (byte)(255 - (255 * gercekUzaklik \/ 0x0fff));<\/pre>\n\n\n\n<p>&nbsp; G\u00f6r\u00fcld\u00fc\u011f\u00fc gibi burada ger\u00e7ek uzakl\u0131\u011f\u0131 olabilecek maksimum uzakl\u0131k de\u011feriyle oranlad\u0131ktan sonra 0-255 aras\u0131ndaki de\u011feri bulunuyor. Genelde ger\u00e7ek uzakl\u0131k verisinin 255\u2019ten \u00e7ok daha b\u00fcy\u00fck olaca\u011f\u0131n\u0131 (<em>yakla\u015f\u0131k 850-4000 milimetre aras\u0131<\/em>) g\u00f6z \u00f6n\u00fcne al\u0131rsak derinlik bilgisini gri tonlama i\u00e7in 0-255 de\u011fer aral\u0131\u011f\u0131na d\u00fc\u015f\u00fcrerek ayn\u0131 zamanda derinlikteki baz\u0131 detaylar\u0131 da kaybetti\u011fimizi not olarak d\u00fc\u015fmeliyim. Alternatif olarak RGB kanallar\u0131n\u0131n toplam\u0131 derinlik bilgisini temsil etmekte kullan\u0131labilir; ki bu durumda da renkli bir g\u00f6r\u00fcnt\u00fc al\u0131nacakt\u0131r. Konunun kolay anla\u015f\u0131labilmesi i\u00e7in yaz\u0131mda gri tonlamadan devam ediyor olaca\u011f\u0131m.<\/p>\n\n\n\n<p>&nbsp;&nbsp; Ard\u0131ndan, elde etti\u011fimiz bu yo\u011funluk bilgisini bitmap dizimizde yerle\u015ftirece\u011fimiz noktay\u0131 bularak ekliyoruz;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">var pikselIndeksi = ((genislik - x - 1) + yukseklikOfseti) * 4;\n\nbitmap[pikselIndeksi] = yogunluk; \/\/Mavi\nbitmap[pikselIndeksi + 1] = yogunluk; \/\/ Ye\u015fil\nbitmap[pikselIndeksi + 2] = yogunluk; \/\/ K\u0131rm\u0131z\u0131<\/pre>\n\n\n\n<p>&nbsp;&nbsp; Bu i\u015flemleri bir d\u00f6ng\u00fc i\u00e7erisinde her bir piksele ait derinlik bilgisi i\u00e7in ger\u00e7ekle\u015ftirmemiz sonras\u0131nda art\u0131k gri tonlamada g\u00f6sterebilece\u011fimiz bir g\u00f6r\u00fcnt\u00fcye ait byte dizimiz olacakt\u0131r. Son ad\u0131mda da bu diziyi BitmapSource\u2019a d\u00f6n\u00fc\u015ft\u00fcrerek Image nesnemizin kayna\u011f\u0131na atayabiliriz;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">derinlikVideo.Source = BitmapSource.Create(genislik, yukseklik, 96, 96, PixelFormats.Bgr32, null, bitmap, genislik * PixelFormats.Bgr32.BitsPerPixel \/ 8);<\/pre>\n\n\n\n<p>&nbsp;&nbsp; Toparlayacak olursak, \u015fimdiye kadar yapt\u0131\u011f\u0131m\u0131z i\u015flemlerde her bir piksel i\u00e7in ilgili derinlik verisini bularak basit bir ka\u00e7 i\u015flem ard\u0131ndan bu veriye kar\u015f\u0131l\u0131k bir gri tonlama hesaplad\u0131k ve ard\u0131ndan bu gri tonlanm\u0131\u015f pikselleri bir g\u00f6r\u00fcnt\u00fc kayna\u011f\u0131 haline getirdik. Fonksiyonumuz bir b\u00fct\u00fcn haline getirildi\u011finde a\u015fa\u011f\u0131daki gibi olacakt\u0131r;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">private void kinect_DepthFrameReady(object sender, ImageFrameReadyEventArgs e) {\n    var image = e.ImageFrame.Image;\n    var yukseklik = image.Height;\n    var genislik = image.Width;\n    var derinlikVerisi = image.Bits;\n\n    var bitmap = new byte[yukseklik * genislik * 4];\n\n    for (int y = 0, veriIndeksi = 0; y &lt; yukseklik; y++) {\n        var yukseklikOfseti = y * genislik;\n\n        for (var x = 0; x &lt; genislik; x++, veriIndeksi += 2) {\n            var gercekUzaklik = derinlikVerisi[veriIndeksi] | (derinlikVerisi[veriIndeksi + 1] &lt;&lt; 8);\n\n            var yogunluk = (byte)(255 - (255 * gercekUzaklik \/ 0x0fff));\n            var pikselIndeksi = ((genislik - x - 1) + yukseklikOfseti) * 4;\n\n            bitmap[pikselIndeksi] = yogunluk; \/\/Mavi\n            bitmap[pikselIndeksi + 1] = yogunluk; \/\/ Ye\u015fil\n            bitmap[pikselIndeksi + 2] = yogunluk; \/\/ K\u0131rm\u0131z\u0131\n        }\n    }\n\n    derinlikVideo.Source = BitmapSource.Create(genislik, yukseklik, 96, 96, PixelFormats.Bgr32, null, bitmap, genislik * PixelFormats.Bgr32.BitsPerPixel \/ 8);\n}<\/pre>\n\n\n\n<p>&nbsp;&nbsp; \u0130sterseniz gri tonlama d\u0131\u015f\u0131nda mavi ,ye\u015fil ya da k\u0131rm\u0131z\u0131 tonlarda bir g\u00f6r\u00fcnt\u00fc de olu\u015fturabilmeniz m\u00fcmk\u00fcn. Bunu yapabilmek i\u00e7in kodumuzu ilgili kanala 255 de\u011ferini atayacak \u015fekilde d\u00fczenlemek yeterli olacakt\u0131r. \u00d6rne\u011fin k\u0131rm\u0131z\u0131 kanal\u0131na 255 sabit de\u011ferini atayarak uygulamam\u0131z\u0131 \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131m\u0131zda kar\u015f\u0131m\u0131za a\u015fa\u011f\u0131daki gibi bir g\u00f6r\u00fcnt\u00fc gelecektir;<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2011\/08\/KinectDepthStream_thumb.png\" alt=\"Kinect derinlik ak\u0131\u015f\u0131n\u0131n formumuz \u00fczerinde g\u00f6r\u00fcnt\u00fclenmesi\"\/><\/figure>\n\n\n\n<p>&nbsp;&nbsp; E\u011fer yukar\u0131daki kodlamam\u0131zda salt derinlik bilgisi ak\u0131\u015f\u0131n\u0131 (<strong>Depth<\/strong>) talep etmek yerine derinlik ve oyuncu indeksi veri ak\u0131\u015f\u0131n\u0131 (<strong>DepthAndPlayerIndex<\/strong>) talep ediyor olsayd\u0131 ger\u00e7ek uzakl\u0131k a\u015fa\u011f\u0131daki \u015fekilde hesaplan\u0131yor olacakt\u0131r;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">var gercekUzaklik =  derinlikVerisi[veriIndeksi] >> 3 | derinlikVerisi[veriIndeksi + 1] &lt;&lt; 5;<\/pre>\n\n\n\n<p>&nbsp;&nbsp; \u0130lk byte sa\u011fa 3 bit kayd\u0131r\u0131larak oyuncu indeksi bilgisinin s\u0131f\u0131rlanmas\u0131 sa\u011flanmakta, ard\u0131ndan ikinci byte 5 bit sa\u011fa kayd\u0131r\u0131larak ilk byte ile toplanarak ger\u00e7ek uzakl\u0131k bilgisi elde edilmekte.<\/p>","protected":false},"excerpt":{"rendered":"<p>&nbsp;&nbsp; Kinect makale serisinde daha \u00f6nce sizlere Kinect donan\u0131m\u0131 ve yap\u0131labilecekleri hakk\u0131nda bilgiler payla\u015fm\u0131\u015f, ard\u0131nda da birlikte geli\u015ftirme ortam\u0131m\u0131z\u0131 Kinect i\u00e7in haz\u0131rlam\u0131\u015ft\u0131k. Bu makalemde, elimizi art\u0131k iyice koda bula\u015ft\u0131rarak Kinect kamera kullan\u0131m\u0131n\u0131n detaylar\u0131n\u0131 inceliyor olaca\u011f\u0131m. &nbsp;&nbsp; Makalemizde ele alaca\u011f\u0131m\u0131z \u00f6rne\u011fimiz bir WPF uygulamas\u0131 olacak, \u00f6nceki makalemizde ba\u015flad\u0131\u011f\u0131m\u0131z MerhabaKinect uygulamam\u0131z. Geli\u015ftirme ortam\u0131m\u0131z\u0131 haz\u0131rlarken olu\u015fturdu\u011fumuz MerhabaKinect uygulamam\u0131z\u0131&#8230;<\/p>\n<p><a class=\"read-more\" href=\"https:\/\/fatihboy.com\/en\/kinect-kamera-islemleri\/\">Read More<\/a><\/p>","protected":false},"author":1,"featured_media":9139,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[77,28],"tags":[27],"class_list":["post-9138","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-csharp","category-turkce","tag-kinect"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.7 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Kinect ile Kamera ve Derinlik \u0130\u015flemleri - Fatih Boy<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihboy.com\/en\/kinect-kamera-islemleri\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Kinect ile Kamera ve Derinlik \u0130\u015flemleri - Fatih Boy\" \/>\n<meta property=\"og:description\" content=\"&nbsp;&nbsp; Kinect makale serisinde daha \u00f6nce sizlere Kinect donan\u0131m\u0131 ve yap\u0131labilecekleri hakk\u0131nda bilgiler payla\u015fm\u0131\u015f, ard\u0131nda da birlikte geli\u015ftirme ortam\u0131m\u0131z\u0131 Kinect i\u00e7in haz\u0131rlam\u0131\u015ft\u0131k. Bu makalemde, elimizi art\u0131k iyice koda bula\u015ft\u0131rarak Kinect kamera kullan\u0131m\u0131n\u0131n detaylar\u0131n\u0131 inceliyor olaca\u011f\u0131m. &nbsp;&nbsp; Makalemizde ele alaca\u011f\u0131m\u0131z \u00f6rne\u011fimiz bir WPF uygulamas\u0131 olacak, \u00f6nceki makalemizde ba\u015flad\u0131\u011f\u0131m\u0131z MerhabaKinect uygulamam\u0131z. Geli\u015ftirme ortam\u0131m\u0131z\u0131 haz\u0131rlarken olu\u015fturdu\u011fumuz MerhabaKinect uygulamam\u0131z\u0131...Read More\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihboy.com\/en\/kinect-kamera-islemleri\/\" \/>\n<meta property=\"og:site_name\" content=\"Fatih Boy\" \/>\n<meta property=\"article:published_time\" content=\"2011-08-22T21:10:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2011\/08\/Kinect_DepthStream_thumb.png\" \/>\n\t<meta property=\"og:image:width\" content=\"209\" \/>\n\t<meta property=\"og:image:height\" content=\"208\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Fatih Boy\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Boy\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihboy.com\/kinect-kamera-islemleri\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihboy.com\/kinect-kamera-islemleri\/\"},\"author\":{\"name\":\"Fatih Boy\",\"@id\":\"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158\"},\"headline\":\"Kinect ile Kamera ve Derinlik \u0130\u015flemleri\",\"datePublished\":\"2011-08-22T21:10:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihboy.com\/kinect-kamera-islemleri\/\"},\"wordCount\":1545,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158\"},\"image\":{\"@id\":\"https:\/\/fatihboy.com\/kinect-kamera-islemleri\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/fatihboy.com\/wp-content\/uploads\/2011\/08\/Kinect_DepthStream_thumb.png\",\"keywords\":[\"Kinect\"],\"articleSection\":[\"C#\",\"T\u00fcrk\u00e7e\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihboy.com\/kinect-kamera-islemleri\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihboy.com\/kinect-kamera-islemleri\/\",\"url\":\"https:\/\/fatihboy.com\/kinect-kamera-islemleri\/\",\"name\":\"Kinect ile Kamera ve Derinlik \u0130\u015flemleri - Fatih Boy\",\"isPartOf\":{\"@id\":\"https:\/\/fatihboy.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/fatihboy.com\/kinect-kamera-islemleri\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/fatihboy.com\/kinect-kamera-islemleri\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/fatihboy.com\/wp-content\/uploads\/2011\/08\/Kinect_DepthStream_thumb.png\",\"datePublished\":\"2011-08-22T21:10:00+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihboy.com\/kinect-kamera-islemleri\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihboy.com\/kinect-kamera-islemleri\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/fatihboy.com\/kinect-kamera-islemleri\/#primaryimage\",\"url\":\"https:\/\/fatihboy.com\/wp-content\/uploads\/2011\/08\/Kinect_DepthStream_thumb.png\",\"contentUrl\":\"https:\/\/fatihboy.com\/wp-content\/uploads\/2011\/08\/Kinect_DepthStream_thumb.png\",\"width\":209,\"height\":208},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihboy.com\/kinect-kamera-islemleri\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/fatihboy.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Kinect ile Kamera ve Derinlik \u0130\u015flemleri\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihboy.com\/#website\",\"url\":\"https:\/\/fatihboy.com\/\",\"name\":\"Fatih Boy\",\"description\":\"Ki\u015fisel Web Sitesi\",\"publisher\":{\"@id\":\"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihboy.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158\",\"name\":\"Fatih Boy\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/fatihboy.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/5b3de123ad95a2ffe30b75a54cee98b55f65185c6d6805b35088a3d945f2feb4?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/5b3de123ad95a2ffe30b75a54cee98b55f65185c6d6805b35088a3d945f2feb4?s=96&d=mm&r=g\",\"caption\":\"Fatih Boy\"},\"logo\":{\"@id\":\"https:\/\/fatihboy.com\/#\/schema\/person\/image\/\"},\"sameAs\":[\"https:\/\/fatihboy.com\"],\"url\":\"https:\/\/fatihboy.com\/en\/author\/fatih\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Kinect ile Kamera ve Derinlik \u0130\u015flemleri - Fatih Boy","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihboy.com\/en\/kinect-kamera-islemleri\/","og_locale":"en_US","og_type":"article","og_title":"Kinect ile Kamera ve Derinlik \u0130\u015flemleri - Fatih Boy","og_description":"&nbsp;&nbsp; Kinect makale serisinde daha \u00f6nce sizlere Kinect donan\u0131m\u0131 ve yap\u0131labilecekleri hakk\u0131nda bilgiler payla\u015fm\u0131\u015f, ard\u0131nda da birlikte geli\u015ftirme ortam\u0131m\u0131z\u0131 Kinect i\u00e7in haz\u0131rlam\u0131\u015ft\u0131k. Bu makalemde, elimizi art\u0131k iyice koda bula\u015ft\u0131rarak Kinect kamera kullan\u0131m\u0131n\u0131n detaylar\u0131n\u0131 inceliyor olaca\u011f\u0131m. &nbsp;&nbsp; Makalemizde ele alaca\u011f\u0131m\u0131z \u00f6rne\u011fimiz bir WPF uygulamas\u0131 olacak, \u00f6nceki makalemizde ba\u015flad\u0131\u011f\u0131m\u0131z MerhabaKinect uygulamam\u0131z. Geli\u015ftirme ortam\u0131m\u0131z\u0131 haz\u0131rlarken olu\u015fturdu\u011fumuz MerhabaKinect uygulamam\u0131z\u0131...Read More","og_url":"https:\/\/fatihboy.com\/en\/kinect-kamera-islemleri\/","og_site_name":"Fatih Boy","article_published_time":"2011-08-22T21:10:00+00:00","og_image":[{"width":209,"height":208,"url":"https:\/\/fatihboy.com\/wp-content\/uploads\/2011\/08\/Kinect_DepthStream_thumb.png","type":"image\/png"}],"author":"Fatih Boy","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Fatih Boy","Est. reading time":"10 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihboy.com\/kinect-kamera-islemleri\/#article","isPartOf":{"@id":"https:\/\/fatihboy.com\/kinect-kamera-islemleri\/"},"author":{"name":"Fatih Boy","@id":"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158"},"headline":"Kinect ile Kamera ve Derinlik \u0130\u015flemleri","datePublished":"2011-08-22T21:10:00+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihboy.com\/kinect-kamera-islemleri\/"},"wordCount":1545,"commentCount":0,"publisher":{"@id":"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158"},"image":{"@id":"https:\/\/fatihboy.com\/kinect-kamera-islemleri\/#primaryimage"},"thumbnailUrl":"https:\/\/fatihboy.com\/wp-content\/uploads\/2011\/08\/Kinect_DepthStream_thumb.png","keywords":["Kinect"],"articleSection":["C#","T\u00fcrk\u00e7e"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihboy.com\/kinect-kamera-islemleri\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/fatihboy.com\/kinect-kamera-islemleri\/","url":"https:\/\/fatihboy.com\/kinect-kamera-islemleri\/","name":"Kinect ile Kamera ve Derinlik \u0130\u015flemleri - Fatih Boy","isPartOf":{"@id":"https:\/\/fatihboy.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/fatihboy.com\/kinect-kamera-islemleri\/#primaryimage"},"image":{"@id":"https:\/\/fatihboy.com\/kinect-kamera-islemleri\/#primaryimage"},"thumbnailUrl":"https:\/\/fatihboy.com\/wp-content\/uploads\/2011\/08\/Kinect_DepthStream_thumb.png","datePublished":"2011-08-22T21:10:00+00:00","breadcrumb":{"@id":"https:\/\/fatihboy.com\/kinect-kamera-islemleri\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihboy.com\/kinect-kamera-islemleri\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/fatihboy.com\/kinect-kamera-islemleri\/#primaryimage","url":"https:\/\/fatihboy.com\/wp-content\/uploads\/2011\/08\/Kinect_DepthStream_thumb.png","contentUrl":"https:\/\/fatihboy.com\/wp-content\/uploads\/2011\/08\/Kinect_DepthStream_thumb.png","width":209,"height":208},{"@type":"BreadcrumbList","@id":"https:\/\/fatihboy.com\/kinect-kamera-islemleri\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/fatihboy.com\/"},{"@type":"ListItem","position":2,"name":"Kinect ile Kamera ve Derinlik \u0130\u015flemleri"}]},{"@type":"WebSite","@id":"https:\/\/fatihboy.com\/#website","url":"https:\/\/fatihboy.com\/","name":"Fatih Boy","description":"Ki\u015fisel Web Sitesi","publisher":{"@id":"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihboy.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158","name":"Fatih Boy","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/fatihboy.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/5b3de123ad95a2ffe30b75a54cee98b55f65185c6d6805b35088a3d945f2feb4?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/5b3de123ad95a2ffe30b75a54cee98b55f65185c6d6805b35088a3d945f2feb4?s=96&d=mm&r=g","caption":"Fatih Boy"},"logo":{"@id":"https:\/\/fatihboy.com\/#\/schema\/person\/image\/"},"sameAs":["https:\/\/fatihboy.com"],"url":"https:\/\/fatihboy.com\/en\/author\/fatih\/"}]}},"brizy_media":[],"_links":{"self":[{"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/posts\/9138","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/comments?post=9138"}],"version-history":[{"count":0,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/posts\/9138\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/media\/9139"}],"wp:attachment":[{"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/media?parent=9138"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/categories?post=9138"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/tags?post=9138"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}