일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- track bar
- 딥러닝
- 파이썬 컴퓨터비전
- weighted sum
- 그레이 스케일
- Docker Container
- 픽셀연산
- 이미지 히스토그램
- 도커
- 파이썬 시각화
- 시각화 기초
- 컴퓨터 비전
- docker
- event-mouse
- 이미지 시각화
- AI
- 영상 이진화
- abs diff
- 인공지능
- 영상에 도형
- Computer-vision
- 파이썬 기초
- 공대아저씨
- 논문리뷰
- equalize
- 영상클립 캡처
- matplotlib
- 모션감지 카메라
- binarization
- 도커 컨테이너
- Today
- Total
공부하는 아저씨의 IT 공방
파이썬 시각화 공부 1일(기존 컬러 이미지 흑백 변환, Matplotlib 사용) 본문
안녕하세요 공대아저씨 입니다 :)
오늘은 파이썬 시각화 공부 1일차 입니다.
오늘 공부할 내용은 파이썬 시각화 작업을 위한 기본적인 내용으로
기존 컬러 이미지를 흑백으로 변환하거나, bgr을 rgb로 바꾸는 방법에 대해서 한번 알아보겠습니다.
실습에 앞서, 먼저 필요한 패키지를 설치해주겠습니다.
저는 주피터 환경에서 하기 때문에, 여러분들 편한 환경에서 동일한 방법으로 구동해주시면 됩니다.
pip install opencv-python # 오픈 CV 설치
import cv2
print (cv2.__version__) # CV 버전 확인
cv2 패키지를 import 시키고, 현재 설치된 cv2의 버전을 확인해보니 저는 4.6.0이 나오네요.
가끔 버전에 따라서 코드가 달라지는 경우가 있으니 참고하기 바랍니다.
1일차 실습 시작
이미지는 본인이 갖고있는 아무런 이미지를 사용해도 무방합니다. 혹시 모르니 제가 사용한 이미지도 올려드릴게요 :)
# 이미지 로드 및 출력
import cv2
import sys
#img = cv2.imread('./img/3.jpeg') #컬러사진 이미지를 어디서 읽어올지에대한 경로
img = cv2.imread('./img/3.jpg', cv2.IMREAD_GRAYSCALE) # 회색조 이미지를 어디서 읽어올지에대한 경로
#회색조로 출력할떄는 IMREAD_GRAYSCALE 입력 필수
if img is None :
print('Image load failed!')
sys.exit()
cv2.namedWindow('image') #주피터 노트북에 이미지를 출력하는게 아니라 새로운 윈도우 창을 띄워서 이미지를 출력
cv2.imshow('image', img) #image 이름으로 윈도우 출력
cv2.waitKey() #새로운 키가 입력될때 까지 대기
cv2.destroyAllWindows() # 키입력되면 입력되었던 창을 닫아라
print(img[50:51])
이렇게 되면 내가 입력한 이미지 데이터에 대한 슬라이스를 수행하게 됩니다.
즉, 이미지의 51번째 행(0부터 시작하는 인덱스)을 선택하고 해당 행에 있는 픽셀 값을 출력합니다.
결과는 이러한 형태로 나오게됩니다. 모든 이미지는 0~255 사이의 값을 갖는데,
이 이미지의 51번째 행의 값은 이렇게 나오네요
[[255 255 255 255 255 255 255 255 253 253 253 253 253 253 253 253 252 252
252 252 252 252 252 252 253 253 253 253 252 252 252 251 242 247 247 235
208 173 140 121 113 102 95 98 103 101 97 95 95 92 89 89 92 94
94 93 95 93 89 86 84 84 85 86 94 94 94 95 96 97 98 98
99 94 93 97 94 85 81 83 94 96 99 103 107 112 115 117 120 116
113 114 117 116 109 103 92 94 104 115 109 110 119 103 61 7 14 6
5 4 13 51 88 81 79 83 82 80 91 107 100 106 110 106 95 83
75 72 75 75 77 78 77 76 82 90 99 107 113 110 102 100 108 119
123 124 130 140 152 168 188 202 233 244 255 255 255 254 254 255 253 253
253 253 254 254 254 254 254 254 254 254 254 254 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255]]
만약, 이미지의 변수의 크기를 보고싶다면, 다음 코드를 입력하면 됩니다.
print(img.shape) # 이미지라는 변수의 크기 #[B, G, R순]
(225, 225)
이 숫자의 의미는 225의 높이 픽셀, 225 너비 픽셀임을 의미합니다.
1. 기존 컬러 이미지를 흑백으로 변환 후 저장 하기
import cv2
img = cv2.imread('./img/3.jpg', cv2.IMREAD_COLOR) # 바나나 사진 칼라로 출력
cv2.imshow('img', img)
gray_img = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)
cv2.imshow('img2', gray_img)
cv2.imwrite('./img/new_banana.jpg', gray_img)
cv2.waitKey() #새로운 키가 입력될때 까지 대기
cv2.destroyAllWindows() # 키입력되면 입력되었던 창을 닫아라
바나나 사진을 출력해보겠습니다. 그러면 화면에 바나나 사진이 나타날 겁니다.
import cv2
img = cv2.imread('./img/3.jpg') # 바나나 사진 출력
cv2.namedWindow('img_window', cv2.WINDOW_NORMAL) # 사진창 크기 조절하도록 그러나 비율유지는 안됨.
cv2.imshow('img_window', img)
cv2.waitKey() #새로운 키가 입력될때 까지 대기
cv2.destroyAllWindows() # 키입력되면 입력되었던 창을 닫아라
요건 형태로 한번 불러보았습니다. 불러온 이미지의 크기 변환이 가능합니다. 다만, 비율유지는 안됩니다.
2. Matplotlib 시작 : 함수의 다양한 2차원, 3차원 그래프 그리기 기능 제공
먼저 Matplotlib 패키지 설치를 해보겠습니다.
pip install matplotlib
그 다음 이미지를 불러서, bgr을 rgb로 변경하
import cv2
import matplotlib.pyplot as plt
im_CV2 = cv2.imread('./img/3.jpg')
im_MPL = cv2.cvtColor(im_CV2, cv2.COLOR_BGR2RGB) #bgr을 rgb로 변경
im_GRY1 = cv2.cvtColor(im_CV2, cv2.COLOR_BGR2GRAY) #원본이미지를 그레이 스케일로
im_GRY2 = cv2.cvtColor(im_MPL, cv2.COLOR_BGR2GRAY) #rgb이미지를 그레이 스케일로
plt.figure(figsize = (10,5))
plt.subplot(1,4,1) # BGR 이미지
plt.imshow(im_CV2)
plt.subplot(1,4,2) # RGB로 바꾼 이미지
plt.imshow(im_MPL)
plt.subplot(1,4,3)
plt.imshow(im_GRY1) #그레이로 색상을 바꾼 뒤 그림으로 출력
plt.subplot(1,4,4)
plt.imshow(im_GRY2)
plt.show()
다른 이미지를 적용해보겠습니다.
import cv2
import matplotlib.pyplot as plt
im_CV2 = cv2.imread('./img/fruits.jpg')
im_MPL = cv2.cvtColor(im_CV2, cv2.COLOR_BGR2RGB) #bgr을 rgb로 변경
im_GRY1 = cv2.cvtColor(im_CV2, cv2.COLOR_BGR2GRAY)
im_GRY2 = cv2.cvtColor(im_MPL, cv2.COLOR_BGR2GRAY)
plt.figure(figsize = (10,5))
plt.subplot(1,3,1) # BGR 이미지
plt.imshow(im_CV2)
plt.subplot(1,3,2) # RGB로 바꾼 이미지
plt.imshow(im_MPL)
plt.subplot(1,3,3)
plt.imshow(im_GRY1) #그레이로 색상을 바꾼 뒤 그림으로 출력
plt.show()
그레이스케일(grayscale) 변환은 일반적으로 특징을 추출하거나, 메모리의 계산 효율성을 위해서 컬러 이미지를 변환할때 많이 사용됩니다. 즉, 그레이스케일 변환을 하면 제한된 환경에서 이미지 처리를 수행이 가능해집니다.
그리고, 필터링, 모폴로지 연산, 임계값 처리 등 다양한 작업에도 그레이스케일 변환은 기본이기 때문에
CV를 공부하시는 분들은 그레이 스케일이 어떤 것인지, 어떻게 사용하는지에 대해서 반드시 인지하시기 바랍니다.
다음시간에는 픽셀연산하는 방법, 영상데이터를 numpy.ndarray로 표현하는 방법에 대해서 알아보겠습니다.
'파이썬 기초(1일 1코드)' 카테고리의 다른 글
[Docker container] 도커 컨테이너의 개념과 구조, 가상환경 구축하기, 사용해야 하는 이유 4가지 (0) | 2023.09.10 |
---|---|
파이썬 시각화 공부 5일(event-mouse, keyboard, track bar) (2) | 2023.09.09 |
파이썬 시각화 공부 4일(영상 클립 캡쳐, 영상에 도형 집어 넣기) (2) | 2023.09.07 |
파이썬 시각화 공부 3일(라인, 직사각형, 원 그리기, 오징어 게임 로고 만들기) (0) | 2023.09.06 |
파이썬 시각화 공부 2일(픽셀연산) (2) | 2023.09.05 |