줘이리의 인생적기

CV - opencv(python) imread, copy 본문

공부/Computer Vision(py)

CV - opencv(python) imread, copy

줘이리 2020. 11. 28. 22:59
728x90

python으로 하는 opencv를 다시 시작해보도록 하겠습니다.

 

아주 대표적인 사진이죠.

lenna사진을 불러오는 imread 함수를 알아보고 flag도 알아보겠습니다.

lenna.bmp

import cv2

def function1():
    image = cv2.imread('lenna.bmp', cv2.IMREAD_COLOR) #default 값(1)
    #image = cv2.imread('lenna.bmp', cv2.IMREAD_GRAYSCALE) #흑백(0)
    #image = cv2.imread('lenna.bmp', cv2.IMREAD_UNCHANGED) #alpha channel까지 포함(-1)

    if image is None:
        print('Image load failed!')
        return

    print('image의 type은 ', type(image))
    print('image의 shape는 ', image.shape)

    if len(image.shape) == 2:
        print('image is a grayscale image')
    elif len(image.shape) == 3: #color BGR로 나타내주어야 하기 때문에 shape = 3
        print('image is a true color image')

    cv2.imshow('image window', image)
    cv2.waitKey()
    cv2.destroyAllWindows()

if __name__ == '__main__':
    function1()

 

이와 같은 결과가 나왔네요!

grayscale은 shape를 찍으면 값이 2개가 나옵니다.

------------------------------------------------------------

다음 예제는 image 복사 관련 예제입니다.

 

import cv2

def function2():
    image1 = cv2.imread('lenna.bmp')

    image2 = image1
    image3 = image1.copy()

    image1[:,:] = (255, 255, 255) #모든 픽셀 흰색으로 변경

    cv2.imshow('img1', image1)
    cv2.imshow('img2', image2)
    cv2.imshow('img3', image3)
    cv2.waitKey()
    cv2.destroyAllWindows()

if __name__ == '__main__':
    function2()

 

image1과 image2의 복사방법과 image1와 image3의 복사 방법이 달랐습니다.

그에 따른 결과가 이렇게 나왔네요.