파이썬을 사용한 기계 학습으로 자주 나오는 이미지 로드/드로잉 처리
7403 단어 pillow파이썬OpenCVmatplotlib기계 학습
이미지 로드
이하와 같이 디렉토리내의 화상 파일 패스를 배열로 읽어 놓아 사용하는 것이 많다.
# globで対象ファイルパスを読み込み、sortedで並び替えている
train_images_path_list = sorted(glob('./input/train_images/*.jpg'))
이미지의 로드에는 대체로 Pillow나 OpenCV가 사용된다.
로드 후는 Pillow는 독자 형식, OpenCV는 numpy.ndarray형이 된다.
numpy에 의해 Pillow의 독자 형식의 형태도 numpy.ndarray형으로 변환 가능.
import cv2
image = cv2.imread(train_images_path_list[0])
print(type(image))
# => numpy.ndarray
from PIL import Image
import numpy as np
image = Image.open(train_images_path_list[0])
print(type(image))
# => (jpeg形式のファイルの場合)PIL.JpegImagePlugin.JpegImageFile
print(type(np.array(image)))
# => numpy.ndarray
이미지 표시
이미지의 묘화는 대체로 matplotlib.pyplot가 사용된다.
Pillow 독자 형식도 numpy.ndarray형도 모두 imshow로 그릴 수 있다. 다만, 색의 취급이 다르기 때문에 주의가 필요.
Pillow를 사용하는 경우
import matplotlib.pyplot as plt
from PIL import Image
image = Image.open(train_images_path_list[0])
plt.imshow(image)
OpenCV를 사용하는 경우
OpenCV는 색 취급에 주의가 필요.
numpy.ndarray 형은 1계층째:폭, 2계층째: 높이, 3계층째: 색으로서 값이 격납되어 있다.
주의해야 할 것은 3 계층의 색으로 OpenCV는 BGR, Pillow는 RGB 순으로 값을 저장하고 있으며,
matplotlib.pyplot은 RGB로 색상을 인식하므로 OpenCV에서 읽은 경우 색상 변환이 필요합니다.
import matplotlib.pyplot as plt
import cv2
image = cv2.imread(train_images_path_list[0])
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
plt.imshow(image)
여러 장 표시
복수장 표시하고 싶은 경우는 이하와 같이 subplots 메소드로 axes를 생성해, 각 axes의 imshow에 numpy.ndarray(혹은 pillow독자형)를 건네준다.
from PIL import Image
import matplotlib.pyplot as plt
# 3*3 =9枚の画像を描画したい場合
ROWS = 3
COLS = 3
fig, axes = plt.subplots(nrows=ROWS, ncols=COLS, figsize=(15, 10))
for row in range(ROWS):
for col in range(COLS):
file = train_images_path_list[(row * COLS) + col]
image = Image.open(file)
axes[row][col].imshow(image)
axes[row][col].set_title(file)
plt.show()
Reference
이 문제에 관하여(파이썬을 사용한 기계 학습으로 자주 나오는 이미지 로드/드로잉 처리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/yokohama4580/items/53ddae7d4bde0430b9d2
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
# globで対象ファイルパスを読み込み、sortedで並び替えている
train_images_path_list = sorted(glob('./input/train_images/*.jpg'))
import cv2
image = cv2.imread(train_images_path_list[0])
print(type(image))
# => numpy.ndarray
from PIL import Image
import numpy as np
image = Image.open(train_images_path_list[0])
print(type(image))
# => (jpeg形式のファイルの場合)PIL.JpegImagePlugin.JpegImageFile
print(type(np.array(image)))
# => numpy.ndarray
이미지의 묘화는 대체로 matplotlib.pyplot가 사용된다.
Pillow 독자 형식도 numpy.ndarray형도 모두 imshow로 그릴 수 있다. 다만, 색의 취급이 다르기 때문에 주의가 필요.
Pillow를 사용하는 경우
import matplotlib.pyplot as plt
from PIL import Image
image = Image.open(train_images_path_list[0])
plt.imshow(image)
OpenCV를 사용하는 경우
OpenCV는 색 취급에 주의가 필요.
numpy.ndarray 형은 1계층째:폭, 2계층째: 높이, 3계층째: 색으로서 값이 격납되어 있다.
주의해야 할 것은 3 계층의 색으로 OpenCV는 BGR, Pillow는 RGB 순으로 값을 저장하고 있으며,
matplotlib.pyplot은 RGB로 색상을 인식하므로 OpenCV에서 읽은 경우 색상 변환이 필요합니다.
import matplotlib.pyplot as plt
import cv2
image = cv2.imread(train_images_path_list[0])
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
plt.imshow(image)
여러 장 표시
복수장 표시하고 싶은 경우는 이하와 같이 subplots 메소드로 axes를 생성해, 각 axes의 imshow에 numpy.ndarray(혹은 pillow독자형)를 건네준다.
from PIL import Image
import matplotlib.pyplot as plt
# 3*3 =9枚の画像を描画したい場合
ROWS = 3
COLS = 3
fig, axes = plt.subplots(nrows=ROWS, ncols=COLS, figsize=(15, 10))
for row in range(ROWS):
for col in range(COLS):
file = train_images_path_list[(row * COLS) + col]
image = Image.open(file)
axes[row][col].imshow(image)
axes[row][col].set_title(file)
plt.show()
Reference
이 문제에 관하여(파이썬을 사용한 기계 학습으로 자주 나오는 이미지 로드/드로잉 처리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/yokohama4580/items/53ddae7d4bde0430b9d2텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)