opencv를 이용한 이미지의 더하기
방법1. cv2.add()
방법2. numpy 연산 (img1+ img2)
이 두가지의 차이는 cv2.add()는 saturation 연산을 이용하고
numpy는 modulo연산을 한다는 점이다.
saturation 연산은 한계값을 정하고 그 값을 벗어나는 경우 모두 특정값으로 나타내는 경우로 이미지에서 0 이하는 모두 0, 255 이상은 모두 255로 표현된다.
modulo 연산은 a와 b는 n으로 나눈 나머지 값이 같다는 의미로 이미지에서는 연산의 결과가 256보다 큰 경우 256로 나눈 나머지 값으로 결정한다.
코드를 통해 살펴보면 다음과 같다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | import cv2 import numpy as np from matplotlib import pyplot as plt img1 = cv2.imread('pic/image1.jpeg') img1 = cv2.cvtColor(img1, cv2.COLOR_BGR2RGB) img2 = cv2.imread('pic/image2.jpg') img2 = cv2.cvtColor(img2, cv2.COLOR_BGR2RGB) print(img1.shape, img2.shape) # (699, 699, 3) (3264, 4912, 3) #이미지의 크기가 다르기 때문에 img3 = cv2.resize(img1, (1000, 1000)) img4 = cv2.resize(img2, (1000, 1000)) titles = ['img1', 'img2'] images=[img3, img4] for i in range(2): plt.subplot(1, 2, i+1), plt.title(titles[i]), plt.imshow(images[i]) plt.xticks([]), plt.yticks([]) plt.show() | cs |
1 2 3 4 5 6 7 8 9 10 | img5 = cv2.add(img3, img4) img6 = img3+img4 titles = ['cv2', 'numpy'] images=[img5, img6] for i in range(2): plt.subplot(1, 2, i+1), plt.title(titles[i]), plt.imshow(images[i]) plt.xticks([]), plt.yticks([]) plt.show() | cs |
두개의 결과 값이 다른 것을 알 수 있다.
Digital image
Digital image는 2차원 행렬의 형태로 표현되며, 각 격자가 하나의 pixel이 되기 때문에 bitmap image라고도 한다.
이런 Digital image의 유형에는 3가지가 있는데,
1. binary image: 1bit로 표현 (흰색과 검은색)
2. grayscale image: 8bit, 256단계의 명암을 표현
3.color image: 24bit, 총 16,777,216가지의 색 표현
- blue: (255, 0, 0)
- Green: (0, 255, 0)
- Red: (0, 0, 255)
- White: (255, 255, 255)
- Black: (0, 0, 0)
1 2 3 4 | import cv2 flags = [i for i in dir(cv2)if i.startswith('COLOR_')] print(flags) # print(len(flags)) 274 | cs |
opencv에서는 274정도 제공하는가보다...
Color-space 변환은 우리가 여태까지 사용했던, cv2.cvtColor()를 쓰면된다.
'Project > 데이터 가지고 놀기' 카테고리의 다른 글
[서울시 도서관] 서울시 도서관 개수 시각화 (0) | 2018.07.11 |
---|---|
pixel-art :: openCV 기초 (4) - 이미지 임계처리 (1) | 2018.03.06 |
pixel-art :: openCV 기초 (2) - pixel 접근 및 이미지 복사 (0) | 2018.02.08 |
picel-art :: openCV 기초 (1) - 이미지를 불러오자 (0) | 2018.02.08 |
pixel-art :: 하고싶은 것 정의(1) (1) | 2018.02.07 |
댓글