Skip to main content

Computer vision utilities for dataset visualization

Project description

haechan

Computer vision utilities for dataset visualization.

Installation

pip install haechan

Optional external tools:

brew install ffmpeg    # vid_resize, save_video에 필요
brew install gifsicle  # save_gif optimize=True에 필요

Usage

blend

세그멘테이션 마스크를 이미지에 오버레이합니다.

import numpy as np
from haechan import blend

img  = np.array(Image.open("image.jpg"))   # H x W x 3, uint8
mask = np.array(Image.open("mask.png"))    # H x W, int (class index)
fg   = mask > 0                            # 전경 boolean mask

blended = blend(img, mask, fg)

label

마스크 중심에 클래스 이름 태그를 그립니다. 배경색 밝기에 따라 텍스트 색을 자동 선택하고 stroke를 추가해 어떤 이미지에서도 가독성을 보장합니다. 마스크 bbox에 텍스트가 들어가지 않으면 폰트 크기를 자동으로 줄입니다.

from PIL import Image, ImageDraw
from haechan import label

pil_img = Image.fromarray(blended)
draw    = ImageDraw.Draw(pil_img)

label(draw, mask == 1, text="person", color=(255, 0, 0))

mask와 이미지 크기가 달라도 자동으로 좌표를 스케일링합니다.

img_resize

이미지와 마스크를 함께 리사이즈합니다. aspect ratio를 유지하며 긴 쪽을 max_size 이하로 줄입니다.

from haechan import img_resize

img, mask = img_resize(img, mask, max_size=640)

# 마스크 없이
img, = img_resize(img, max_size=480)

# boxes도 함께 스케일링
img, mask = img_resize(img, mask, boxes=boxes, max_size=480)

vid_resize

비디오 파일을 프레임 리스트로 디코딩하면서 리사이즈합니다. ffmpeg가 필요합니다.

from haechan import vid_resize

frames, mask_seq = vid_resize("input.mp4", mask_seq, max_size=480)

.mp4, .avi, .mov 등 ffmpeg가 지원하는 모든 포맷을 입력으로 받습니다.

save_img

from haechan import save_img

save_img(blended, "output.jpg")   # numpy array 또는 PIL Image
save_img(pil_img, "output.png")

save_gif

from haechan import save_gif

frames = [Image.open(f"frame{i}.png") for i in range(10)]

save_gif(frames, "output.gif", duration=200)

# gifsicle로 후처리 압축 (--lossy=80 --optimize=3)
save_gif(frames, "output.gif", duration=200, optimize=True)

save_video

PIL Image 리스트를 MP4로 저장합니다. ffmpeg가 필요합니다.

from haechan import save_video

save_video(frames, "output.mp4", fps=10)

palette / get_colors

from haechan import palette, get_colors

colors = palette()                  # 254색 고정 팔레트, np.ndarray shape (254, 3) uint8
colors = get_colors(num_classes=80) # 원하는 클래스 수만큼

License

MIT

Project details


Download files

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

Source Distribution

haechan-0.2.0.tar.gz (1.2 MB view details)

Uploaded Source

Built Distribution

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

haechan-0.2.0-py3-none-any.whl (1.2 MB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: haechan-0.2.0.tar.gz
  • Upload date:
  • Size: 1.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.0

File hashes

Hashes for haechan-0.2.0.tar.gz
Algorithm Hash digest
SHA256 d134370bef5f8661c7a86a38b83b9a55eac12790c20de29476ebea50b640b13a
MD5 bc55a558a5b99cf09c52c1c06d1cb93b
BLAKE2b-256 4af801d1ec0cf01ee0ada67faf9e2e46b808eb7e795fd4cd26ff075d54c5e2f0

See more details on using hashes here.

File details

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

File metadata

  • Download URL: haechan-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.0

File hashes

Hashes for haechan-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 689cb2ccd227f585dafcb92a26592095fae334f917b9aa23a065f75f8fea9fa8
MD5 836c6a02b9c7e297d9bedd108d930a49
BLAKE2b-256 aa1aec55c1372d3b6647c9f4af22987f0ccb199f9aa403ea3d396530e035de73

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