第一个步骤是载入图片。定义read_file函数,其中包含cv2_imshow,来载入我们在Google Colab中选择的图片。
defread_file(filename):
img = cv2.imread(filename)
cv2_imshow(img)
return img
调用创建的函数来载入图像:
uploaded = files.upload()
filename = next(iter(uploaded))
img = read_file(filename)
我选择将下面这张图变为卡通图片:
2. 创建边缘蒙版
常见的卡通效果强调图像中边缘的厚度。可以通过cv2.adaptiveThreshold() 函数来检测图像中的边缘。我们可以将egde_mask函数定义为:
defedge_mask(img, line_size,blur_value):
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
gray_blur = cv2.medianBlur(gray,blur_value)
edges = cv2.adaptiveThreshold(gray_blur, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, line_size,blur_value)
return edges
在该函数中,我们将图像转换成灰度图像,然后使用cv2.medianBlur来减少模糊的灰度图像的噪点。模糊值越大,意味着图像中出现的黑色噪点越少。接着,应用adaptiveThreshold函数,定义边缘的线条粗细。线条越粗,意味着图像中强调的边缘越厚。
定义完函数后,调用函数就可以看到结果了。
line_size = 7
blur_value = 7edges = edge_mask(img, line_size, blur_value)
cv2_imshow(edges)