Python repository for Computer Vision coursework assignments.
Requires uv.
uv syncThis creates .venv/ and installs all dependencies.
uv run python scripts/hw01/run_q1.pyExpected output: a summary of loaded shapes and paths. The reconstruction algorithm is not implemented yet — that is intentional.
uv run ruff check .
uv run pytest -qdata/hwXX/ — raw assignment data (never overwrite)
notebooks/hwXX/ — submission-oriented Jupyter notebooks
src/cv_homeworks/ — importable Python package
hwXX/ — assignment-specific modules
scripts/hwXX/ — runnable scripts for each question
outputs/hwXX/ — generated outputs (gitignored, .gitkeep placeholders)
tests/hwXX/ — pytest tests
docs/hwXX/ — implementation plans and notes
| Path | Contents |
|---|---|
data/hw01/q1_house/ |
House dataset: two views, camera matrices, matched points, reference outputs |
data/hw01/q2_vase/ |
Vase GIF for Q2 |
File-type note: house_1.jpg and house_2.jpg are PNG images despite the
.jpg extension. The raw filenames are preserved. Image loaders use Pillow
(content-based decoding) so the mismatch is transparent.
Reference outputs (matches_connected.jpg, matches_xy_projected.jpg,
reconstruction.gif) live in data/hw01/q1_house/ and must not be overwritten.
Generated outputs go to outputs/hw01/q1/.
| Path | Status |
|---|---|
notebooks/hw01/q1_metric_reconstruction.ipynb |
Template — data loading ready, algorithm TODO |
notebooks/hw01/q2_sfm_novel_view_synthesis.ipynb |
Placeholder |
Generated files go under outputs/ (gitignored). Only .gitkeep placeholders
are tracked so the directory structure exists in a fresh clone.
| Component | Status |
|---|---|
| Repository scaffold | Done |
| uv project + deps | Done |
| Path constants | Done |
| Q1 data-loading infrastructure | Done |
| Q1 algorithm (triangulation, GIF, etc.) | Not implemented |
| Q2 | Not implemented |
- Open the repository root in PyCharm.
- Run
uv syncin a terminal. - Select the interpreter at
.venv/bin/python(Settings → Project → Python Interpreter → Add → Existing →.venv/bin/python). - Mark
src/as a Sources Root if PyCharm does not infer it automatically (right-clicksrc/→ Mark Directory as → Sources Root). - Run tests with
uv run pytest -q. - Run lint with
uv run ruff check .. - Run scripts from the repository root, for example:
uv run python scripts/hw01/run_q1.py