일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 논문리뷰
- equalize
- matplotlib
- Docker Container
- binarization
- 컴퓨터 비전
- 파이썬 컴퓨터비전
- 파이썬 기초
- abs diff
- 픽셀연산
- 공대아저씨
- 모션감지 카메라
- Computer-vision
- track bar
- 딥러닝
- 영상클립 캡처
- 인공지능
- AI
- docker
- 파이썬 시각화
- 도커 컨테이너
- event-mouse
- 영상에 도형
- 이미지 시각화
- 영상 이진화
- 도커
- 이미지 히스토그램
- weighted sum
- 그레이 스케일
- 시각화 기초
- Today
- Total
공부하는 아저씨의 IT 공방
파이썬 시각화 공부 2일(픽셀연산) 본문
안녕하세요 공대아저씨입니다. 지난 시간에는 CV의 기초인 이미지 그레이스케일 변환과 matplotlib을 활용하는 법에 대해서 공부하였습니다. 이번시간에는 픽셀연산에 대해서 한번 공부를 해볼까 합니다.
먼저, Computer-vision에서 픽셀연산이 중요한 이유는 여러가지가 있습니다. 그 중에서도 CV에서 다루는 이미지와 영상 데이터를 효과적으로 처리하고 해석하기 위해서는 픽셀연산은 굉장히 핵심적인 역할을 수행 한다고 할 수 있습니다.
즉, 픽셀연산으로 이미지 처리와 분석을 위해서 픽셀연산을 통해 특징을 추출하거나, 필터링을 개선, 객체 인식과 분할 등 다양한 곳에 활용됩니다.
그래서 오늘은 이렇게 중요한 픽셀연산을 이전에 1일차에서 수행했던 이미지를 기준으로 한번 진행해보겠습니다.
먼저 open CV를 import 하겠습니다.(open cv는 영상데이터를 numpy.ndarray로 표현합니다.)
import cv2
img1 = cv2.imread('./img/faceFront1.jpeg', cv2.IMREAD_GRAYSCALE)
img2 = cv2.imread('./img/faceFront1.jpeg', cv2.IMREAD_COLOR)
cv2.imshow('img1', img1)
cv2.imshow('img2', img2)
cv2.waitKey()
cv2.destroyAllWindows()
print('img1:', type(img1), '\t img2:', type(img2)) # 사진의 타입 확인, \t -> 탭(띄어쓰기)
print('img1:', img1.shape, '\t img2:', img2.shape) # 사진의 크기 확인
print('img1[50][50]:', img1[50][50], '\t img2[50][50]:', img2[50][50])
자 여기까지 진행하면 다음과 같은 결과가 도출됩니다.
img1: <class 'numpy.ndarray'> img2: <class 'numpy.ndarray'>
img1: (251, 201) img2: (251, 201, 3)
img1[50][50]: 176 img2[50][50]: [148 169 200]
특정좌표의 컬러값 변경
import cv2
img1 = cv2.imread('./img/4.jpg', cv2.IMREAD_GRAYSCALE)
img2 = cv2.imread('./img/4.jpg', cv2.IMREAD_COLOR)
x = 10 #좌표값
y = 20
img1[y,x] = 0
img2[y,x] = (255, 0, 0) #특정좌표 검정색으로
cv2.imshow('img1', img1)
cv2.imshow('img2', img2)
cv2.waitKey()
cv2.destroyAllWindows()
이렇게되면 특정 좌표의 색상이 검정색으로 변경되게 됩니다.
# 특정좌표의 컬러값 변경
import cv2
img1 = cv2.imread('./img/4.jpg', cv2.IMREAD_GRAYSCALE)
img2 = cv2.imread('./img/4.jpg', cv2.IMREAD_COLOR)
# x,y 전체를 바꾸기
img1[:,:] = 0
img2[:,:] = (0, 0, 255) #특정좌표 검정색으로
cv2.imshow('img1', img1)
cv2.imshow('img2', img2)
cv2.waitKey()
cv2.destroyAllWindows()
이번에는 x, y 전체를 검정색으로 변경해보았습니다.
# 특정좌표의 컬러값 변경
import cv2
img1 = cv2.imread('./img/4.jpg', cv2.IMREAD_GRAYSCALE)
img2 = cv2.imread('./img/4.jpg', cv2.IMREAD_COLOR)
# x,y 구간 좌표를 바꾸기
img1[10:20,10:20] = 0
img2[10:20,10:20] = (0, 0, 255) #특정좌표 검정색으로
cv2.imshow('img1', img1)
cv2.imshow('img2', img2)
cv2.waitKey()
cv2.destroyAllWindows()
이번에는 구간 좌표를 바꾸어 보았습니다.
import numpy as np
import cv2
img1 = np.empty((240,320), dtype=np.uint8) # 비어있는 크기가 240 320인 매트릭스를 만들어줘라
cv2.imshow('img1', img1)
print('img1', img1[50][:10]) #50번째 줄에 처음부터 10번째 까지
img2 = np.zeros((240,320, 3), dtype=np.uint8)
cv2.imshow('img2', img2)
print('img2', img2[50][:10])
img3 = np.zeros((240,320), dtype=np.uint8) * 255
cv2.imshow('img3', img3)
print('img3', img3[50][:10])
# 특정한 값으로 채우기
img4 = np.full((240,320,3),(15, 127, 255), dtype=np.uint8) * 255
cv2.imshow('img4', img4)
print('img4', img4[50][:10])
cv2.waitKey()
cv2.destroyAllWindows()
img1 - 빈 이미지 행렬(흑백이미지)
img2 - 크기가 (240, 320, 3)인 모든 픽셀 값이 0인 검은색 이미지
img3 - 픽셀값이 255인 흰색이미지
img4 - 픽셀값이 (15, 127, 255)인 컬러 이미지 생성(B,G,R)
따라해보기. 크기가 320x240이고 검은색 바탕에 크기가 50x50인 붉은색 상자를 그리기
import numpy as np
import cv2
img1 = np.full((240,320, 3),(0, 0, 0), dtype=np.uint8)*255 # 크기가 320x240이고 검은색 바탕
img1[45:195, 85:235] = (0, 0, 255) #중심점 기준 좌우 75 특정좌표 검정색으로
img1[95:145, 135:185] = (255, 0, 0) #중심점 기준 좌우 25
cv2.imshow('img1', img1)
# 순서대로 입력되기때문에 덮어씌워짐
cv2.waitKey()
cv2.destroyAllWindows()
오늘은 CV의 기초인 픽셀연산에 대해서 한번 공부해보았습니다. 픽셀연산에서의 핵심은 내가 원하는 지점의 좌표를 명확하게 알고 그 좌표가 갖는 값을 내가 원하는대로 바꾸는 것입니다.
다음시간에는 파이썬 코드를 이용해 라인, 도형 그리기와 비디오 캡쳐기능 사용하기에 대해 한번 알아보겠습니다.
감사합니다. :)
'파이썬 기초(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 |
파이썬 시각화 공부 1일(기존 컬러 이미지 흑백 변환, Matplotlib 사용) (0) | 2023.09.04 |