FastAPI와 OpenCV를 연동하여 영상 처리 서비스 개발하기

이 글에서는 FastAPI와 OpenCV를 함께 사용하여 영상 처리 서비스를 개발하는 방법에 대해 알아보겠습니다. FastAPI는 파이썬을 기반으로한 빠르고 간편한 웹 프레임워크로, OpenCV는 컴퓨터 비전 작업을 위한 라이브러리입니다.

Step 1: 프로젝트 설정

먼저, FastAPI를 사용하기 위해 프로젝트를 설정해야 합니다. 다음 명령어를 사용하여 FastAPI를 설치합니다.

pip install fastapi

또한, OpenCV도 설치해야 합니다. 다음 명령어를 사용하여 OpenCV를 설치합니다.

pip install opencv-python

Step 2: FastAPI 애플리케이션 생성

FastAPI 애플리케이션을 생성하기 위해 다음과 같이 코드를 작성합니다.

from fastapi import FastAPI
import cv2

app = FastAPI()

@app.get("/")
def read_root():
    return {"Hello": "World"}

@app.post("/process_image")
def process_image(file: bytes):
    # 받은 이미지 파일을 저장합니다.
    with open("image.jpg", "wb") as f:
        f.write(file)
        
    # OpenCV를 사용하여 이미지 처리 작업을 수행합니다.
    img = cv2.imread("image.jpg")
    # 이미지 처리 로직을 작성합니다.

    # 처리된 이미지를 반환합니다.
    return {"result": "success"}

위 코드에서 / 경로로 접속하면 “Hello World”라는 메시지가 반환됩니다. /process_image 경로로 POST 요청을 하면 이미지 파일을 받아서 OpenCV를 사용하여 처리한 후 결과를 반환합니다.

Step 3: 실행 및 테스트

FastAPI 애플리케이션을 실행하기 위해 다음 명령어를 사용합니다.

uvicorn main:app --reload

애플리케이션이 성공적으로 시작되면, http://127.0.0.1:8000에 접속하여 “Hello World” 메시지를 확인할 수 있습니다.

이제 영상 처리를 테스트하기 위해 POST 요청을 보내야 합니다. curl 명령어를 사용하거나 API 개발 툴을 사용하여 요청을 보낼 수 있습니다. 요청 예시는 다음과 같습니다.

POST /process_image HTTP/1.1
Host: localhost:8000
Content-Type: image/jpeg

<이미지 파일 바이너리 데이터>

이제 받은 이미지를 OpenCV를 사용하여 처리하고, 처리된 결과를 반환하는 서비스를 개발했습니다.

#FastAPI #OpenCV