The image compression project looks tiny on purpose. One script, three helpers, one sample image. That constraint forced me to understand what `IMWRITE_JPEG_QUALITY` actually does — instead of wrapping a library and calling it a day.
Encode, decode, write
Compression went through `cv2.imencode` / `imdecode` with an explicit quality parameter. The demo set quality to 20 on a 2.73 MB sample and landed an 811 KB file — roughly a 70% cut. Seeing the bytes change made the trade-off concrete.
Resize and annotate are part of the same lesson
`INTER_AREA` for downscaling, Hershey text for labels, a filled rectangle for shapes. None of that is glamorous. All of it is the vocabulary you need before you build a real pipeline or a UI around OpenCV.
Small projects still need artifacts
I checked compressed, resized, and annotated outputs into the repo. Screenshots and file sizes beat a README that only says “it works.” If I cannot show the before/after, I do not trust the claim yet.
