A A
[CV] OpenCV ๊ฐœ์š”

Python ๊ธฐ๋ฐ˜ ์ฃผ์š” ์ด๋ฏธ์ง€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

ํฌ๊ฒŒ 3๊ฐ€์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  • PIL (Python Image Library)
    • ์ฃผ๋กœ ์ด๋ฏธ์ง€ ์ฒ˜๋ฆฌ๋งŒ์„ ์œ„ํ•ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
    • ์ฒ˜๋ฆฌ ์„ฑ๋Šฅ์ด ์ƒ๋Œ€์ ์œผ๋กœ ๋Š๋ฆฌ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • Scikit-Image
    • ํŒŒ์ด์ฌ ๊ธฐ๋ฐ˜์˜ ์ „๋ฐ˜์ ์ธ ์ปดํ“จํ„ฐ ๋น„์ „ ๊ธฐ๋Šฅ ์ž…๋‹ˆ๋‹ค.
    • ์‚ฌ์ดํŒŒ์ด(Scipy)์— ๊ธฐ๋ฐ˜ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
  • OpenCV
    • ์˜คํ”ˆ์†Œ์Šค ๊ธฐ๋ฐ˜์˜ ์ตœ๊ณ  ์ธ๊ธฐ ์ปดํ“จํ„ฐ ๋น„์ „ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ž…๋‹ˆ๋‹ค.
    • ์ปดํ“จํ„ฐ ๋น„์ „ ๊ธฐ๋Šฅ ์ผ๋ฐ˜ํ™”์— ํฌ๊ฒŒ ๊ธฐ์—ฌ ํ–ˆ๋‹ค๋Š” ํŠน์ง•์ด ์žˆ์Šต๋‹ˆ๋‹ค.
    • (์–ด๋ ค์šด ๊ธฐ๋Šฅ๋„ API ๋ช‡์ค„๋กœ ๊ฐ„๋‹จํ•˜๊ฒŒ ๊ตฌํ˜„์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.)
    • C++ ๊ธฐ๋ฐ˜์ด๋‚˜ Python๋„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. (Java, C# ๋“ฑ ๋‹ค์–‘ํ•œ ์–ธ์–ด ์ง€์›)

 

OpenCV ํŠน์ง•

OpenCV (Open Source Computer Vision Library)๋Š” ์ปดํ“จํ„ฐ ๋น„์ „๊ณผ ๋จธ์‹  ๋Ÿฌ๋‹์„ ์œ„ํ•œ ์˜คํ”ˆ์†Œ์Šค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค.

  • ์ธํ…”์ด ์ดˆ๊ธฐ ๊ฐœ๋ฐœ์„ ์ฃผ๋„ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
  • Windows, ๋ฆฌ๋ˆ…์Šค, Mac OS X, ์•ˆ๋“œ๋กœ์ด๋“œ, iOS ๋“ฑ ๋‹ค์–‘ํ•œ ํ”Œ๋žซํผ์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅ ํ•˜๋‹ค๋Š” ํŠน์ง•์ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ฐฉ๋Œ€ํ•œ ์ปดํ“จํ„ฐ ๋น„์ „ ๊ด€๋ จ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ์†์‰ฌ์šด ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • ๊ด‘๋ฒ”์œ„ํ•œ ๊ธฐ๋Šฅ:
    • ์ด๋ฏธ์ง€ ์ฒ˜๋ฆฌ: ํ•„ํ„ฐ๋ง, ์ƒ‰์ƒ ๋ณ€ํ™˜, ๊ธฐํ•˜ํ•™์  ๋ณ€ํ™˜ ๋“ฑ ๋‹ค์–‘ํ•œ ์ด๋ฏธ์ง€ ์ฒ˜๋ฆฌ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
    • ๋น„๋””์˜ค ๋ถ„์„: ๋™์˜์ƒ ์ŠคํŠธ๋ฆผ ์ฒ˜๋ฆฌ, ๊ฐ์ฒด ์ถ”์ , ๋ฐฐ๊ฒฝ ์ œ๊ฑฐ ๋“ฑ์˜ ๊ธฐ๋Šฅ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
    • ๊ฐ์ฒด ๊ฒ€์ถœ: ์–ผ๊ตด ๊ฒ€์ถœ, ์‚ฌ๋žŒ ๊ฒ€์ถœ, ์ฐจ๋Ÿ‰ ๊ฒ€์ถœ ๋“ฑ ์‚ฌ์ „ ํ•™์Šต๋œ ๋ชจ๋ธ์„ ์ด์šฉํ•œ ๊ฐ์ฒด ๊ฒ€์ถœ ๊ธฐ๋Šฅ์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.
    • ๊ธฐ๊ณ„ ํ•™์Šต: SVM, KNN, ๊ฒฐ์ • ํŠธ๋ฆฌ ๋“ฑ ๋‹ค์–‘ํ•œ ๋จธ์‹  ๋Ÿฌ๋‹ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
    • ๋”ฅ๋Ÿฌ๋‹ ํ†ตํ•ฉ: TensorFlow, Caffe, PyTorch ๋“ฑ ๋”ฅ๋Ÿฌ๋‹ ํ”„๋ ˆ์ž„์›Œํฌ์™€์˜ ํ†ตํ•ฉ์„ ์ง€์›ํ•˜์—ฌ, ๋”ฅ๋Ÿฌ๋‹ ๋ชจ๋ธ์„ ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  •  ๋ฉ€ํ‹ฐํ”Œ๋žซํผ ์ง€์›:
    • OpenCV๋Š” Windows, Linux, macOS๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, Android์™€ iOS์™€ ๊ฐ™์€ ๋ชจ๋ฐ”์ผ ํ”Œ๋žซํผ์—์„œ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๊ณ ์„ฑ๋Šฅ:
    • OpenCV๋Š” C++๋กœ ๊ตฌํ˜„๋˜์–ด ์žˆ์œผ๋ฉฐ, CPU์™€ GPU ๊ฐ€์†์„ ํ†ตํ•ด ๋†’์€ ์„ฑ๋Šฅ์„ ๋ฐœํœ˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์˜คํ”ˆ์†Œ์Šค:
    • OpenCV๋Š” BSD ๋ผ์ด์„ผ์Šค๋กœ ์ œ๊ณต๋˜๋ฉฐ, ๋ˆ„๊ตฌ๋‚˜ ์ž์œ ๋กญ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

OpenCV ์ด๋ฏธ์ง€ ๋กœ๋”ฉ

imread( )๋ฅผ ์ด์šฉํ•œ ์ด๋ฏธ์ง€ ๋กœ๋”ฉ

  • OpenCV์—์„œ ์ด๋ฏธ์ง€ ๋กœ๋”ฉ์€ imread(‘ํŒŒ์ผ๋ช…’)์„ ์ด์šฉํ•ฉ๋‹ˆ๋‹ค.
  • imread(‘ํŒŒ์ผ๋ช…’)์€ ํŒŒ์ผ์„ ์ฝ์–ด ๋„˜ํŒŒ์ด array๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
  • OpenCV์—์„œ imread()๋ฅผ ์ด์šฉํ•˜์—ฌ ์ด๋ฏธ์ง€ ๋กœ๋”ฉ ์‹œ ๊ฐ€์žฅ ์ฃผ์˜ํ•ด์•ผ ํ•  ์ ์€ OpenCV๊ฐ€ ์ด๋ฏธ์ง€๋ฅผ RGB ํ˜•ํƒœ๊ฐ€ ์•„๋‹Œ BGR ํ˜•ํƒœ๋กœ ๋กœ๋”ฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ƒ‰๊ฐ์ด ์›๋ณธ ์ด๋ฏธ์ง€์™€ ๋‹ค๋ฅด๊ฒŒ ๋‚˜ํƒ€๋‚œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
import cv2
import matplotlib.pyplot as plt

img_array = cv2.imread(‘ํŒŒ์ผ๋ช…’)
plt.imshow(img_array)

 

 

OpenCV ์ด๋ฏธ์ง€ ๋กœ๋”ฉ์‹œ BGR์„ RGB๋กœ ๋ณ€ํ™˜

cvtColor( )๋ฅผ ์ด์šฉํ•˜์—ฌ BGR์„ RGB๋กœ ๋ณ€ํ™˜

  • OpenCV์—์„œ imread(‘ํŒŒ์ผ๋ช…’)์„ ์ด์šฉํ•˜์—ฌ ๋กœ๋”ฉ๋œ ์ด๋ฏธ์ง€ ๋ฐฐ์—ด์„ BGR ํ˜•ํƒœ์˜ ๋ฐฐ์—ด์ด๋ฏ€๋กœ ์ด๋ฅผ RGB ํ˜•ํƒœ์˜ ๋ฐฐ์—ด๋กœ ๋ณ€ํ™˜ํ•˜๋ ค๋ฉด cvtColor(์ด๋ฏธ์ง€ ๋ฐฐ์—ด, cv2.COLOR_BGR2RGB)๋ฅผ ์ด์šฉํ•ฉ๋‹ˆ๋‹ค.
import cv2
import matplotlib.pyplot as plt

bgr_img_array = cv2.imread(‘ํŒŒ์ผ๋ช…’)
rgb_img_array = cv2.cvtColor(bgr_img_array, cv2.COLOR_BGR2RGB)
plt.imshow(rgb_img_array)

 

 

OpenCV ์ด๋ฏธ์ง€ ๋ฐฐ์—ด์„ ํŒŒ์ผ์— ์“ฐ๊ธฐ

imwrite()๋ฅผ ์ด์šฉํ•˜์—ฌ ํŒŒ์ผ์— ์“ฐ๊ธฐ

  • OpenCV์—์„œ ๋ฉ”๋ชจ๋ฆฌ์— ์žˆ๋Š” ์ด๋ฏธ์ง€ ๋ฐฐ์—ด์„ ๋‹ค์‹œ ํŒŒ์ผ์— ์ €์žฅํ•˜๋ ค๋ฉด imwrite(‘์ถœ๋ ฅํŒŒ์ผ๋ช…‘, ์ด๋ฏธ์ง€๋ฐฐ์—ด)์„ ์ด์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ์ด๋•Œ imread( )๋กœ ์ธํ•ด BGRํ˜•ํƒœ๋กœ ๋˜์–ด ์žˆ๋Š” ์ด๋ฏธ์ง€ ๋ฐฐ์—ด์„ ๋‹ค์‹œ RGB ํ˜•ํƒœ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
  • ๋”ฐ๋ผ์„œ imread( )๋กœ ์ฝ๊ณ , imwrite( )๋กœ ์ถœ๋ ฅํ•œ ์ด๋ฏธ์ง€ ํŒŒ์ผ์€ ๋‹ค์‹œ RGB ํ˜•ํƒœ์˜ ํŒŒ์ผ์ด ๋ฉ๋‹ˆ๋‹ค.
import cv2
import matplotlib.pyplot as plt

img_array = cv2.imread(‘ํŒŒ์ผ๋ช…’)
cv2.imwrite(‘์ถœ๋ ฅํŒŒ์ผ๋ช…’, img_arrary)

 

 

OpenCV Windows Frame ์ธํ„ฐํŽ˜์ด์Šค

OpenCV Windows Frame ์ธํ„ฐํŽ˜์ด์Šค
  • OpenCV๋Š” OS์˜ Window Frame๊ณผ ๋ฐ”๋กœ ์ธํ„ฐํŽ˜์ด์Šค ํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์—ฌ๋Ÿฌ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • ํ•˜์ง€๋งŒ ์ด๋“ค ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด Window Frame ์ƒ์„ฑ์ด ๊ฐ€๋Šฅํ•œ GUI ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ๋งŒ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.(Windows GUI, Linux X-windows ๋“ฑ).
  • ์ฃผํ”ผํ„ฐ ๋…ธํŠธ๋ถ ๊ธฐ๋ฐ˜์—์„œ๋Š” ์‚ฌ์šฉ ์‹œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
cv2.imshow(์ด๋ฏธ์ง€ array)๋Š” ์ด๋ฏธ์ง€ ๋ฐฐ์—ด์„ window frame์— ๋ณด์—ฌ์คŒ.
cv2.waitKey() : ํ‚ค๋ณด๋“œ ์ž…๋ ฅ์ด ์žˆ์„ ๋•Œ๊นŒ์ง€ ๋ฌดํ•œ ๋Œ€๊ธฐ
cv2.destroyAllWindows(): ํ™”๋ฉด์˜ ์œˆ๋„์šฐ ํ”„๋ ˆ์ž„ ๋ชจ๋‘ ์ข…๋ฃŒ
  • ์ฃผํ”ผํ„ฐ ๋…ธํŠธ๋ถ ๊ธฐ๋ฐ˜์—์„œ๋Š” ์ด๋ฏธ์ง€ ๋ฐฐ์—ด์˜ ์‹œ๊ฐํ™”์— matplotlib์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

 


OpenCV ์ด๋ฏธ์ง€์™€ ์˜์ƒ์ฒ˜๋ฆฌ Practice (by Python)

PIL ํŒจํ‚ค์ง€๋ฅผ ์ด์šฉํ•ด ์ด๋ฏธ์ง€ ๋กœ๋“œํ•˜๊ธฐ

import matplotlib.pyplot as plt
%matplotlib inline

from PIL import Image

# PIL์€ oepn()์œผ๋กœ image file์„ ์ฝ์–ด์„œ ImageFile๊ฐ์ฒด๋กœ ์ƒ์„ฑ. 
pil_image = Image.open("/content/drive/MyDrive/แ„ƒแ…ตแ†ธแ„…แ…ฅแ„‚แ…ตแ†ผ แ„แ…ฅแ†ทแ„‘แ…ฒแ„แ…ฅ แ„‡แ…ตแ„Œแ…ฅแ†ซ แ„€แ…กแ„‹แ…ตแ„ƒแ…ณ/Deep_learning computer Vision Guide/data/image/beatles01.jpg")
print('image type:', type(pil_image))

plt.figure(figsize=(10, 10))
plt.imshow(pil_image)
#plt.show()
  • image type: <class 'PIL.JpegImagePlugin.JpegImageFile'>
  • <matplotlib.image.AxesImage at 0x7fbf19cd1940>

 

 

scikit-image (์‚ฌ์ดํ‚ท-์ด๋ฏธ์ง€)๋กœ image loadํ•˜๊ธฐ

  • skimage๋Š” imread()๋ฅผ ์ด์šฉํ•˜์—ฌ RGB ์›๋ณธ ์ด๋ฏธ์ง€๋ฅผ RGB ํ˜•ํƒœ์˜ ๋„˜ํŒŒ์ด ๋ฐฐ์—ด๋กœ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
from skimage import io

#skimage๋Š” imread()๋ฅผ ์ด์šฉํ•˜์—ฌ image๋ฅผ numpy ๋ฐฐ์—ด๋กœ ๋ฐ˜ํ™˜ํ•จ. 
sk_image = io.imread("/content/drive/MyDrive/แ„ƒแ…ตแ†ธแ„…แ…ฅแ„‚แ…ตแ†ผ แ„แ…ฅแ†ทแ„‘แ…ฒแ„แ…ฅ แ„‡แ…ตแ„Œแ…ฅแ†ซ แ„€แ…กแ„‹แ…ตแ„ƒแ…ณ/Deep_learning computer Vision Guide/data/image/beatles01.jpg")
print('sk_image type:', type(sk_image), ' sk_image shape:', sk_image.shape)

plt.figure(figsize=(10, 10))
plt.imshow(sk_image)
#plt.show()
  • sk_image type: <class 'numpy.ndarray'> sk_image shape: (633, 806, 3)
  • <matplotlib.image.AxesImage at 0x7fc168f0a780>

 

 

OpenCV๋กœ ์ด๋ฏธ์ง€ ๋กœ๋“œํ•˜๊ธฐ

  • OpenCV๋Š” imread()๋ฅผ ์ด์šฉํ•˜์—ฌ ์›๋ณธ RGB ์ด๋ฏธ์ง€๋ฅผ BGR ํ˜•ํƒœ์˜ Numpy(๋„˜ํŒŒ์ด) ๋ฐฐ์—ด๋กœ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
  • OpenCV์˜ imwrite()๋ฅผ ์ด์šฉํ•œ๋‹ค๋ฉด BGR ํ˜•ํƒœ์˜ ์ด๋ฏธ์ง€ ๋ฐฐ์—ด์„ ํŒŒ์ผ์— ๊ธฐ๋กํ•  ๋•Œ ๋‹ค์‹œ RGBํ˜•ํƒœ๋กœ ๋ณ€ํ™˜ํ•˜๋ฏ€๋กœ ์‚ฌ์šฉ์ž๋Š” RGB->BGR->RGB ๋ณ€ํ™˜์— ์‹ ๊ฒฝ์“ฐ์ง€ ์•Š์•„๋„ ๋ฉ๋‹ˆ๋‹ค.
import cv2

cv2_image = cv2.imread("/content/drive/MyDrive/แ„ƒแ…ตแ†ธแ„…แ…ฅแ„‚แ…ตแ†ผ แ„แ…ฅแ†ทแ„‘แ…ฒแ„แ…ฅ แ„‡แ…ตแ„Œแ…ฅแ†ซ แ„€แ…กแ„‹แ…ตแ„ƒแ…ณ/Deep_learning computer Vision Guide/data/image/beatles01.jpg")
cv2.imwrite(("/content/drive/MyDrive/แ„ƒแ…ตแ†ธแ„…แ…ฅแ„‚แ…ตแ†ผ แ„แ…ฅแ†ทแ„‘แ…ฒแ„แ…ฅ แ„‡แ…ตแ„Œแ…ฅแ†ซ แ„€แ…กแ„‹แ…ตแ„ƒแ…ณ/Deep_learning computer Vision Guide/data/image/beatles02.jpg"), cv2_image)
print('cv_image type:', type(cv2_image), ' cv_image shape:', cv2_image.shape)

plt.figure(figsize=(10, 10))
img = plt.imread("/content/drive/MyDrive/แ„ƒแ…ตแ†ธแ„…แ…ฅแ„‚แ…ตแ†ผ แ„แ…ฅแ†ทแ„‘แ…ฒแ„แ…ฅ แ„‡แ…ตแ„Œแ…ฅแ†ซ แ„€แ…กแ„‹แ…ตแ„ƒแ…ณ/Deep_learning computer Vision Guide/data/image/beatles02.jpg")
plt.imshow(img)
#plt.show()
  • cv_image type: <class 'numpy.ndarray'>  cv_image shape: (633, 806, 3)
  • <matplotlib.image.AxesImage at 0x7fc15e1a7320>

 

OpenCV์˜ imread()๋กœ ๋ฐ˜ํ™˜๋œ BGR ์ด๋ฏธ์ง€ ๋„˜ํŒŒ์ด ๋ฐฐ์—ด์„ ๊ทธ๋Œ€๋กœ ์‹œ๊ฐํ™” ํ•˜๊ธฐ

OpenCV์˜ imread()๋Š” RGB๋ฅผ BGR๋กœ ๋ณ€ํ™˜ํ•˜๋ฏ€๋กœ ์›ํ•˜์ง€ ์•Š๋Š” ์ด๋ฏธ์ง€๊ฐ€ ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค.
cv2_image = cv2.imread("/content/drive/MyDrive/แ„ƒแ…ตแ†ธแ„…แ…ฅแ„‚แ…ตแ†ผ แ„แ…ฅแ†ทแ„‘แ…ฒแ„แ…ฅ แ„‡แ…ตแ„Œแ…ฅแ†ซ แ„€แ…กแ„‹แ…ตแ„ƒแ…ณ/Deep_learning computer Vision Guide/data/image/beatles01.jpg")

plt.figure(figsize=(10, 10))
plt.imshow(cv2_image)
plt.show()

sk_image = io.imread("../../data/image/beatles01.jpg")
print(sk_image.shape)
sk_image[:, :, 0] # R Channel์˜ ๊ฐ’
  • ์•„๋ž˜ ์ฝ”๋“œ์˜ ๊ฒฐ๊ณผ๊ฐ’๋“ค์€ R Channel ๊ณ„์—ด๋“ค์˜ ๊ฐ’์ž…๋‹ˆ๋‹ค.
  • ๋‘ ๊ฐœ์˜ NumPy ๋ฐฐ์—ด์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
  • ์ฒซ ๋ฒˆ์งธ๋Š” ์ƒ‰์ƒ ์ด๋ฏธ์ง€ (RGB ์ด๋ฏธ์ง€), ๋‘ ๋ฒˆ์งธ๋Š” ๊ทธ๋ ˆ์ด์Šค์ผ€์ผ ์ด๋ฏธ์ง€์ž…๋‹ˆ๋‹ค.
  • ์ด๋ฅผ ํ†ตํ•ด RGB ์ด๋ฏธ์ง€๋ฅผ ๊ทธ๋ ˆ์ด์Šค์ผ€์ผ ์ด๋ฏธ์ง€๋กœ ๋ณ€ํ™˜ํ–ˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
(633, 806, 3) # RGB ์ด๋ฏธ์ง€
ndarray (633, 806) # Gray Scale ์ด๋ฏธ์ง€
array([[ 18,  18,  18, ...,  47,  39,  64],
       [ 19,  19,  18, ...,  72,  41,  37],
       [ 18,  18,  18, ...,  84,  56,  41],
       ...,
       [225, 226, 228, ..., 231, 230, 229],
       [225, 225, 226, ..., 229, 229, 227],
       [225, 225, 224, ..., 227, 227, 227]], dtype=uint8)

 

  • ์ฃผ์–ด์ง„ ์ถœ๋ ฅ์€ ๋‘ ๊ฐœ์˜ NumPy ๋ฐฐ์—ด์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.
  • ์ฒซ ๋ฒˆ์งธ ๋ฐฐ์—ด์€ RGB ์ด๋ฏธ์ง€์— ํ•ด๋‹นํ•˜๋ฉฐ, ๋‘ ๋ฒˆ์งธ ๋ฐฐ์—ด์€ ๊ทธ๋ ˆ์ด์Šค์ผ€์ผ ์ด๋ฏธ์ง€์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค.
  • ์ด ์ •๋ณด๋Š” RGB ์ด๋ฏธ์ง€๋ฅผ ๊ทธ๋ ˆ์ด์Šค์ผ€์ผ ์ด๋ฏธ์ง€๋กœ ๋ณ€ํ™˜ํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
cv2_image = cv2.imread("/content/drive/MyDrive/แ„ƒแ…ตแ†ธแ„…แ…ฅแ„‚แ…ตแ†ผ แ„แ…ฅแ†ทแ„‘แ…ฒแ„แ…ฅ แ„‡แ…ตแ„Œแ…ฅแ†ซ แ„€แ…กแ„‹แ…ตแ„ƒแ…ณ/Deep_learning computer Vision Guide/data/image/beatles01.jpg")
print(type(cv2_image))
print(cv2_image.shape)
cv2_image[:, :, 0]
<class 'numpy.ndarray'> # RGB ์ด๋ฏธ์ง€
(633, 806, 3) # RGB ์ด๋ฏธ์ง€
ndarray (633, 806) # Gray Scale ์ด๋ฏธ์ง€
array([[ 19,  19,  20, ...,  47,  39,  64],
       [ 20,  20,  20, ...,  71,  40,  36],
       [ 20,  20,  20, ...,  82,  54,  40],
       ...,
       [198, 199, 201, ..., 190, 189, 188],
       [198, 198, 199, ..., 188, 188, 186],
       [199, 199, 198, ..., 186, 186, 186]], dtype=uint8)

 

cv2_image[:, :, 2]
ndarray (633, 806) hide data
array([[ 18,  18,  18, ...,  47,  39,  64],
       [ 19,  19,  18, ...,  72,  41,  37],
       [ 18,  18,  18, ...,  84,  56,  41],
       ...,
       [225, 226, 228, ..., 231, 230, 229],
       [225, 225, 226, ..., 229, 229, 227],
       [225, 225, 224, ..., 227, 227, 227]], dtype=uint8)

 

cv2_image = cv2.imread("/content/drive/MyDrive/แ„ƒแ…ตแ†ธแ„…แ…ฅแ„‚แ…ตแ†ผ แ„แ…ฅแ†ทแ„‘แ…ฒแ„แ…ฅ แ„‡แ…ตแ„Œแ…ฅแ†ซ แ„€แ…กแ„‹แ…ตแ„ƒแ…ณ/Deep_learning computer Vision Guide/data/image/beatles01.jpg")
draw_image = cv2.cvtColor(cv2_image, cv2.COLOR_BGR2RGB)

plt.figure(figsize=(10, 10))
plt.imshow(draw_image)
plt.show()