单纯的变大再覆盖上去,头部检测信息不够全,效果实在是太差,就不多说了,只是按照自己的思路玩一玩,没有达到抖音上那么好的效果

 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图像融合(大头)的更多相关文章

  1. opencv图像融合(给人脸添加一个眼镜)

    基于dlib68点人脸检测的小功能实现 图像旋转找的现成的方法,稍稍麻烦点的地方就是mask处理,虽然目的达到了,但是效果一般 import numpy as np import cv2 as cv ...

  2. OpenCV探索之路(二十四)图像拼接和图像融合技术

    图像拼接在实际的应用场景很广,比如无人机航拍,遥感图像等等,图像拼接是进一步做图像理解基础步骤,拼接效果的好坏直接影响接下来的工作,所以一个好的图像拼接算法非常重要. 再举一个身边的例子吧,你用你的手 ...

  3. OpenCV计算机视觉学习(2)——图像算术运算 & 掩膜mask操作(数值计算,图像融合,边界填充)

    在OpenCV中我们经常会遇到一个名字:Mask(掩膜).很多函数都使用到它,那么这个Mask到底是什么呢,下面我们从图像基本运算开始,一步一步学习掩膜. 1,图像算术运算 图像的算术运算有很多种,比 ...

  4. OpenCV中图像融合

         准备2副背景图像,注意图像黑色的部分,是作为mask用的,我们会用灰度图的方式打开它们,这时黑色的部分值为0,则图像融合时候,可以把第二幅图像在黑色的部分显示出来. 代码非常简单,注意就是图 ...

  5. paper 101:图像融合算法及视觉艺术应用

    1:基于泊松方程的图像融合方法,利用偏微分方程实现了不同图像上区域的无缝融合.比较经典的文章: P. Pérez, M. Gangnet, A. Blake. Poisson image editin ...

  6. 图像融合之泊松融合(Possion Matting)

    前面有介绍拉普拉斯融合,今天说下OpenCV泊松融合使用.顺便提一下,泊松是拉普拉斯的学生. 泊松融合的原理请参考这篇博文https://blog.csdn.net/u011534057/articl ...

  7. 基于均值坐标(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 ...

  8. 如何使用Python实现图像融合及加法运算?

    摘要:本篇文章主要讲解Python调用OpenCV实现图像融合及加法运算,包括三部分知识:图像融合.图像加法运算.图像类型转换. 本文分享自华为云社区<[Python图像处理] 五.图像融合.加 ...

  9. OpenCV图像金字塔:高斯金字塔、拉普拉斯金字塔与图片尺寸缩放

    这篇已经写得很好,真心给作者点个赞.题目都是直接转过来的,直接去看吧. Reference Link : http://blog.csdn.net/poem_qianmo/article/detail ...

随机推荐

  1. Linux安装Apache常见报错(二)

    配置Apache提示报错configure error: APR could not be located. Please use the --with-apr option. 解决办法: ./con ...

  2. 【kindle笔记】读书记录-总

    注:谨以此贴记录各种读书心得的目录.包括纸质书和电子书等等. 我的啃豆 说起来,买啃豆的初心是<鸟哥私房菜> 来自亚马逊中国官网,于公元2017年,在双十一与双十二中间,一千大洋购得 有了 ...

  3. bat 文本合并

    小工具—把多个TXT文件合成一个 - TTXS_RS的博客 - CSDN博客https://blog.csdn.net/TTXS_RS/article/details/79743384 把所有文本文件 ...

  4. 上古神器之Vim编辑器

    在Linux操作环境下进行文本的编辑少不了编辑器vi ,vim,nona... 一. 修改颜色方案 有时候,使用vim打开一个文件,竟然是蓝色的,辨识度相当的差,这个时候,我们可以调整 一下颜色的搭配 ...

  5. css小demo

    span{ color: #ccc; float: right; font-weight: bold; display: inline-block; border-right: solid 1px # ...

  6. checkout 多选 全选(亲测有效)

    <input type="button" id="btn1" value="全选"> <input type=" ...

  7. Day 6-2简单的socket通信

    什么是socket? Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口.在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面 ...

  8. 关于mysql远程登录问题

    问题:mysql不能实现远程登录 前提:mysql开启了远程登录账号,安全组也放行了3306,防火墙是iptables,也加入了3306放行,但是还是不能实现远程访问 解决办法,使用iptables ...

  9. vue之综合Demo:打沙袋

    demo7.html <!DOCTYPE html> <html lang="en" xmlns:v-bind="http://www.w3.org/1 ...

  10. windows下ping端口

    上图的操作完成以后  进入dos控制台 输入telnet  ip地址  端口号   回车 标识已ping通 ping不通是这种提示