(M, N, 3) 형태의 넘파이행렬을 (M*N, 3)의 형태로 바꾸고 싶을 때는 어떻게 해야할까요? 뭐 반복문을 쓰고 이래저래하면 할 수 있겠지만, 그것보다는 좀 더 간단한 방법이 있을 것 같습니다.
(M, N, 3)의 형태를 가졌다면 보통 컬러 이미지를 담고 있는 배열입니다. 그래서 이 배열의 이름을 img라고 하겠습니다. img라는 이름을 가진 배열의 형태를 (M*N, 3)의 형태로 바꾸기 위해서는
reshaped_img = img.reshape(-1, 3)
한 줄의 코드면 됩니다. (300, 500, 3) 형태의 넘파이 배열 img에 대해 위 코드를 실행하면,
[[B1, G1, R1],
[B2, G2, R2],
[B3, G3, R3],
...,
[B150000, G150000, R150000]]
와 같이 형태가 바뀝니다. (150000, 3) 형태의 넘파이 배열이 됩니다.
1
2
3
4
5
6
7
|
import cv2
img = cv2.imread('test.jpg', cv2.IMREAD_COLOR)
print(img.shape)
reshaped_img = img.reshape(-1, 3)
print(reshaped_img.shape)
|
cs |
<참고자료>
[1] stackoverflow, "Reshape (M, N, 3) numpy array to (M*N, 3)"
'Dev > python' 카테고리의 다른 글
[python] 리스트 요소 순서 뒤집는 3가지 방법 (0) | 2020.10.04 |
---|---|
[python] range 함수로 범위 자료형 만들기 (0) | 2020.09.30 |
[python] print 함수 내에서 값들을 연결시킬 때 콤마(,)를 사용할 때와 덧셈(+)을 사용할 때의 차이 (0) | 2020.09.29 |
[python] 웹캠 영상에서 검출된 얼굴들에 모자이크 효과 넣기 (10) | 2020.09.25 |
[python] 채워진 사각형 그리는 방법, cv2.rectangle 함수 활용 (0) | 2020.09.10 |
[python] 단방향 또는 양방향으로 화살표 있는 선 그리기, cv2.arrowedLine 함수 활용 (0) | 2020.09.09 |
[python] 사진에 카툰(cartoon) 효과주기, cv2.stylization 함수 (2) | 2020.09.09 |
[python+opencv] 이미지 회전시키기, cv2.rotate 함수 (2) | 2020.09.07 |