> ## Documentation Index
> Fetch the complete documentation index at: https://docs.t3gemstone.org/llms.txt
> Use this file to discover all available pages before exploring further.

# VXLIB

> Hızlandırma çipleri ile görüntü işleme fonksiyonların kullanımı

<Tip>VXLIB kullanan C7 tabanlı MCU projeleri, işlemcide yer alan DSP hızlandırıcı çekirdeği üzerinden çalışır.
Bu sayede görüntü işleme, filtreleme, özellik çıkarımı ve yoğun matris/piksel işlemleri donanımsal olarak
hızlandırılır ve gerçek zamanlı uygulamalarda performans önemli ölçüde artırılır.</Tip>

VXLIB, aşağıdaki temel görüntü işleme yeteneklerini sağlar:

* Görüntü filtreleme
* İstatistiksel bilgi çıkarımı
* Özellik tespiti
* Takip ve tanıma
* Düşük seviye piksel işleme

Bu çekirdekler, aşağıdaki uygulama alanlarında temel yapı taşı olarak kullanılabilir:

* Video Analitiği
* Video Gözetimi
* Otomotiv Görüntü İşleme
* Gömülü Görüntü İşleme
* Oyun ve Eğlence Görüntü Sistemleri
* Endüstriyel Makine Görüsü
* Tüketici Elektroniği
* Artırılmış Gerçeklik

## Örnek Proje

VXLIB kütüphanesinin entegrasyonunu referans alarak inceleyebileceğiniz çalışır bir örnek proje, T3 Gemstone
GitHub'daki `examples` reposu içerisinde yer alan `MCU` dizini altında sunulmaktadır.

Examples reposunun içinde `devbox shell` içindeyken aşağıdaki komutu çalıştırmalısınız.

```bash theme={"system"}
PROJECT=mcu task clean build
```

`examples/mcu/vxlib_demo/j722s-evm/c75ss0-0_freertos/ti-c7000` ve
`examples/mcu/vxlib_demo/j722s-evm/c75ss1-0_freertos/ti-c7000` içinde yer alan `vxlib_demo.out` dosyası
artık C7 çekirdeklerinde çalıştırlabilir hale gelmiştir.

Geliştirme kartı üzerinde çalıştırmak için
[Derlenmiş projenin U-Boot aşamasında çalıştırılması](/tr/boards/o1/peripherals/mcu#2-8-derlenmiş-projenin-u-boot-aşamasında-çalıştırılması) bölümündeki adımları takip edebilirsiniz.

Bu örnek projede üretilen çıktılar UART1 arabirimi üzerinden iletilmektedir.
İlgili pin bağlantılarına [Pinout dokümantasyonundan](/tr/boards/o1/peripherals/introduction#1-pinout) ulaşabilirsiniz.

VXLIB örnek projesinin çıktılarının terminal görüntüsü aşağıdaki gibidir.

```bash theme={"system"}
VXLIB Demo start

------------------------
 T3 Gemstone VXLIB Test              
------------------------

Non-Padded 3x3 Box Filter

Input Image

1, 2, 3, 4, 5, 
6, 7, 8, 9, 10, 
11, 12, 13, 14, 15, 
16, 17, 18, 19, 20, 
21, 22, 23, 24, 25, 

Output Image

6, 7, 8, 
11, 12, 13, 
16, 17, 18, 
```

## Mevcut MCU Projesine MakeFile Üzerinden Entegre Etme

VXLIB kütüphanesini mevcut MCU projenize entegre edebilmek için, SDK’ya ait kök dizin yolunu ve
kullanacağınız `.cpp` dosyasını tanımlamanız gerekmektedir.

```makefile theme={"system"}
SDK_ROOT_PATH := ${MCU_PLUS_SDK_PATH}/..

FILES_cpp := \
	vxlib_demo.cpp \
```

Ardından, include edilen klasörler listesine (`INCLUDES_common` değişkeni) VXLIB’in `src` ve `src/common`
dizinlerini aşağıdaki şekilde eklemelisiniz. VXLIB sürümünüze göre pathi değiştirmeniz gerekbilir.

```makefile theme={"system"}
	-I${SDK_ROOT_PATH}/vxlib_10_01_00_02/src \
	-I${SDK_ROOT_PATH}/vxlib_10_01_00_02/src/common \
```

Derleyiciye ait FLAGS parametrelerine (`CFLAGS_common` değişkeni), kütüphanenin doğru şekilde derlenebilmesi
için gerekli olan aşağıdaki tanımlamaları eklemeniz gerekmektedir.

```makefile theme={"system"}
-DMCU_PLUS_SDK \
-DBUILD_C7X \
-DSOC=j722s \
--silicon_version=7524 \
```

Kütüphane yol tanımlarına (`LIBS_PATH_common` değişkeni), VXLIB’in derlenmiş kütüphane dizinini eklemelisiniz.

```makefile theme={"system"}
-i${SDK_ROOT_PATH}/vxlib_10_01_00_02/lib/Release \
```

Dahil edilen kütüphane dosyaları listesine (`LIBS_common` değişkeni) VXLIB kütüphanesinin adını aşağıdaki gibi
eklemeniz gerekmektedir.

```makefile theme={"system"}
-lVXLIB_C7524.lib \
-lVXLIB_common_C7524.lib \
```

Projede .cpp dosyalarının derlenebilmesi için, `OBJS` ve `DEPS` tanımlarının yapıldığı satırın hemen altına
aşağıdaki eklemelerin yapılması gerekmektedir.

```makefile theme={"system"}
OBJS += $(FILES_cpp:%.cpp=%.obj)
DEPS := $(FILES:%.cpp=%.dpp)
vpath %.cpp $(FILES_PATH)

$(OBJDIR)/%.obj %.obj: %.cpp
	@echo  Compiling: j722s:c75ss0-0:freertos:ti-c7000 $(OUTNAME): $<
	$(CC) $(CFLAGS) $(INCLUDES) $(DEFINES) -ppd=$(OBJDIR)/$(basename $@).dpp -ppa -fr=$(OBJDIR)/ -fp=$<
```

Bu adımların tamamlanmasının ardından VXLIB kütüphanesi, projeye Makefile üzerinden başarıyla entegre
edilmiş olacaktır.

## Mevcut CPP Dosyasına VXLIB Entegrasyonu

Makefile üzerinden gerekli yapılandırmalar tamamlandıktan sonra, VXLIB kütüphanesini kullanabilmek için ilgili
header dosyasını projenizde yer alan .cpp dosyasına eklemeniz gerekmektedir. Bu adımın ardından, mevcut projeniz
içerisinde VXLIB’e ait fonksiyonları ve tanımlamaları doğrudan kullanabilirsiniz.

VXLIB kütüphanesinde yer alan modüllerin tamamına
[bu bağlantı üzerinden](https://software-dl.ti.com/jacinto7/esd/processor-sdk-rtos-j722s/10_01_00_04/exports/docs/vxlib_10_01_00_02/docs/user_guide/index.html) ulaşabilirsiniz.

```cpp theme={"system"}
#include <VXLIB_bufParams.h>
#include <VXLIB_types.h>
#include <vxlib.h>
```

Bu işlem ile birlikte VXLIB entegrasyonu tamamlanmış olacaktır.
