OpenCV: 10行代码完成磨皮算法

在公司的好处是可以根据公司不同的项目,来学习不同的方向,而在学校的好处就是可以给你足够的时间来对一个你感兴趣的领域进行深入研究。一个是从广度上进行学习,另一个是从深度上进行学习,哈哈,只要每天有所得就行。

下面是LZ预研美颜算法时,使用OpenCV进行一个简单的pipeline构建,当然代码量非常少,只有10来行,效果呢还是有的,但是肯定得对每隔过程进行优化(≧▽≦)/啦啦啦

放出代码,当中进行注释的是进行视频实时处理需要的,如果需要的小伙伴可以自行调节代码

import cv2

# cap = cv2.VideoCapture(0)
# face detection part,download the xml file from
# https://github.com/opencv/opencv/tree/master/data/haarcascades
face_cascade = cv2.CascadeClassifier("./data/haarcascade_frontalface_default.xml")
img = cv2.imread("1.jpeg")

# while True:
#     ret, img = cap.read()
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# function: detectMultiScale(self, image, scaleFactor=None, minNeighbors=None, flags=None, minSize=None, maxSize=None):
faces = face_cascade.detectMultiScale(gray, 1.3, 5)
for (x, y, w, h) in faces:
    img = cv2.rectangle(img, (x, y), (x + w, y + h), (255, 0, 0), 2)
    # use bilateral filter 
    # The function applies bilateral filtering to the input image, as described in
    # http://www.dai.ed.ac.uk/CVonline/LOCAL_COPIES/MANDUCHI1/Bilateral_Filtering.html
    # bilateralFilter can reduce unwanted noise very well while keeping edges fairly sharp. However, it is
    # very slow compared to most filters.
    img = cv2.bilateralFilter(src=img, d=5, sigmaColor=40, sigmaSpace=5)

cv2.imshow("img", img)
cv2.waitKey(0)
# if cv2.waitKey(1) & 0xFF == ord("q"):
#     break

看下效果,所放示例图仅供实验使用。
原图:
在这里插入图片描述下图为磨皮后的效果:
在这里插入图片描述再来一对对比图
在这里插入图片描述
磨皮后呢?
在这里插入图片描述
(@ο@) 哇~10行代码的效果,酷!

好了,要想着怎么优化了%>_<%

发布了300 篇原创文章 · 获赞 203 · 访问量 59万+

猜你喜欢

转载自blog.csdn.net/Felaim/article/details/103416548