카테고리 없음

numpy opencv shape, 행렬 곱셈 크기

SciomageLAB 2024. 10. 20. 16:37
반응형

이미지 프로세싱이나 텐서 처리를 하다 보면 복잡한 고차원 numpy ndarray를 다루게 된다. shape에 대한 기초가 없으면 간단한 문제인데도 헷갈려서 문제 해결에 오래 걸리는 경우가 많다.

위 이미지와 같은 2차원 array는 (2, 3) shape으로 표현할 수 있다. 3개짜리 array가 2개 있으면 (2, 3)이다.

차원이 하나만 늘어나서 3차원이 되면 조금 복잡해 지지만 2차원과 원리는 같다. 3개짜리 array가 2개 있는게 3개 있으면 (3, 2, 3)이다. 보통 rgb color image가 이런 (h, w, c) 형태이다.

<pre class="wp-block-code">```
import numpy as np

x = np.array([[1, 2, 3], [4, 5, 6]])
print(x.shape) # (2, 3)

x = np.array([[[1, 2, 3], [2, 3, 4]],
              [[3, 4, 5], [4, 5, 6]],
              [[5, 6, 7], [6, 7, 8]]])
print(x.shape) # (3, 2, 3)

![](https://blogworklover.files.wordpress.com/2021/08/image.png?w=993)행렬 곱셈 크기 역시 너무 당연하지만 막상 shape과 함께 보면 헷갈리는 경우가 있는데, 위 이미지대로 정리할 수 있다.
```
import cv2
img = cv2.imread(./image.jpg)
print(img.shape) # (h, w, c)
```
```

opencv의 imread()로 읽은 이미지 shape은 (h, w, c)이다. 이건 많이 쓰기 때문에 익숙해 져야 한다. image 처리 함수마다 shape이 다르기 때문에 유의해야 한다.
반응형