▶Pillow를 이용해 이미지를 Grayscale로 바꾸는 방법
- .convert('L')을 이용해 grayscale로 바꿔준다.
import cv2
import os
import numpy as np
from PIL import Image
path = 'tmp'
imagePaths = [os.path.join(path,file_name) for file_name in os.listdir(path)]
for imagePath in imagePaths:
# 1)
img = Image.open(imagePath).convert('L')
img_numpy = np.array(img, 'uint8') #PIL 자체가 0~255 범위인데 'uint8'이 필요한가?
# 혹은 numpy array로 바꿔준 다음에 opencv 함수를 이용한다.
# 2)
img_numpy = np.array(img, 'uint8')
img_numpy = cv2.cvtColor(img_numpy, cv2.COLOR_BGR2GRAY) #opencv는 numpy 배열과 호환이 된다.
cv2.imwrite("tmp\\" + imagePath.split("\\")[-1], img_numpy)
※ Grayscale로 변환하게 된 이유는 아래의 cv2::adaptiveThreshold 함수가 Grayscale 이미지만 입력으로 받기 때문이었다.
- cv2.adaptiveThreshold 함수가 아닌, cv2:threshold 함수는 Grayscale, RGB 모두 입력으로 받는다.
cv2.error: OpenCV(4.0.1) C:\ci\opencv-suite_1573470242804\work\modules\imgproc\src\thresh.cpp:1507: error: (-215:Assertion failed) src.type() == CV_8UC1 in function 'cv::adaptiveThreshold'
▶opencv grayscale 이미지를 RGB로 변경하는 방법
- 아래의 함수를 이용하면 변환된 opencv 혹은 numpy 이미지를 다시 RBG로 바꿀 수 있다.
import cv2
color_img = cv2.cvtColor(gray,cv2.COLOR_GRAY2RGB)
※ 이미지 이진화
opencv-python.readthedocs.io/en/latest/doc/09.imageThresholding/imageThresholding.html
※ pycharm에서 opencv4.x 사용하는 방법
반응형
'심화 > 영상 - 구현 및 OpenCV' 카테고리의 다른 글
erode & dilate (2) | 2022.10.29 |
---|---|
ORB (Oriented FAST and Rotated BRIEF) (0) | 2022.03.15 |
Optical Flow (0) | 2021.06.21 |
Fast Algorithm for Corner Detection (0) | 2021.06.19 |
[OpenCV + WebApp] 환경 Setting (0) | 2020.08.24 |