사진, 데이터 저장

카메라에서 읽어들인 이미지를 파일로 저장하는 기능이다.

1. 카메라를 파일로 저장

화면에 표시된 카메라의 영상을 이미지 파일로 저장한다.

from helloai import *

wnd = Window("wnd")

# 이미지를 저장할 폴더 경로. 폴더는 미리 만든다.
rock = "C:\\Users\\user\\Downloads\\rock"

# 저장될 이미지의 파일명에 번호를 붙이기 위한 변수 
no = 0

# 카메라 객체
camera = Camera()

def loop():
    global no
    # 카메라에서 이미지를 얻어온다.
    img = camera.read()

    # 키보드 's' 키가 눌러지면 
    if is_pressed('s'):
        if img is not None:
            img.save(f"{rock}\\image_{no}.png")
            # 저장된 이미지의 장수를 삽입
            img = img.text((5,5), text=str(no), size=40, color=(255, 0, 0))
            no = no + 1

    # 윈도우에 이미지 표시 
    wnd.show(img)

# ---------------------------------------
# For HelloAI
# ---------------------------------------
if __name__ == "__main__":
    run()

2. 랜드마크 정보를 csv파일로 저장

인식한 랜드마크 정보를 csv파일로 저장하는 코드를 작성한다.

import csv
from helloai import *

wnd = Window('wnd')

# 카메라 객체 생성 
camera = Camera()

# 손 검출을 위한 객체 생성 
hands = HandsDetector()

# CSV파일로 저장할 객체 생성
file_path = "C:\\Users\\user\\Downloads\\rock\\landmarks.csv"
csv_writer = CSVWriter(file_path)

# 메인 루프 함수
def loop():
    img = camera.read()

    # 손 검출해서 랜드마크 검출 
    img, landmarks = hands.process(img, draw=True)
    
    if len(landmarks) > 0:
        # 랜드마크(다중 리스트)를 1차원 리스트로 만든다. 
        lst = flatten_list(landmarks)
        # 한 행의 데이터를 기록한다. 
        csv_writer.writerow(lst)

    wnd.show(img)

# ---------------------------------------
# For HelloAI
# ---------------------------------------
if __name__ == '__main__':
    run()

Last updated