首先有看了我前面几篇的博文的话,应该懂了,我为啥要先从大的照片中识别出人脸区域,有了这个我们才能去截取出我们想要的人脸部分,才能为后面的人脸识别做基础。然后需要opencv3.4自己自带的模型文件,在我们安装好的opencv目录下有,这里就不分享了。

#include <iostream>
#include <string>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include "opencv2/objdetect.hpp"
#include "opencv2/videoio.hpp"
#include "opencv2/imgproc.hpp"
#include <iostream>
#include <stdio.h>
using namespace cv;
using namespace std;
//string xmlPath = "D:\\vs 2013 code\\3-7face\\3-7face\\haarcascade_frontalface_default.xml";
string xmlPath = "haarcascade_frontalface_alt.xml";

void detectAndDisplay(Mat image);//xmlpath 字符串记录那个.xml文件的路径
int main(int argc, char**argv)
{
//以检测图片1.jpg为例
Mat image = imread("2.jpg");

CascadeClassifier a;     //创建脸部对象
if (!a.load(xmlPath))     //如果读取文件不出错,则检测人脸
{
cout << "无法加载xml文件" << endl;
return 0;
}
detectAndDisplay(image);// 检测人脸
return 0;

}

void detectAndDisplay(Mat image)
{
CascadeClassifier ccf;      //创建脸部对象
ccf.load(xmlPath);           //导入opencv自带检测的文件
vector<Rect> faces;
Mat gray;
cvtColor(image, gray, CV_BGR2GRAY);
equalizeHist(gray, gray);
ccf.detectMultiScale(gray, faces, 1.1, 3, 0, Size(50, 50), Size(500, 500));
for (vector<Rect>::const_iterator iter = faces.begin(); iter != faces.end(); iter++)
{
rectangle(image, *iter, Scalar(0, 0, 255), 2, 8); //画出脸部矩形
}
Mat image1;

for (size_t i = 0; i<faces.size(); i++)
{
Point center(faces[i].x + faces[i].width / 2, faces[i].y + faces[i].height / 2);
image1 = image(Rect(faces[i].x, faces[i].y, faces[i].width, faces[i].height));
}

imshow("1", image);
imshow("2", image1);
cvWaitKey(0);

}

这里是截取静态图片中的人脸区域,保存起来,相应的我上一篇文章有按p键就可以截取视频的图片,做一下简单的修改其实也就实现了视频中的人脸区域截取人脸图片。

由于没有保存好参考链接,没有引出,请见谅。

opencv3之截取静态图片的脸部区域相关推荐

  1. 批量跨帧提取人脸视频中的脸部区域帧图像python

    代码实现功能 1.所有人脸视频在一个文件夹中. 2.跨帧提取帧图像. 3.截取帧图像的脸部区域. 3.将截取到的所有脸部图像保存到新文件夹中. 代码语言:python3.6 #这个代码实现了批量跨帧提 ...

  2. python测试脚本截图_Python+selenium实现截图图片并保存截取的图片

    这篇文章介绍如何利用Selenium的方法进行截图,在测试过程中,是有必要截图,特别是遇到错误的时候进行截图.在selenium for Python中主要有三个截图方法,我们挑选其中最常用的一种. ...

  3. PhotoShop cc合并多张静态图片为gif动画

     合并静态图片为动态图步骤: 1.新建空白区域 2.选择文件-->置入嵌入的智能对象,选择你要合并的图片第一张 3.把图片填充满空白区域,确认 4.创建时间轴 5.点击转为帧动画 6,删除背 ...

  4. 在html中加入一个动态图,图片上加gif图片 图片某个角落贴个gif动态图,如何在静态图片上面加一张GIF动态图...

    喜欢上网的小伙伴就会知道网上流传灰常广泛一种搞笑gif动态图片,这类图片大部分是视频转gif的,就是截取视频经典搞笑画面制作而成,还加了些搞笑文字.使用网络聊天工具尤其是QQ就最常见了,那些搞笑的表情 ...

  5. jquery实现截取pc图片_Cropper.js 实现裁剪图片并上传(PC端)

    由于之前做项目的时候有需求是需要实现裁剪图片来做头像并上传到服务器,所以上网查询了很多资料,也试用了许多案例,发现cropper插件裁剪是比较完善的,所以结合之前的使用情况,编写了此案例.本案例是参考 ...

  6. OpenCV截取图像的某一区域

    1.概述 案例:加载一张彩色图片,并截取其中的部分输出. 2.示例图片 3.示例代码 #include <opencv2/opencv.hpp> #include <iostream ...

  7. 图php图片怎么下载成动态图,怎么把动图和图片合在一起 gif动图与jpg静态图片上下拼接...

    看到一个热点消息,是最新的中国男女成人平均身高出炉,我国18-44岁男女平均身高分别为169.7厘米和158厘米,都来看看自己有没有拖后腿哈哈!回到主题,本次来讲讲怎么把动图和图片合在一起.小编在刷微 ...

  8. 有趣又有料:任意操控静态图片中人的眼球

    转载: http://mp.weixin.qq.com/s/PF3sb5mgFEgtYRrw5YJDEQ 最近深度学习学术圈出现了一个很有趣的演示demo:DeepWarp.输入一张包含人脸的静态图片 ...

  9. 在静态图片上加跳转链接

    开发中常会遇到一张静态图片,需要点击图片不同位置跳转链接如下图 因为手机屏幕的大小不同,设置图片宽度为100%,根据浏览器渲染图片机制,高度会根据宽度等比例缩放 <img src="h ...

最新文章

  1. JavaServer Faces技术
  2. Android学习书籍参考
  3. SAP QM 物料主数据QM视图里字段MARC-INSMK的更新
  4. php usort strc,php中usort自定义排序如何使用
  5. Python中列表的copy方法
  6. Steps to developing Metro style apps 第一章-Creat a UI(2)(4)
  7. 二叉排序树与文件操作的设计与实现_堆排序就这么简单
  8. 【汇编语言】王爽实验5(5)(6)的解答 建立数据类型匹配的观念
  9. minio 授予永久访问权限_应对 iOS 14 权限管理 应用手把手教你打开“所有照片”权限...
  10. [css] 实现单行文本居中和多行文本左对齐并超出显示“...“
  11. XenServer学习笔记1虚拟磁盘和虚拟内存
  12. 设置为首页,加入收藏 | JS完美实现代码收藏
  13. Flash | 用几张帧图创建逐帧动画元件并插入场景层的一般步骤
  14. PC机装Openwrt19.07做BT下载机的详细配置
  15. python时间模块 datetime (datetime、timedelta和timezone部分)
  16. 借华为鸿蒙系统发布,谈谈操作系统的爱恨情仇发展史
  17. 几个shell编程的小案例
  18. 看完李宏毅的视频我决定学好英语了
  19. 开源的RSS订阅器FreshRSS
  20. Correct Sentence

热门文章

  1. Confluent Platform 的快速上手
  2. 聊聊区块链的创新技术
  3. java addslashes_php---------字符串转义函数(addslashes,stripslashes)
  4. html代码大全百度云,html代码大全(基础使用代码)(颜色代码完整版)
  5. hduoj 2003
  6. 端口复用·一个端口多个进程使用
  7. 只能看不能读的中文文章
  8. 为什么年轻时要多赚钱?这是我听过最好的回答
  9. Oracle数据库第四课——PL/SQL中的条件控制
  10. mysqlpid ended