본문 바로가기

심화/영상 - 구현 및 OpenCV

Pillow Utils

▶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 사용하는 방법

webnautes.tistory.com/1269

반응형

'심화 > 영상 - 구현 및 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