CodingMaker

Python 사진,영상 불러오기 본문

Python

Python 사진,영상 불러오기

메이커K 2018. 4. 5. 06:34

파이썬 설치

https://www.python.org/ 최신버전 설치하기


설치할 때 PATH에 경로 포함하도록 설정

Install Now 클릭

주소 길이 제한을 풀어준다.






CMD 입력후 명령 프롬프트를 실행한다.



pip install opencv-contrib-python




 

pip 파이썬 팩키지 관리자


IDLE 입력 찾기 실행하기


참고자료

http://opencv-python.readthedocs.io

https://opencv-python-tutroals.readthedocs.io




https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_gui/py_image_display/py_image_display.html#display-image

http://opencv-python.readthedocs.io/en/latest/doc/01.imageStart/imageStart.html



예제1

import cv2    

  

img = cv2.imread('cat.jpg')    

cv2.imshow('image',img)    

1. import cv2

OpenCV-Python 모듈을 추가

3. imread

cv2 모듈 안에 imread라는 함수로 이미지를 읽어 img 변수에 저장한다.

4. imshow

cv2 모듈의 imshow 함수로 img 변수에 저장된 이미지를 새 창을 띄워 보여준다. 이 창의 제목은 image이다.


cv2 모듈이 설치돼 있지 않으면 아래와 같은 메시지가 나온다.

 

정상적으로 실행되면 다음과 같은 화면이 나온다.

 


예제2

import cv2  

  

img_color = cv2.imread('smile.png', cv2.IMREAD_COLOR)    

img_gray = cv2.imread('smile.png ', cv2.IMREAD_GRAYSCALE)  

img_alpha = cv2.imread('smile.png ', cv2.IMREAD_UNCHANGED)  

cv2.imshow('color',img_color)    

cv2.imshow('gray',img_gray)  

cv2.imshow('alpha',img_alpha)  

cv2.IMREAD_COLOR : 컬러로 이미지를 읽고, 투명도는 무시한다. 기본 플래그. 1로 대체 가능

cv2.IMREAD_GRAYSCALE : 흑백으로 이미지를 읽음. 0으로 대체 가능

cv2.IMREAD_UNCHANGED : 알파 채널을 포함하여 이미지를 읽음. -1로 대체 가능


각각의 다르게 읽은 이미지는 어떤 차이가 있을까?


>>> img_color.shape

(84, 84, 3)

>>> img_alpha.shape

(84, 84, 4)

>>> img_gray.shape

(84, 84)


>>>

import 외부 함수를 불러들인다.

numpy 파이썬 수학 팩키지

imread 이미지 파일을 불러온다.

imshow(제목, 이미지) 창을 띄워 이미지를 보여준다.

waitkey(시간ms) 지정한 시간만큼 키 입력을 기다림

시간이 0이면 키 입력이 있을 때까지 계속 기다림

데이터 크기

 sys모듈의 sys.getsizeof 함수를 씁니다.

data type

type(img)



불러온 이미지는 어떻게 관리되는가?

img라는 변수는 어떤 형태일까?

따라 해보기 

>>> import cv2

>>> img = cv2.imread('cat.jpg')

>>> img

array([[[22, 33, 71],

        [23, 33, 73],

        [23, 32, 75],

        ...,

        [16, 27, 71],

        [15, 26, 70],

        [15, 26, 70]],


       [[22, 33, 71],

        [23, 33, 73],

        [23, 32, 75],

        ...,

        [16, 27, 71],

        [16, 27, 71],

        [16, 27, 71]],


       [[22, 33, 71],

        [22, 33, 71],

        [21, 31, 71],

        ...,

        [16, 28, 70],

        [16, 27, 71],

        [17, 28, 72]],


       ...,


       [[44, 56, 96],

        [44, 56, 96],

        [44, 57, 95],

        ...,

        [40, 55, 94],

        [40, 53, 91],

        [42, 54, 90]],


       [[44, 56, 96],

        [43, 55, 95],

        [43, 56, 94],

        ...,

        [44, 57, 95],

        [45, 57, 93],

        [45, 57, 91]],


       [[44, 56, 96],

        [44, 56, 96],

        [44, 57, 95],

        ...,

        [46, 59, 97],

        [47, 59, 95],

        [49, 59, 93]]], dtype=uint8)



사진 내용이 이게 전부인가? 데이터 크기 확인하기


사이즈 확인하기

>>> import sys

>>> sys.getsizeof(img)

858304

>>> type(img)

<class 'numpy.ndarray'>

>>> img.shape

(447, 640, 3)

 

import six

ModuleNotFoundError: No module named 'six’ 에러가 나오면

six 모듈을 설치

six 모듈을 설치해도 에러가 나면 six 모듈을 제거하고 재설치


예제3

import cv2  

from matplotlib import pyplot as plt  

  

img = cv2.imread('cat.jpg',0)  

plt.imshow(img, cmap = 'gray', interpolation = 'bicubic')  

plt.xticks([]), plt.yticks([])  # to hide tick values on X and Y axis  

plt.show()  


영상 다루기

https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_gui/py_video_display/py_video_display.html


import cv2  

  

cap = cv2.VideoCapture(0)  

  

while(True):  

    # Capture frame-by-frame  

    ret, frame = cap.read()  

  

    # Our operations on the frame come here  

    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)  

  

    # Display the resulting frame  

    cv2.imshow('frame',gray)  

    if cv2.waitKey(1) & 0xFF == ord('q'):  

        break  

  

# When everything done, release the capture  

cap.release()  

cv2.destroyAllWindows()