Skip to main content

cvflair

Bilgisayarlı görü tespitlerini üç satırda, hazır temalarla ekrana çizen ince bir katman.

Çizim işini supervision yapar; cvflair kamera döngüsünü ve tema ayarlarını üstlenir. Model bağımsızdır: supervision'ın Detections nesnesini üreten her kaynak (YOLO, MediaPipe, InsightFace veya özel bir model) tema tarafından çizilebilir.

cvflair demo

Aynı tespitler, üç tema. Animasyon tools/make_demo_gif.py ile üretildi — sentetik sahne, kamera gerekmiyor.

Durum: Faz 1 tamam (kamera döngüsü, üç tema, testler), Faz 2 başladı (model bağlama). Paket henüz PyPI'da yayınlanmadı.

Kurulum

Python 3.10 veya üzeri gerekir (bu alt sınır supervision'dan geliyor).

git clone https://github.com/kbycode/cvflair.git
cd cvflair
pip install -e .

Yayınlandıktan sonra: pip install cvflair

YOLO ile kullanmak için Ultralytics extra'sı: pip install -e ".[yolo]" (ayrıntı ve lisans notu için aşağıdaki Lisans bölümü).

Hızlı başlangıç

from cvflair import Camera

cam = Camera(source=0, theme="neon")
for frame in cam.stream():
    cam.show(frame)

Kamera açılır, kareler ayrı bir thread'de okunur, pencere q veya ESC ile kapanır — release() çağırmaya, while True kurmaya gerek yok.

Model verilmeyen bu akışta ekranda ham kare görünür: tema ancak ortada tespit varken çizim yapar. Temayı modelsiz, canlı görmek için: python examples/demo_fake_detections.py — kamera görüntüsü üzerine hareketli sahte kutular çizer ve temaları 3 saniyede bir değiştirir.

Modelle kullanım

stream()'e bir model verildiğinde her adım (kare, tespitler) çifti döndürür ve tema otomatik uygulanır:

from cvflair import Camera

cam = Camera(source=0, theme="neon")
for frame, detections in cam.stream(model="yolov8n.pt"):
    cam.show(frame, detections)

model üç şeyden biri olabilir:

Değer Anlamı
"yolov8n.pt" (ağırlık yolu) Ultralytics ile yüklenir — cvflair[yolo] gerekir
Hazır bir Ultralytics modeli YOLO(...) nesnesi doğrudan verilebilir, çıktısı dönüştürülür
Herhangi bir çağrılabilir sv.Detections döndüren kendi fonksiyonun — MediaPipe, InsightFace, özel model

Son seçenek kütüphaneyi model-agnostik yapan yer:

import supervision as sv
from cvflair import Camera

def detect(frame) -> sv.Detections:
    ...  # kendi modelin
    return sv.Detections(xyxy=..., class_id=..., confidence=...)

cam = Camera(source=0, theme="pastel")
for frame, detections in cam.stream(model=detect):
    cam.show(frame, detections)

Çıkarım bu döngüde çalışır, okuma thread'inde değil: bir kare işlenirken okuyucu kuyruktaki kareyi tazelemeye devam eder, dolayısıyla bir sonraki tur birikmiş kareyle değil en güncel kareyle başlar.

Ultralytics'e ek ayar geçirmek için UltralyticsDetector doğrudan kullanılabilir:

from cvflair import Camera, UltralyticsDetector
from ultralytics import YOLO

detector = UltralyticsDetector(YOLO("yolov8n.pt"), conf=0.4, device="cpu", classes=[0])
cam = Camera(source=0, theme="neon")
for frame, detections in cam.stream(model=detector):
    cam.show(frame, detections)

Etiket metni doğrudan da verilebilir: cam.show(frame, detections, labels=[...]). Pencere yönetimi uygulamaya aitse cam.annotate(frame, detections) yalnızca çizim yapar.

Temalar

Tema Görünüm
minimal ince beyaz çerçeve, sade etiket — ekran kaydı ve profesyonel demo için minimal
neon sınıf başına canlı renk, yuvarlak köşe, koyu hâle ile parlama hissi neon
pastel yumuşak tonlar, geniş yuvarlama, koyu etiket yazısı — atölye/projeksiyon pastel

Yol haritasındaki cyberpunk ve hud temaları Faz 2'de gelecek.

Özel bir tema, Theme doğrudan kurulup Camera'ya verilerek tanımlanır:

import supervision as sv
from cvflair import Camera, Theme

my_theme = Theme(
    name="my-theme",
    palette=sv.ColorPalette.from_hex(["#39FF14", "#FF00E5"]),
    box_style="corner",     # "box" | "round" | "corner"
    thickness=2,
    glow=True,
    text_scale=0.6,
)
cam = Camera(source=0, theme=my_theme)

Temaları görmenin iki yolu:

python examples/demo_fake_detections.py   # canlı kamera + hareketli sahte tespitler
python examples/theme_preview.py          # kamerasız, her temayı bir PNG'ye çizer

API özeti

Üye Ne yapar
Camera(source, theme, width, height, fps, window_name, capture_factory) Kaynağı ve temayı bağlar; kamerayı henüz açmaz
cam.start() / cam.close() Cihazı açar ve okuma thread'ini başlatır / her şeyi bırakır
cam.stream(timeout, model=None) Kareleri üretir; model verilirse (kare, tespitler) çifti. İlk kullanımda start(), bitince close() eder
cam.read(timeout) En güncel tek kareyi döndürür, kaynak bittiyse None
cam.show(frame, detections, labels) Temayı uygular, pencerede gösterir; çıkış istendiğinde False döner
cam.annotate(frame, detections, labels) Sadece çizer, pencere açmaz
cam.theme Okunur/yazılır; cam.theme = "minimal" çalışır
cam.frames_read / cam.frames_dropped Okunan ve tüketici yetişemediği için atılan kare sayısı
get_theme(ad) / available_themes() Tema adını çözer / mevcut adları listeler
UltralyticsDetector(model, **kwargs) Ultralytics çıktısını sv.Detections'a çevirir; conf, iou, device gibi ayarları taşır
resolve_detector(model) Ağırlık yolu / model / çağrılabilir → detektör; stream() bunu kullanır

Camera bağlam yöneticisi olarak da kullanılabilir: with Camera() as cam: ...

Nasıl çalışıyor

  • Kareler ayrı thread'de okunur. Okuyucu, tüketiciyi beklemez.
  • Kuyruk tek slotlu. Yeni kare gelince bekleyen eski kare düşürülür (frames_dropped ile sayılır). Böylece işleme yavaşladığında gecikme birikmez; ekranda hep en güncel kare olur.
  • Annotator'lar bir kere kurulur. Theme nesnesi oluşturulurken supervision annotator'ları hazırlanır ve her karede yeniden kullanılır — döngü içinde annotator kurmak bu tür işlerde en sık görülen gereksiz maliyettir.
  • Çizim matematiği yeniden yazılmadı. Her piksel supervision tarafından çiziliyor; cvflair sadece yapılandırma ve akış katmanı.
  • Model paketin dışında. stream(model=...) verilen şeyi bir çağrılabilire çevirir; ağırlıklar ilk yinelemede yüklenir. Hiçbir model kodu veya ağırlığı pakete gömülü değil.

Geliştirme

python -m venv .venv
.venv\Scripts\activate
pip install -e ".[dev]"
pytest
ruff check .

Testler kamera gerektirmez: Camera'ya capture_factory üzerinden sahte bir VideoCapture verilir, temalar da sentetik kareler üzerinde doğrulanır.

Dokümantasyon görselleri de kamerasız üretilir:

python tools/make_demo_gif.py    # docs/demo.gif
python examples/theme_preview.py # examples/output/theme-*.png

Yol haritası

Faz İçerik Durum
Faz 1 Kamera döngüsü, minimal/neon/pastel temaları, README, demo GIF, testler tamam
Faz 2 Model bağlama (stream(model=...)) tamam
Faz 2 PyPI paketi, Türkçe dokümantasyon sitesi, tema playground, cyberpunk/hud sırada
Faz 3 GitHub Actions (lint + test), issue şablonları, örnek galerisi planlandı

Lisans

MIT — bkz. LICENSE. Bağımlılıkların hepsi izin verici lisanslı (supervision MIT, opencv-python Apache 2.0, numpy BSD).

YOLO ağırlıkları veya Ultralytics kodu bu pakete gömülü değildir; Ultralytics'in kullanılması hâlinde AGPL-3.0 koşulları onu kullanan projenin sorumluluğundadır.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cvflair-0.2.0.tar.gz (26.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

cvflair-0.2.0-py3-none-any.whl (14.5 kB view details)

Uploaded Python 3

File details

Details for the file cvflair-0.2.0.tar.gz.

File metadata

  • Download URL: cvflair-0.2.0.tar.gz
  • Upload date:
  • Size: 26.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.2

File hashes

Hashes for cvflair-0.2.0.tar.gz
Algorithm Hash digest
SHA256 441c1ba1a5270470cd504bfb6389daa4412bf3d45c2aa6432af003cf3323eef7
MD5 785feb9677cfe95b24ba8822b8b20456
BLAKE2b-256 ac0747e8426318e16f5492ac453582bc7f58f2698a77139c65fb200700548362

See more details on using hashes here.

File details

Details for the file cvflair-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: cvflair-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 14.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.2

File hashes

Hashes for cvflair-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9a9f027a53af24640ec9820d218adf41f2f013f22be53a0f60d4a9d6fc303c76
MD5 0472c5ce521f6ecdc4c26877a2a50620
BLAKE2b-256 84eea635b499fd75422a1a46aa13cecdc7f2337cb43890ee6391c35953e3158d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page