Metadata-Version: 2.4
Name: cv-study-utils
Version: 0.1.3
Summary: Notebook-friendly study utilities for computer vision theory and practice snippets.
Author: CV Exam Helper
License-Expression: MIT
Keywords: computer-vision,exam,jupyter,colab
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Intended Audience :: Education
Classifier: Topic :: Education
Requires-Python: >=3.9
Description-Content-Type: text/markdown
Provides-Extra: clipboard
Requires-Dist: pyperclip>=1.8.2; extra == "clipboard"

# CV Study Utils

Небольшая библиотека для подготовки к экзамену по машинному зрению. Она выводит ответы на теоретические вопросы и готовые кодовые шаблоны для практических заданий прямо в Jupyter/Colab.

## Установка

Из этой папки:

```bash
pip install -e .
```

После загрузки проекта на GitHub в Colab/Jupyter можно будет ставить так:

```python
!pip install git+https://github.com/<your-user>/<your-repo>.git
```

После публикации на PyPI:

```python
!pip install cv-study-utils
```

## Использование

```python
from cv_study_utils import theory, practice, find

theory(5)                 # ответ на теоретический вопрос 5
theory(5, variant="short")# короткий вариант того же ответа
practice(3)               # код для практического задания 3
find("Canny")             # поиск по теории и практике
practice("границ")        # найти практику по фрагменту текста

theory(12, copy=True)     # скопировать ответ, если доступен clipboard
practice(15, copy=True)   # в ноутбуке появится кнопка Copy, если pyperclip недоступен
```

Локальная LLM для Jupyter без API-ключей:

```python
from cv_study_utils import ask_local, llm_status

llm_status()  # проверить, видит ли библиотека Ollama или LM Studio на localhost

ask_local("Объясни алгоритм Canny и напиши основные этапы")
ask_local("Дай код для сегментации изображения", context_kind="practice")
```

По умолчанию `ask_local(...)` обращается к Ollama на `http://localhost:11434`.
Если используешь LM Studio, запусти Local Server в LM Studio и вызывай так:

```python
ask_local(
    "Кратко объясни U-Net",
    engine="lmstudio",
    model="local-model",
)
```

Для локального режима компьютер должен быть включен, Jupyter должен запускаться на этом же компьютере, а Ollama или LM Studio должны быть заранее открыты с загруженной моделью. В Colab `localhost` указывает на сервер Google, поэтому локальная модель на твоём компьютере оттуда напрямую не видна.

Проверка буфера обмена:

```python
from cv_study_utils import clipboard_status

clipboard_status()
```

Для системного clipboard можно дополнительно поставить `pyperclip`. Если пакет уже опубликован, удобнее ставить с extra:

```python
!pip install "cv-study-utils[clipboard]"
```

Или отдельно:

```python
!pip install pyperclip
```

В Colab код выполняется на удаленной машине, поэтому системный clipboard через `pyperclip` часто недоступен. В этом случае `copy=True` покажет браузерную кнопку Copy и текстовое поле для ручного копирования.

Командная строка:

```bash
cvstudy theory 5
cvstudy practice 3 --copy
cvstudy find "Vision Transformer"
cvstudy llm-status
cvstudy ask "объясни Canny" --engine ollama
```

## Памятка команд

```python
pip install --upgrade --no-cache-dir cv-study-utils  # установить/обновить библиотеку
from cv_study_utils import theory, theory_short, practice, find  # основной импорт
theory()  # список всех теоретических вопросов
theory(5)  # полный ответ на вопрос 5
theory(5, variant="short")  # короткий ответ на вопрос 5
theory_short(5)  # короткий ответ через отдельную функцию
theory("Canny")  # поиск теории по тексту
theory(5, copy=True)  # скопировать ответ по теории
practice()  # список всех практических заданий
practice(3)  # код практического задания 3
practice("сегментация")  # поиск практики по тексту
practice(3, copy=True)  # скопировать код практики
find("U-Net")  # поиск по теории и практике
find("Canny", kind="theory")  # поиск только по теории
find("сегментация", kind="practice")  # поиск только по практике
```

```python
from cv_study_utils import all_theory, all_theory_variant, all_practice
all_theory()  # вывести всю полную теорию
all_theory_variant(variant="short")  # вывести всю короткую теорию
all_practice()  # вывести все практические шаблоны
```

```python
from cv_study_utils import clipboard_status, ask_local, llm_status
clipboard_status()  # проверить копирование
llm_status()  # проверить Ollama/LM Studio на localhost
ask_local("Объясни алгоритм Canny")  # спросить локальную Ollama
ask_local("Дай код для сегментации", context_kind="practice")  # LLM с контекстом практики
ask_local("Объясни CNN", context_kind="theory")  # LLM с контекстом теории
ask_local("Объясни U-Net", engine="lmstudio", model="local-model")  # спросить LM Studio
```

```bash
python -m cv_study_utils.cli theory 5  # CLI: полный ответ
python -m cv_study_utils.cli theory 5 --variant short  # CLI: короткий ответ
python -m cv_study_utils.cli theory --all  # CLI: вся полная теория
python -m cv_study_utils.cli practice 3  # CLI: практика 3
python -m cv_study_utils.cli practice --all  # CLI: вся практика
python -m cv_study_utils.cli find "Vision Transformer"  # CLI: поиск
python -m cv_study_utils.cli llm-status  # CLI: проверка локальной LLM
python -m cv_study_utils.cli ask "объясни Canny" --engine ollama  # CLI: спросить Ollama
```

## Что внутри

- `cv_study_utils/theory_answers.py` - 48 кратких ответов на теоретические вопросы.
- `cv_study_utils/theory_short.py` - короткий вариант теории для быстрого повторения.
- `cv_study_utils/theory_full.py` - расширенные ответы на теоретические вопросы.
- `cv_study_utils/theory_extras.py` - формулы, схемы архитектур и внешние источники для теории.
- `cv_study_utils/practice_solutions.py` - 15 готовых кодовых шаблонов для практических заданий.
- `cv_study_utils/llm.py` - локальные LLM-вызовы через Ollama или LM Studio на `localhost`.
- `content/theory_answers.md` и `content/practice_solutions.py` - человекочитаемые экспортные файлы, которые можно открыть отдельно.
- `Ответы_теория_МЗ2026.docx`, `Ответы_теория_коротко_МЗ2026.docx` и `Ответы_практика_МЗ2026.docx` - Word-версии материалов.
- `dist/` - готовые wheel/sdist артефакты для загрузки на PyPI.

## Источники

Основой являются файлы из папки экзамена и лекции `lecture_2` - `Lecture_8`. Для актуализации API и формулировок использованы официальные документации OpenCV, Pillow, Matplotlib, scikit-image, scikit-learn, PyTorch/torchvision, TensorFlow/Keras, Ultralytics YOLO, а также оригинальные статьи R-CNN/Fast R-CNN/Faster R-CNN, YOLO, SSD, U-Net, Mask R-CNN, GAN, DDPM, Transformer, ViT и image captioning.
