Qt+OpenCV之图片中的人脸识别及人脸抠图

效果在这里插入图片描述

OpenCV函数知识点

imread()

功能:载入图像
函数原型:Mat cv::imread ( const String & filename, int flags = IMREAD_COLOR )
参数1:打开的文件路径
参数2:图像类型,-1表示当前导入图像的解码类型,0表示单通道,1表示三通道

cvtColor()

功能:颜色空间(通道数)转换
函数原型:void cv::cvtColor ( InputArray src, OutputArray dst, int code, int dstCn = 0 )
参数1:输入的图像
参数2:输出的图像
参数3:转换格式

detectMultiScale()

功能:图像搜索
函数原型:virtual void cv::BaseCascadeClassifier::detectMultiScale ( InputArray image, std::vector< Rect > & objects, double scaleFactor, int minNeighbors, int flags, Size minSize, Size maxSize )
参数1:输入图像,灰度图
参数2:被成功定位后返回的目标边界矩阵变量
参数3:检测尺度之间的跳变。该值越大,检测速度越快,但会错过更多可能被检测到的目标
参数4:对阻止错误检测的控制。例如该值为3,则在人脸检测时表示只有至少存在3个重叠的检测标记时,才认定有人脸的存在
参数5:默认值为0,新版本无作用。如果使用旧版本(OpenCV 1.x)级联器,可以设置为 CV_HAAR_DO_CANNY_PRUNING,Canny边缘检测器将会用于拒绝一些区域
参数6:检测目标区域的最小值,小于该值的目标会被忽略
参数7:检测目标区域的最大值,大于该值的目标会被忽略

resize()

功能:改变图像大小
函数原型:void cv::resize ( InputArray src, OutputArray dst, Size dsize, double fx = 0,
double fy = 0, int interpolation = INTER_LINEAR )
参数1:输入图像
参数2:输出图像
参数3:新图像的尺寸。①使用绝对尺寸,直接在此参数设置新图像的尺寸即可,后面的参数无须再设置;②使用相对尺寸,此时设置此参数为Size(0, 0),并将fx和fy分别设置为x轴和y轴的缩放比例
参数4:基于x轴的缩放比例
参数5:基于y轴的缩放比例
参数6:插值方式,默认是线性插值

Qt核心源码

  1. pro文件中需要引入OpenCV接口文件和相关库文件
INCLUDEPATH += H:\opencv3.4.3\buildOpencv\install\include
LIBS += H:\opencv3.4.3\buildOpencv\install\x86\mingw\bin\libopencv*.dll
  1. 加载级联分类器
cv::CascadeClassifier faceCascade;
faceCascade.load("H:/opencv3.4.3/opencv/sources/data/haarcascades/haarcascade_frontalface_alt2.xml");
  1. 使用OpenCV接口导入图像,并转换为Qt类型图像进行显示
//读取图像,param1:文件路径; param2:图像类型,-1表示解码类型,0表示单通道,1表示三通道
cvImg = cv::imread(imgPath.toStdString(), -1)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

画茧自缚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值