π 곡λΆνλ μ§μ§μνμΉ΄λ μ²μμ΄μ§?
[Python μΌλ‘ μμμ²λ¦¬ (3)] cv2.threshold() λ³Έλ¬Έ
π©βπ» IoT (Embedded)/Image Processing
[Python μΌλ‘ μμμ²λ¦¬ (3)] cv2.threshold()
μ§μ§μνμΉ΄ 2023. 12. 28. 10:45728x90
λ°μν
π 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
λ°μν
'π©βπ» IoT (Embedded) > Image Processing' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
Comments