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