수업(국비지원)/Python

[Python] opencv - 이미지 출력

byeolsub 2023. 4. 27. 14:25
 빅데이터 조건(3v)
   1. VOlumn : 대용량
   2. Velocity : 속도. 처리속도가 빠르다.
   3. Variety : 데이터의 다양성
        - 정형 데이터 : dbms, csv, excel파일 => pandas, numpy...
        - 반정형 데이터 : xml, html, json => BeautifulSoup, solenium, json...
        - 비정형 데이터 : 이미지, 동영상 => opencv

 

📌

# -*- coding: utf-8 -*-
"""
Created on Mon Dec 26 11:46:40 2022

@author: KITCOOP
2022-12-26.py
opencv 예제 : 이미지 처리를 위한 툴
 pip install opencv-python
"""
import cv2
title1, title2,title3 = "gray2gray","gray2color","gray2colora"
# imread : 이미지 파일을 읽기. 행렬 데이터로 변환. 
# cv2.IMREAD_GRAYSCALE : 흑백이미지로 처리
# cv2.IMREAD_COLOR : 컬러이미지로 처리
# cv2.IMREAD_UNCHANGED : 원래이미지로 처리     
gray2gray = cv2.imread("images/read_gray.jpg", cv2.IMREAD_GRAYSCALE)
gray2color = cv2.imread("images/read_gray.jpg", cv2.IMREAD_COLOR)
gray2colora = cv2.imread("images/read_gray.jpg", cv2.IMREAD_UNCHANGED)
if (gray2gray is None or gray2color is None) :
    raise Exception("영상파일 읽기 에러")
    
type(gray2gray) # 결과 => numpy.ndarray    
gray2gray.shape # (300, 400)
gray2gray.ndim # 2
gray2color.shape # (300, 400, 3)
gray2color.ndim # 3
gray2colora.shape # (300, 400)
gray2colora.ndim # 2
 
# imshow : 행렬데이터를 이미지로 출력.
cv2.imshow(title1, gray2gray)
cv2.imshow(title2, gray2color)
cv2.imshow(title3, gray2colora)    

gray2gray = cv2.imread("images/read_color.jpg", cv2.IMREAD_GRAYSCALE)
gray2color = cv2.imread("images/read_color.jpg", cv2.IMREAD_COLOR)
gray2colora = cv2.imread("images/read_color.jpg", cv2.IMREAD_UNCHANGED)
if (gray2gray is None or gray2color is None) :
    raise Exception("영상파일 읽기 에러")

gray2gray.shape # (300, 400)
gray2gray.ndim # 2
gray2color.shape # (300, 400, 3)
gray2color.ndim # 3
gray2colora.shape # (300, 400, 3)
gray2colora.ndim # 3

cv2.imshow(title1, gray2gray)
cv2.imshow(title2, gray2color)
cv2.imshow(title3, gray2colora)     

# 이미지 저장하기
image = cv2.imread("images/read_color.jpg", cv2.IMREAD_COLOR)
# cv2.IMWRITE_JPEG_QUALITY, 10 : 화질 설정
#                        0 ~ 100(95) : 숫자가 높으면 화질이 좋다
params_jpg = (cv2.IMWRITE_JPEG_QUALITY, 10) # 튜플, 리스트 모두 가능

# cv2.IMWRITE_PNG_COMPRESSION, 9 : png 파일의 압축레벨 설정
#                        0 ~ 9(3) : 압축레벨이 높을수록 이미지 용량이 작다.
params_png = [cv2.IMWRITE_PNG_COMPRESSION, 9] # 튜플, 리스트 모두 가능
# imwrite  :배열 데이터를 이미지 파일로 저장해주는 함수
cv2.imwrite("images/write_test0.png",image) # 204k 확장자에 맞춰서 이미지 등록
cv2.imwrite("images/write_test1.jpg",image) # 51k 확장자에 맞춰서 이미지 등록
cv2.imwrite("images/write_test2.jpg",image, params_jpg) # 6k 
cv2.imwrite("images/write_test3.jpg",image, params_png) # 171k 
cv2.imwrite("images/write_test4.bmp",image) # 352k
cv2.imwrite("images/write_test5.jpg",image,(cv2.IMWRITE_JPEG_QUALITY, 100)) # 90k