OpenCV-Python实现人脸美白算法的实例

人脸美白原理

人脸美白原理说透了,就是一种图像的颜色空间处理,所以我们需要通过颜色空间进行设计。

不过,我们先来参考以下PS对于图像美白的处理步骤:

  • 首先,新建一个图层,将这个图层设置为白色
  • 接着,将白色图层与原本图像进行alpha通道的颜色混合,这样就可以使图像整体变白。

通过PS的操作,我们大致可以知道需要创建一个与原图同等大小维度的图像,然后全部赋值为白色,然后通过图像图像加权和将两个图像叠加即可。

不过,这里明显存在很多问题,在PS中,我们虽然创建了全白色的图层,但是我们可以剪裁或者使用画笔工具只让白色叠加倒人物身上。而程序中,我们这么做会导致整个图像偏白,效果非常不理想。

那么,我们就需要考虑一个新的思路来实现人脸美白效果。

根据论文“A Two-Stage Contrast Enhancement Algorithm for Digital Images”,采用映射表,使原图在色阶上有所增强,并在图像两端亮度相对减弱,中间增强,则会产生不错的美白效果,又能使图像白的更自然。

这里,我们提供一个美白映射表Color_list:

Color_list = [
	1, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 31, 33, 35, 37, 39,
	41, 43, 44, 46, 48, 50, 52, 53, 55, 57, 59, 60, 62, 64, 66, 67, 69, 71, 73, 74,
	76, 78, 79, 81, 83, 84, 86, 87, 89, 91, 92, 94, 95, 97, 99, 100, 102, 103, 105,
	106, 108, 109, 111, 112, 114, 115, 117, 118, 120, 121, 123, 124, 126, 127, 128,
	130, 131, 133, 134, 135, 137, 138, 139, 141, 142, 143, 145, 146, 147, 149, 150,
	151, 153, 154, 155, 156, 158, 159, 160, 161, 162, 164, 165, 166, 167, 168, 170,
	171, 172, 173, 174, 175, 176, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187,
	188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203,
	204, 205, 205, 206, 207, 208, 209, 210, 211, 211, 212, 213, 214, 215, 215, 216,
	217, 218, 219, 219, 220, 221, 222, 222, 223, 224, 224, 225, 226, 226, 227, 228,
	228, 229, 230, 230, 231, 232, 232, 233, 233, 234, 235, 235, 236, 236, 237, 237,
	238, 238, 239, 239, 240, 240, 241, 241, 242, 242, 243, 243, 244, 244, 244, 245,
	245, 246, 246, 246, 247, 247, 248, 248, 248, 249, 249, 249, 250, 250, 250, 250,
	251, 251, 251, 251, 252, 252, 252, 252, 253, 253, 253, 253, 253, 254, 254, 254,
	254, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
	255, 255, 255, 256]

实现人脸美白

既然人脸美白的原理,以及美白的颜色映射表都给到了你。下面,我们就可以实现人脸美白效果,具体代码如下所示:

def face_whitening(fileName):
    img = cv2.imread(fileName)
    img = cv2.bilateralFilter(img, 19, 75, 75)
    height, width, n = img.shape
    img2 = img.copy()
    for i in range(height):
        for j in range(width):
            b = img2[i, j, 0]
            g = img2[i, j, 1]
            r = img2[i, j, 2]
            img2[i, j, 0] = Color_list[b]
            img2[i, j, 1] = Color_list[g]
            img2[i, j, 2] = Color_list[r]
    cv2.imwrite("59_1.jpg",img2)

    image = Image.open("59_1.jpg")
    # 锐度调节
    enh_img = ImageEnhance.Sharpness(image)
    image_sharped = enh_img.enhance(1.2)
    # 颜色均衡调节
    con_img = ImageEnhance.Contrast(image_sharped)
    image_con = con_img.enhance(1.2)
    image_con.save("59_2.jpg")

    img1 = cv2.imread("58.jpg")
    img2 = cv2.imread("59_2.jpg")
    cv2.imshow("1", img1)
    cv2.imshow("2", img2)
    cv2.waitKey()
    cv2.destroyAllWindows()

if __name__ == "__main__":
    face_whitening("58.jpg")

运行之后,效果如下:

到此这篇关于OpenCV-Python实现人脸美白算法的实例的文章就介绍到这了,更多相关OpenCV人脸美白 内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python+OpenCV人脸检测原理及示例详解

    关于opencv OpenCV 是 Intel 开源计算机视觉库 (Computer Version) .它由一系列 C 函数和少量 C++ 类构成,实现了图像处理和计算机视觉方面的很多通用算法. OpenCV 拥有包括 300 多个 C 函数的跨平台的中.高层 API .它不依赖于其它的外部库 -- 尽管也可以使用某些外部库. OpenCV 对非商业应用和商业应用都是免费 的.同时 OpenCV 提供了对硬件的访问,可以直接访问摄像头,并且 opencv 还提供了一个简单的 GUI(graph

  • Python opencv实现人眼/人脸识别以及实时打码处理

    利用Python+opencv实现从摄像头捕获图像,识别其中的人眼/人脸,并打上马赛克. 系统环境:Windows 7 + Python 3.6.3 + opencv 3.4.2 一.系统.资源准备 要想达成该目标,需要满足一下几个条件: 找一台带有摄像头的电脑,一般笔记本即可: 需配有Python3,并安装NumPy包.opencv: 需要有已经训练好的分类器,用于识别视频中的人脸.人眼等,如无分类器,可以点击这里下载:haarcascades分类器 二.动手做 1.导入相关包.设置视频格式.

  • OPENCV+JAVA实现人脸识别

    本文实例为大家分享了JAVA实现人脸识别的具体代码,供大家参考,具体内容如下 官方下载 安装文件 ,以win7为例,下载opencv-2.4.13.3-vc14.exe 安装后,在build目录下 D:\opencv\build\java,获取opencv-2413.jar,copy至项目目录 同时需要dll文件 与 各 识别xml文件,进行不同特征的识别(人脸,侧脸,眼睛等) dll目录:D:\opencv\build\java\x64\opencv_java2413.dll xml目录:D:

  • opencv 做人脸识别 opencv 人脸匹配分析

    机器学习 机器学习的目的是把数据转换成信息. 机器学习通过从数据里提取规则或模式来把数据转成信息. 人脸识别 人脸识别通过级联分类器对特征的分级筛选来确定是否是人脸. 每个节点的正确识别率很高,但正确拒绝率很低. 任一节点判断没有人脸特征则结束运算,宣布不是人脸. 全部节点通过,则宣布是人脸. 工业上,常用人脸识别技术来识别物体. 对图片进行识别 复制代码 代码如下: #include "opencv2/core/core.hpp" #include "opencv2/obj

  • 详解如何用OpenCV + Python 实现人脸识别

    下午的时候,配好了OpenCV的Python环境,OpenCV的Python环境搭建.于是迫不及待的想体验一下opencv的人脸识别,如下文. 必备知识 Haar-like 通俗的来讲,就是作为人脸特征即可. Haar特征值反映了图像的灰度变化情况.例如:脸部的一些特征能由矩形特征简单的描述,如:眼睛要比脸颊颜色要深,鼻梁两侧比鼻梁颜色要深,嘴巴比周围颜色要深等. opencv api 要想使用opencv,就必须先知道其能干什么,怎么做.于是API的重要性便体现出来了.就本例而言,使用到的函数

  • Python基于Opencv来快速实现人脸识别过程详解(完整版)

    前言 随着人工智能的日益火热,计算机视觉领域发展迅速,尤其在人脸识别或物体检测方向更为广泛,今天就为大家带来最基础的人脸识别基础,从一个个函数开始走进这个奥妙的世界. 首先看一下本实验需要的数据集,为了简便我们只进行两个人的识别,选取了beyond乐队的主唱黄家驹和贝斯手黄家强,这哥俩长得有几分神似,这也是对人脸识别的一个考验: 两个文件夹,一个为训练数据集,一个为测试数据集,训练数据集中有两个文件夹0和1,之前看一些资料有说这里要遵循"slabel"命名规则,但后面处理起来比较麻烦,

  • OpenCV Java实现人脸识别和裁剪功能

    本文实例为大家分享了OpenCV Java实现人脸识别和裁剪的具体代码,供大家参考,具体内容如下 安装及配置 1.首先安装OpenCV,地址 这里我下载的是Windows版的3.4.5 然后安装即可-- 2.Eclipse配置OpenCV Window->Preferences->Java->User Libraries New输入你的Libraries名 这里我的安装目录是D:\OpenCV,所以是: 然后引入dll,我是64位机子,所以是: Ok,下面创建Java项目做Java与Op

  • 基于python3 OpenCV3实现静态图片人脸识别

    本文采用OpenCV3和Python3 来实现静态图片的人脸识别,采用的是Haar文件级联. 首先需要将OpenCV3源代码中找到data文件夹下面的haarcascades文件夹里面包含了所有的OpenCV的人脸检测的XML文件,这些文件可以用于检测静态,视频文件,摄像头视频流中的人脸,找到haarcascades文件夹后,复制里面的XML文件,在你新建的Python脚本文件目录里面建一个名为cascades的文件夹,并把复制的XML文件粘贴到新建的文件夹中一些有人脸的的图片,这个大家可以自行

  • OpenCV-Python实现人脸美白算法的实例

    人脸美白原理 人脸美白原理说透了,就是一种图像的颜色空间处理,所以我们需要通过颜色空间进行设计. 不过,我们先来参考以下PS对于图像美白的处理步骤: 首先,新建一个图层,将这个图层设置为白色 接着,将白色图层与原本图像进行alpha通道的颜色混合,这样就可以使图像整体变白. 通过PS的操作,我们大致可以知道需要创建一个与原图同等大小维度的图像,然后全部赋值为白色,然后通过图像图像加权和将两个图像叠加即可. 不过,这里明显存在很多问题,在PS中,我们虽然创建了全白色的图层,但是我们可以剪裁或者使用

  • 人脸检测实战终极之OpenCV+Python实现人脸对齐

    目录 前言 实现面部矫正器 导入必要的包 对齐人脸 展示结果 前言 这篇博文的目的是演示如何使用 OpenCV.Python 和面部标志对齐人脸. 给定一组面部标志(输入坐标),我们的目标是将图像扭曲并转换为输出坐标空间. 在这个输出坐标空间中,整个数据集中的所有面都应该: 在图像中居中. 旋转,使眼睛位于水平线上(即,旋转面部,使眼睛位于相同的 y 坐标上). 进行缩放,使面的大小大致相同. 为此,我们将首先调用一个实现的 Python 类FaceAligner ,以使用仿射变换对齐人脸. 注

  • 对python数据切割归并算法的实例讲解

    当一个 .txt 文件的数据过于庞大,此时想要对数据进行排序就需要先将数据进行切割,然后通过归并排序,最终实现对整体数据的排序.要实现这个过程我们需要进行以下几步:获取总数据行数:根据行数按照自己的需要对数据进行切割:对每组数据进行排序 最后对所有数据进行归并排序. 下面我们就来实现这整个过程: 一:获取总数据的行 def get_file_lines(file_path): # 目标文件的路径 file_path = str(file_path) with open(file_path, 'r

  • python实现人脸检测的简单实例

    目录 OpenCV 代码结果: 方法如下: 完整代码: 总结 OpenCV OpenCV 是计算机视觉领域最受欢迎的开源库,起初它由 C/C ++ 编写,现在用 Python 也能使用. OpenCV 可以使用机器学习算法搜索图像中的人脸.由于人脸比较复杂,所以并没有一种简单的测试可以告诉我们它是否发现了人脸.但是,算法能够匹配到数千个很小的模式和特征.算法会将识别人脸的任务分解为几千个非常非常小的任务,像这种很小的任务,解决起来就比较容易了.这样的微小任务就被称为分类器. 代码结果: 方法如下

  • python实现人脸识别经典算法(一) 特征脸法

    近来想要做一做人脸识别相关的内容,主要是想集成一个系统,看到opencv已经集成了三种性能较好的算法,但是还是想自己动手试一下,毕竟算法都比较初级. 操作环境:python2.7 第三方库:opencv for python.numpy 第一种比较经典的算法就是特征脸法,本质上其实就是PCA降维,这种算法的基本思路是,把二维的图像先灰度化,转化为一通道的图像,之后再把它首尾相接转化为一个列向量,假设图像大小是20*20的,那么这个向量就是400维,理论上讲组织成一个向量,就可以应用任何机器学习算

  • Python+OpenCV+pyQt5录制双目摄像头视频的实例

    起因 说起来录制视频,我们可能有很多的软件,但是比较坑的是,好像很少的软件支持能够同时录制两个摄像头的视频,于是我们用python自己写一个.要是OpenCV+python.貌似很简单就能OK的事情,但是,我们的项目不是一般要展示给老师看嘛.谁愿意看一个没有界面的录制过程是吧~,最后会附上源代码~ 依赖的包 在这里,我直接把import的包写出来了各位可以进行对号入座,然后就能知道需要安装哪个包啦! import cv2 import numpy as np from PyQt5.QtWidge

  • 基于python OpenCV实现动态人脸检测

    本文实例为大家分享了python动态人脸检测的具体代码,供大家参考,具体内容如下 直接上代码: 按Q退出 import cv2 import numpy as np cv2.namedWindow("test") cap = cv2.VideoCapture(0) #加载摄像头录制 # cap = cv2.VideoCapture("test.mp4") #打开视频文件 success, frame = cap.read() # classifier = cv2.C

  • Python+Opencv实战之人脸追踪详解

    目录 前言 人脸追踪技术简介 使用基于 dlib DCF 的跟踪器进行人脸跟踪 使用基于 dlib DCF 的跟踪器进行对象跟踪 小结 前言 人脸处理是人工智能中的一个热门话题,人脸处理可以使用计算机视觉算法从人脸中自动提取大量信息,例如身份.意图和情感:而目标跟踪试图估计目标在整个视频序列中的轨迹,其中只有目标的初始位置是已知的,将这两者进行结合将产生许多有趣的应用.由于外观变化.遮挡.快速运动.运动模糊和比例变化等多种因素,人脸追踪非常具有挑战性. 人脸追踪技术简介 基于判别相关滤波器 (d

  • Python基于opencv实现的人脸识别(适合初学者)

    目录 一点背景知识 一.人脸识别步骤 二.直接上代码 (1)录入人脸.py (2)数据训练.py (3)进行识别.py 三.运行过程及结果 1.获取人脸照片于目标文件中 2.进行数据训练,获得trainer.yml文件中的数据 3.进行识别 总结 一点背景知识 OpenCV 是一个开源的计算机视觉和机器学习库.它包含成千上万优化过的算法,为各种计算机视觉应用提供了一个通用工具包.根据这个项目的关于页面,OpenCV 已被广泛运用在各种项目上,从谷歌街景的图片拼接,到交互艺术展览的技术实现中,都有

随机推荐