수업(국비지원)/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