In [1]:
import cv2
figsize(12,8)
In [2]:
training_bgr = cv2.imread('./data/skin-training.jpg')
training_rgb = cv2.cvtColor(training_bgr, cv2.COLOR_BGR2RGB)
training = cv2.cvtColor(training_bgr, cv2.COLOR_BGR2LAB)
M, N, _ = training.shape
In [11]:
mask = zeros((M,N))
mask[training[:,:,0] > 160] = 1
In [12]:
subplot(1,2,1)
imshow(training_rgb)
subplot(1,2,2)
imshow(mask, cmap=cm.binary_r)
Out[12]:
In [13]:
data = training.reshape(M*N, -1)[:,1:]
data
Out[13]:
In [14]:
target = mask.reshape(M*N)
target
Out[14]:
In [15]:
from sklearn.naive_bayes import GaussianNB
gnb = GaussianNB()
gnb.fit(data, target)
Out[15]:
In [16]:
test_bgr = cv2.imread('./data/thiago.jpg')
test_rgb = cv2.cvtColor(test_bgr, cv2.COLOR_BGR2RGB)
test = cv2.cvtColor(test_bgr, cv2.COLOR_BGR2LAB)
M_tst, N_tst, _ = test.shape
In [17]:
data = test.reshape(M_tst * N_tst, -1)[:,1:]
skin_pred = gnb.predict(data)
S = skin_pred.reshape(M_tst, N_tst)
In [18]:
subplot(1,3,1)
imshow(test_rgb)
subplot(1,3,2)
imshow(S, cmap=cm.binary_r)
subplot(1,3,3)
imshow(test_rgb, alpha=0.6)
imshow(S, cmap=cm.binary_r, alpha=0.4)
Out[18]: