728x90
1. numpy.vsplit
numpy.vsplit(array, indices_or_sections)
: Split an array into multiple sub-arrays vertically (row-wise)
- axis 0 (행)로
array
를 잘라 나눔. - array가 image라면 수직으로 잘려진다.
Simple example
import numpy as np
a = np.arange(12).reshape(-1,3)
np.vsplit(a, (1,3))
- 이 경우, idx 0인 행으로 구성된 1x3인 ndarray, idx 1,2 행들이 묶인 2x3인 ndarray, 그리고 idx 3인 행으로 구성된 1x3인 ndarray로 나누어짐
np.vsplit(a, (1,3))
의 반환값은 list임.
[array([[0, 1, 2]]),
array([[3, 4, 5],
[6, 7, 8]]),
array([[ 9, 10, 11]])]
Image example
import cv2
import numpy as np
import matplotlib.pyplot as plt
img = cv2.imread('../../images/lena.png')
subimgs = np.vsplit(img,4) #하나의 숫자로 주어질 경우 몇 등분인지를 나타냄.
for c in subimgs:
print(c.shape)
plt.imshow(c[...,::-1])
plt.show()
결과는 다음과 같음.
- 512개의 pixel을 4등분하여, 128x512x3의 ndarray 4개로 나누어짐.
2. numpy.hsplit
numpy.hsplit(array, indices_or_sections)
: Split an array into multiple sub-arrays horizontally (column-wise)
- axis 1(열)로
array
를 잘라 나눔. - array가 image라면 수평으로 잘려진다.
Simple example
import numpy as np
a = np.arange(12).reshape(-1,3)
np.hsplit(a, (2,))
- 이 경우, idx 0,1인 열(column)들로 구성된 4x2인 ndarray, idx 3인 열로 구성된 4x1인 ndarray로 나누어짐
np.hsplit(a, (2,))
의 반환값은 list임.
[array([[ 0, 1],
[ 3, 4],
[ 6, 7],
[ 9, 10]]),
array([[ 2],
[ 5],
[ 8],
[11]])]
Image example
import cv2
import numpy as np
import matplotlib.pyplot as plt
img = cv2.imread('../../images/lena.png')
subimgs = np.vsplit(img,4) #하나의 숫자로 주어질 경우 몇 등분인지를 나타냄.
for c in subimgs:
print(c.shape)
plt.imshow(c[...,::-1])
plt.show()
결과는 다음과 같음.
- 512개의 pixel을 2등분하여, 512x256x3의 ndarray 2개로 나누어짐.
3. numpy.split
numpy.split(array, indices_or_sections, axis=0)
: Split an array into multiple sub-arrays as views into arrays.
- 앞서 살펴본
numpy.vsplit
,numpy.hsplit
들의 일반형으로 나눌 축을axis
라는 파라메터로 지정가능함.
다음과 같이 color image에서 각 채널별 영상으로 나누는데 사용가능함.
Example
mport cv2
import numpy as np
import matplotlib.pyplot as plt
img = cv2.imread('../../images/lena.png')
subimgs = np.split(img,3,axis=2)
for idx,c in enumerate(subimgs):
print(c.shape)
plt.title(f'channel: {idx}')
plt.imshow(c[...,::-1],cmap='gray')
plt.show()
결과는 다음과 같음
반응형
'Programming > DIP' 카테고리의 다른 글
PIL과 opencv에서의 image 변환. (1) | 2021.11.22 |
---|---|
Conda backup for DIP 2021 (0) | 2021.09.18 |
NumPy : sum, mean, std, and so on (0) | 2021.09.17 |
NumPy 검색 (0) | 2021.09.11 |
NumPy 배열 병합 : 영상 붙이기 (0) | 2021.09.11 |