728x90

 

저번 포스팅에 설치를 완료했으니 이제 라이브러리를 이용해서 이미지에 적용시켜 볼 예정이다.

코드는 다음과 같다.

import albumentations as A
import cv2
import matplotlib.pyplot as plt

#Lambda function 전용 메소드
def cusmtom_fn(image, **kwargs):
    rose = cv2.imread('rose.bmp')
    h, w = image.shape[:2]
    rose = cv2.resize(rose, (h,w), interpolation=cv2.INTER_CUBIC)

    image = cv2.addWeighted(image,0.5, rose,0.5, 0)
    print('Lambda function Seuccess!')
    print(kwargs)
    return image

#증강 파이프라인 구축
transform = A.Compose([
    A.GaussianBlur(blur_limit=(3,7), sigma_limit=4, p=1),
    A.RandomRotate90(p=1),
    A.RandomGridShuffle(grid=(2,2), p=1),
    A.Lambda(name='Lambda', image = cusmtom_fn, p=1)

])

src = cv2.imread('lenna.bmp')
#augmentation
dst = transform(image= src)['image']
#출력
cv2.imshow('src', src)
cv2.imshow('dst', dst)

cv2.waitKey()
cv2.destroyAllWindows()

1. Albumentation을 import 해준다.

 

2. albumentations의 lambda 함수를 쓰기 위해 개인이 직접 메소드를 만들어서 정의한다. API는 다음과 같다.

- 이미지를 증강시킬 메소드를 만들었다면 image = 메소드명 을 하면 된다.

 

3. A.Compose() 안에 증강 파이프라인을 구축한다  API 상에 있는 transforms 인자에 배열형태로 집어넣는다.

 

4. 결과는 다음과 같다.  람다함수가 정상적으로 적용된걸 알 수 있다.

+ 추가적으로 def custom_fn에서 **kwargs인자에 뭐가 들어오나 궁금해서

print(kwargs)코드를 추가해봤는데 결과는 다음과 같이 영상의 크기를 딕셔너리 형태로 터미널에 출력해준다.

 

 

이상으로 다음엔 데이터셋에 적용시켜보기를 해보겠다.

728x90

+ Recent posts