๐ ๊ณต๋ถํ๋ ์ง์ง์ํ์นด๋ ์ฒ์์ด์ง?
OpenCV ์์ ๋ฐ์ดํฐ ๊ตฌ์กฐ + ์์ฑ, ๋ณต์ฌ, ๋ถ๋ถ ์ถ์ถ ๋ณธ๋ฌธ
๐ฉ๐ป IoT (Embedded)/Image Processing
OpenCV ์์ ๋ฐ์ดํฐ ๊ตฌ์กฐ + ์์ฑ, ๋ณต์ฌ, ๋ถ๋ถ ์ถ์ถ
์ง์ง์ํ์นด 2022. 10. 20. 15:43728x90
๋ฐ์ํ
221020 ์์ฑ
<๋ณธ ๋ธ๋ก๊ทธ๋ redorangeyellowy๋์ ๋ธ๋ก๊ทธ๋ฅผ ์ฐธ๊ณ ํด์ ๊ณต๋ถํ๋ฉฐ ์์ฑํ์์ต๋๋ค>
[ch02] Python ๊ธฐ์ด ์ฌ์ฉ๋ฒ - ์์์ ์์ฑ๊ณผ ํฝ์ ๊ฐ ์ฐธ์กฐ
OpenCV๋ ์์ ๋ฐ์ดํฐ๋ฅผ numpy.ndarray๋ก ํํnumpy.ndarrayndim: ์ฐจ์ ์. len(img.shape)๊ณผ ๊ฐ์.shape: ๊ฐ ์ฐจ์์ ํฌ๊ธฐ. (h, w)๊ทธ๋ ์ด์ค์ผ์ผ ๋๋ (h, w, 3)์ปฌ๋ฌsize: ์ ์ฒด ์์ ๊ฐ์dtype: ์์์ ๋ฐ์ดํฐ
velog.io
๐ OpenCV๋ ์์ ๋ฐ์ดํฐ๋ฅผ numpy.ndarray๋ก ํํ
numpy.ndarray
- ndim : ์ฐจ์ ์. len(img.shape)๊ณผ ๊ฐ์.
- shape : ๊ฐ ์ฐจ์์ ํฌ๊ธฐ. (h, w)[๊ทธ๋ ์ด์ค์ผ์ผ] ๋๋ (h, w, 3)[์ปฌ๋ฌ]
- size : ์ ์ฒด ์์ ๊ฐ์
- dtype : ์์์ ๋ฐ์ดํฐ ํ์
. ์์ ๋ฐ์ดํฐ๋ uint8
- ๊ทธ๋ ์ด์ค์ผ์ผ ์์ : cv2.CV_8UC1 → numpy.uint8, shape = (h, w)
- ์ปฌ๋ฌ ์์ : cv2.CV_8UC3 → numpy.uint8, shape = (h, w, 3)
๐ ์ ์์ ์์ฑํ๊ธฐ
- shape: ๊ฐ ์ฐจ์์ ํฌ๊ธฐ. (h, w) ๋๋ (h, w, 3)
- dtype: ์์์ ๋ฐ์ดํฐ ํ์ . ์ผ๋ฐ์ ์ธ ์์์ด๋ฉด numpy.uint8 ์ง์
- arr: ์์ฑ๋ ์์(numpy.ndarray)
- ์ฐธ๊ณ ์ฌํญ
- numpy.empty() ํจ์๋ ์์์ ๊ฐ์ผ๋ก ์ด๊ธฐํ๋ ๋ฐฐ์ด์ ์์ฑ
- numpy.zeros() ํจ์๋ 0์ผ๋ก ์ด๊ธฐํ๋ ๋ฐฐ์ด์ ์์ฑ
- numpy.ones() ํจ์๋ 1๋ก ์ด๊ธฐํ๋ ๋ฐฐ์ด์ ์์ฑ
- numpy.full() ํจ์๋ fill_value๋ก ์ด๊ธฐํ๋ ๋ฐฐ์ด์ ์์ฑ
# 1. ์์ ์์ฑ
import cv2
import numpy as np
import matplotlib.pyplot as plt
img1 = np.empty((480, 640), dtype=np.uint8) # grayscale image
img2 = np.zeros((480, 640, 3), dtype=np.uint8) # color image
img3 = np.ones((480, 640), dtype=np.unit8) * 255 # white
img4 = np.full((480, 640, 3), (0, 255, 255), dtype=np.uint8) # yellow
plt.subplot(411), plt.axis('off'), plt.imshow(img1)
plt.subplot(412), plt.axis('off'), plt.imshow(img2)
plt.subplot(421), plt.axis('off'), plt.imshow(img3)
plt.subplot(422), plt.axis('off'), plt.imshow(img4)
plt.show()
๐ ์ ์์ ๋ณต์ฌํ๊ธฐ
# 2. ์์ ๋ณต์ฌ
img1 = cv2.imread('./์ํ์นด.jpg')
img2 = img1 # img1 ๋ฐ์ดํฐ๋ฅผ ์ฐธ์กฐ
img3 = img1.copy() # ๋ณต์ฌ๋ณธ ์๋ก ์์ฑ
plt.subplot(311), plt.axis('off'), plt.imshow(img1)
plt.subplot(312), plt.axis('off'), plt.imshow(img2)
plt.subplot(313), plt.axis('off'), plt.imshow(img3)
plt.show()
๐ ์์ ๋ถ๋ถ ์ถ์ถํ๊ธฐ
# 3. ์์ ๋ถ๋ถ ์ถ์ถ
img1 = cv2.imread('./์ํ์นด.jpg')
img2 = img1[40:120, 30:150] # numpy.ndarray์ ์ฌ๋ผ์ด์ฑ
img3 = img1[40:120, 30:150].copy()
img2.fill(0) # img1๊ณผ ์ฐธ์กฐํ๋ ๊ด๊ณ์ด๋ฏ๋ก img1์๋ ์ํฅ
plt.subplot(311), plt.axis('off'), plt.imshow(img1)
plt.subplot(312), plt.axis('off'), plt.imshow(img2)
plt.subplot(313), plt.axis('off'), plt.imshow(img3)
plt.show()
728x90
๋ฐ์ํ
'๐ฉโ๐ป IoT (Embedded) > Image Processing' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Comments