单纯的变大再覆盖上去,头部检测信息不够全,效果实在是太差,就不多说了,只是按照自己的思路玩一玩,没有达到抖音上那么好的效果
import cv2 as cv
import numpy as np
import dlib detector = dlib.get_frontal_face_detector()
predictor = dlib.shape_predictor('../dlib/shape_predictor_68_face_landmarks.dat') def big_head(camera_idx):
cap = cv.VideoCapture(camera_idx)
while cap.isOpened():
cv.namedWindow('big_head', cv.WINDOW_AUTOSIZE)
ok, frame = cap.read()
# 镜像反转
if camera_idx == 0 or camera_idx == 1:
frame = cv.flip(frame, 1, dst=None)
if not ok:
break
gray = cv.cvtColor(frame, cv.COLOR_BGR2GRAY)
rects = detector(gray, 0)
for i in range(len(rects)):
landmarks = np.matrix([[p.x, p.y] for p in predictor(frame, rects[i]).parts()])
# 脸部中心点face_center,下巴down
face_center = (landmarks[29][0, 0], landmarks[29][0, 1])
down = (landmarks[8][0, 0], landmarks[8][0, 1])
left = (landmarks[0][0, 0], landmarks[0][0, 1])
right = (landmarks[16][0, 0], landmarks[0][0, 1])
# 上下偏移量y_offset,为了框出尽可能全的头部信息,边框扩大
y_offset = int(1.2*abs(face_center[1]-down[1]))
rect_start = (int(0.8*left[0]), face_center[1]-y_offset)
rect_end = (int(1.2*right[0]), face_center[1]+y_offset)
print(rect_start, rect_end)
face = frame[rect_start[1]: rect_end[1], rect_start[0]: rect_end[0]]
# 放大比例k_size
k_size = 1.1
size = (int(k_size*(rect_end[0]-rect_start[0])), int(k_size*(rect_end[1]-rect_start[1])))
face = cv.resize(face, size, interpolation=cv.INTER_CUBIC)
face_mask = 255 * np.ones(face.shape, face.dtype)
output = cv.seamlessClone(face, frame, face_mask, face_center, cv.NORMAL_CLONE)
cv.imshow('face', face) cv.rectangle(frame, rect_start, rect_end, (0, 0, 255), -1)
# cv.circle(frame, face_center, 1, (0, 0, 255), -1) cv.imshow('big_head', output)
c = cv.waitKey(10)
if c & 0xFF == ord('q'):
break
cap.release()
cv.destroyAllWindows() if __name__ == '__main__':
video = '../video/face.mp4'
big_head(video)
# test()
效果
opencv图像融合(大头)的更多相关文章
-
opencv图像融合(给人脸添加一个眼镜)
基于dlib68点人脸检测的小功能实现 图像旋转找的现成的方法,稍稍麻烦点的地方就是mask处理,虽然目的达到了,但是效果一般 import numpy as np import cv2 as cv ...
-
OpenCV探索之路(二十四)图像拼接和图像融合技术
图像拼接在实际的应用场景很广,比如无人机航拍,遥感图像等等,图像拼接是进一步做图像理解基础步骤,拼接效果的好坏直接影响接下来的工作,所以一个好的图像拼接算法非常重要. 再举一个身边的例子吧,你用你的手 ...
-
OpenCV计算机视觉学习(2)——图像算术运算 &; 掩膜mask操作(数值计算,图像融合,边界填充)
在OpenCV中我们经常会遇到一个名字:Mask(掩膜).很多函数都使用到它,那么这个Mask到底是什么呢,下面我们从图像基本运算开始,一步一步学习掩膜. 1,图像算术运算 图像的算术运算有很多种,比 ...
-
OpenCV中图像融合
准备2副背景图像,注意图像黑色的部分,是作为mask用的,我们会用灰度图的方式打开它们,这时黑色的部分值为0,则图像融合时候,可以把第二幅图像在黑色的部分显示出来. 代码非常简单,注意就是图 ...
-
paper 101:图像融合算法及视觉艺术应用
1:基于泊松方程的图像融合方法,利用偏微分方程实现了不同图像上区域的无缝融合.比较经典的文章: P. Pérez, M. Gangnet, A. Blake. Poisson image editin ...
-
图像融合之泊松融合(Possion Matting)
前面有介绍拉普拉斯融合,今天说下OpenCV泊松融合使用.顺便提一下,泊松是拉普拉斯的学生. 泊松融合的原理请参考这篇博文https://blog.csdn.net/u011534057/articl ...
-
基于均值坐标(Mean-Value Coordinates)的图像融合算法的具体实现
目录 1. 概述 2. 实现 2.1. 准备 2.2. 核心 2.2.1. 均值坐标(Mean-Value Coordinates) 2.2.2. ROI边界栅格化 2.2.3. 核心实现 2.2.4 ...
-
OpenCV图像金字塔:高斯金字塔、拉普拉斯金字塔与图片尺寸缩放
这篇已经写得很好,真心给作者点个赞.题目都是直接转过来的,直接去看吧. Reference Link : http://blog.csdn.net/poem_qianmo/article/detail ...
-
【OpenCV新手教程之十三】OpenCV图像金字塔:高斯金字塔、拉普拉斯金字塔与图片尺寸缩放
本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/26157633 作者:毛星云(浅墨) ...
随机推荐
-
AAS代码运行-第11章-1
启动PySpark export IPYTHON= # PySpark也可使用IPython shell pyspark --master yarn --num-executors 发生如下错误: / ...
-
CentOS 6.5_X64下安装MongoDB数据库
1.下载MongoDB 官网下载地址:https://www.mongodb.org/downloads 具体链接:https://fastdl.mongodb.org/linux/mongodb-l ...
-
python 零散记录(六) callable 函数参数 作用域 递归
callable()函数: 检查对象是否可调用,所谓可调用是指那些具有doc string的东西是可以调用的. 函数的参数变化,可变与不可变对象: 首先,数字 字符串 元组是不可变的,只能替换. 对以 ...
-
Linux内核——定时器和时间管理
定时器和时间管理 系统定时器是一种可编程硬件芯片.它能以固定频率产生中断.该中断就是所谓的定时器中断.它所相应的中断处理程序负责更新系统时间,还负责执行须要周期性执行的任务. 系统定时器和时钟中断处理 ...
-
自制权限框架(一)jsp标签
一.概述 在我们的系统中,很多时候都用到了权限.最简单的权限就是登录.登录了,我就可以自己的相关信息:没有登录,就不能看到. 目前比较流行的权限框架就是apache shiro和spring secu ...
-
MyEclipse10+Jdk1.7+OSGI+MySql实现数据库的增删改查
开发环境: Windows2008R2 64位+MyEclipse10+jdk1.7.0_67+MySql5.5 软件安装:myeclipse-10.0-offline-installer-windo ...
-
psql 关于主键自增的问题
在psql中往往我们需要设置一个自增的主键id字段,psql中不像SQL Server那样点选 打钩傻瓜式就能设置好的,是需要创建序列的:CREATE SEQUENCE,关键字SEQUENCE. 我们 ...
-
对filter的初步认识
Filter 技术是servlet 2.3 新增加的功能.servlet2.3是sun公司 于2000年10月发布的,它的开发者包括许多个人和公司团体,充分体现了sun公司所倡导的代码开放性原则.在 ...
-
Session和Cookie介绍及常见httpcode
Cookie和Session,及常见httpcode 1.cookie和session简介: cookie是放在客户端的键值对,用来识别用户信息的,主要包括:名字,值,过期时间,路径和域.路径与域一起 ...
-
(5)Jquery1.8.3快速入门_层次选择器
一.Jquery的选择器: 层级选择器: 1.空格 div span div中的包含的所有span后代元素 2. > ...