😎 κ³΅λΆ€ν•˜λŠ” μ§•μ§•μ•ŒνŒŒμΉ΄λŠ” μ²˜μŒμ΄μ§€?

[Python 으둜 μ˜μƒμ²˜λ¦¬ (3)] cv2.threshold() λ³Έλ¬Έ

πŸ‘©‍πŸ’» IoT (Embedded)/Image Processing

[Python 으둜 μ˜μƒμ²˜λ¦¬ (3)] cv2.threshold()

μ§•μ§•μ•ŒνŒŒμΉ΄ 2023. 12. 28. 10:45
728x90
λ°˜μ‘ν˜•

πŸ’— threshold 둜 binary, tozero λ“± flag μ§€μ •ν•˜κΈ°

import cv2
import numpy as np
from matplotlib import pyplot as plt

img = cv2.imread('images/gradation.png',0)

ret, thresh1 = cv2.threshold(img,127,255, cv2.THRESH_BINARY)
ret, thresh2 = cv2.threshold(img,127,255, cv2.THRESH_BINARY_INV)
ret, thresh3 = cv2.threshold(img,127,255, cv2.THRESH_TRUNC)
ret, thresh4 = cv2.threshold(img,127,255, cv2.THRESH_TOZERO)
ret, thresh5 = cv2.threshold(img,127,255, cv2.THRESH_TOZERO_INV)
ret, thresh6 = cv2.threshold(img,-1,255, cv2.THRESH_OTSU)
ret, thresh7 = cv2.threshold(img,-1,255, cv2.THRESH_TRUNC | cv2.THRESH_OTSU)

titles = ['Original','BINARY','BINARY_INV','TRUNC','TOZERO','TOZERO_INV','OTSU','TRUNC OTSU']
images = [img,thresh1,thresh2,thresh3,thresh4,thresh5,thresh6,thresh7]

for i in range(8):
    plt.subplot(2,4,i+1),plt.imshow(images[i],'gray')
    plt.title(titles[i])
    plt.xticks([])
    plt.yticks([])

plt.show()

 

πŸ’— threshold 둜 적응 μž„κ³„μ²˜λ¦¬

import cv2
import numpy as np 
from matplotlib import pyplot as plt 

img_gray = cv2.imread('images/house.jpg', 0)

_, img_bin = cv2.threshold(img_gray, 127, 255, cv2.THRESH_BINARY)
adt_mean = cv2.adaptiveThreshold(img_gray, 255, 
                                 cv2.ADAPTIVE_THRESH_MEAN_C, 
                                 cv2.THRESH_BINARY, 15, 0)

# adaptiveThreshold : 경계선 주변을 μ μ ˆν•˜κ²Œ ν‘œν˜„ν•¨
# Gaussian : λ‘λ“œλŸ¬μ§„ 곳을 더 λ‘λ“œλŸ¬μ§€κ²Œ?
adt_gaus = cv2.adaptiveThreshold(img_gray, 255, 
                                 cv2.ADAPTIVE_THRESH_GAUSSIAN_C, 
                                 cv2.THRESH_BINARY, 15, 0)

titles = ['Gray', 'Global', 'Mean', 'Gaussian']
images = [img_gray, img_bin, adt_mean, adt_gaus]

plt.figure(figsize=(8,6))
for i in range(4):
    plt.subplot(2,2,i+1),plt.imshow(images[i],'gray')
    plt.title(titles[i])
    plt.xticks([])
    plt.yticks([])

plt.show()

 

πŸ’— threshold 둜 μ μ‘ μž„κ³„μ²˜λ¦¬

import cv2
import numpy as np 
from matplotlib import pyplot as plt 

img_gray = cv2.imread('images/paper.jpg', 0)

_, img_bin = cv2.threshold(img_gray, 127, 255, cv2.THRESH_BINARY)
adt_mean = cv2.adaptiveThreshold(img_gray, 255, 
                                 cv2.ADAPTIVE_THRESH_MEAN_C, 
                                 cv2.THRESH_BINARY, 7, 0)
adt_gaus = cv2.adaptiveThreshold(img_gray, 255, 
                                 cv2.ADAPTIVE_THRESH_GAUSSIAN_C, 
                                 cv2.THRESH_BINARY, 7, 0)

titles = ['Gray', 'Global', 'Mean', 'Gaussian']
images = [img_gray, img_bin, adt_mean, adt_gaus]

plt.figure(figsize=(8,6))
for i in range(4):
    plt.subplot(2,2,i+1),plt.imshow(images[i],'gray')
    plt.title(titles[i])
    plt.xticks([])
    plt.yticks([])

plt.show()

728x90
λ°˜μ‘ν˜•
Comments