OpenCV实例
- 格式:ppt
- 大小:3.67 MB
- 文档页数:146


龙源期刊网
基于OpenCV的人脸检测
作者:刘卫华 吴丹
来源:《科技创新与应用》2019年第31期 龙源期刊网
龙源期刊网
摘; 要:随着智能设备的不断发展,人脸检测技术应用于越来越多的领域,极大的丰富和方便了人们的生活,具有很大的商业价值和研究意义。文章研究了AdaBoost人脸检测算法的原理和性能,通过使用OpenCV和VS2012实现了图像及视频中人脸检测的目的,检测结果表明AdaBoost算法具有良好的实时检测性能和较强的准确性。
关键词:OpenCV;人脸图像预处理;AdaBoost算法;人脸检测
中图分类号:TP181; ; ; ; ;文献标志码:A; ; ; ; ;文章编号:2095-2945(2019)31-0018-02
Abstract: With the continuous development of intelligent devices, face detection technology
is applied in more and more fields, thus greatly enriching and facilitating people's life, so it has
great commercial value and research significance. The principle and performance of AdaBoost face
detection algorithm are emphatically studied. The purpose of face detection in image and video is
realized by using OpenCV and VS2012. The detection results show that AdaBoost algorithm has good
Opencv函数
分配图像空间:IplImage*cvCreateImage(CvSizesize,intdepth,intchannels);
size:cvSize(width,height);
depth:IPL_DEPTH_8U,IPL_DEPTH_8S,IPL_DEPTH_16U,
IPL_DEPTH_16S,IPL_DEPTH_32S,IPL_DEPTH_32F,
IPL_DEPTH_64F
channels:1,2,3or4.
注意数据为交叉存取.彩色图像的数据编排为b0g0r0b1g1
r1...
举例:
//分配一个单通道字节图像
IplImage*img1=cvCreateImage(cvSize(640,480),IPL_DEPTH_8U,1);
//分配一个三通道浮点图像
IplImage*img2=cvCreateImage(cvSize(640,480),IPL_DEPTH_32F,3);
释放图像空间:IplImage*img=cvCreateImage(cvSize(640,480),IPL_DEPTH_8U,1);
cvReleaseImage(&img);
复制图像:IplImage*img1=cvCreateImage(cvSize(640,480),IPL_DEPTH_8U,1);
IplImage*img2;
img2=cvCloneImage(img1);
设定/获取兴趣区域:voidcvSetImageROI(IplImage*image,CvRectrect);
voidcvResetImageROI(IplImage*image);
vRectcvGetImageROI(constIplImage*image);
大部分OpenCV函数都支持ROI.
设定/获取兴趣通道:voidcvSetImageCOI(IplImage*image,intcoi);//0=all
intcvGetImageCOI(constIplImage*image);
[OpenCV]代码整理
开发环境:Windows7, VS2010, OpenCV2.4.10
1.图像特征匹配
1 // AxFeatureExtract.cpp : 定义控制台应⽤程序的⼊⼝点。
2 //
3
4 #include "stdafx.h"
5 #include "opencv2/opencv.hpp"
6 #include
7 #include
8 #include
9 #include "vector"
10
11 using namespace std;
12
13 int _tmain(int argc, _TCHAR* argv[])
14 {
15 cv::Mat rgb1 = cv::imread( "G:\\SLAMDatasets\\⼀起做RGB-DSLAM数据\\rgb_png\\1.png");
16 cv::Mat rgb2 = cv::imread( "G:\\SLAMDatasets\\⼀起做RGB-DSLAM数据\\rgb_png\\2.png");
17 cv::Mat depth1 = cv::imread( "G:\\SLAMDatasets\\⼀起做RGB-DSLAM数据\\depth_png\\1.png", -1);
18 cv::Mat depth2 = cv::imread( "G:\\SLAMDatasets\\⼀起做RGB-DSLAM数据\\depth_png\\2.png", -1);
19
20 // 声明特征提取器与描述⼦提取器
21 cv::Ptr _detector;
22 cv::Ptr _descriptor;
23
24 // 构建提取器,默认两者都为sift
25 // 构建sift, surf之前要初始化nonfree模块
26 cv::initModule_nonfree();
27 _detector = cv::FeatureDetector::create( "GridSIFT" );
一、 cvNamedWindow(窗口名称,CV_WINDOW_AUTOSIZE)
创建窗口
二、 cvShowImage(窗口名字,被显示图像)
在指定窗口中显示图像
三、cvWaitKey(延迟毫秒数)
等待按键事件
四、cvLoadImage(图片名称,模式)
载入图片
模式为读入图片的深度和颜色:
CV_LOAD_IMAGE_COLOR三信道
0-----CV_LOAD_IMAGE_GRAYSCALE单信道,灰图
CV_LOAD_IMAGE_ANYCOLOR保持不变
五、cvShowImage(窗口名称,加载的图片)
显示图片
六、cvDestroyWindow(窗口名称)
销毁窗口
七、cvReleaseImage(&加载的图片)
释放图片
八、Cvsize(.width .height)
IplImage(->width ->height ->depth ->nChannels)
九、cvCreateImage(尺寸,深度,信道)
创建图像
十、cvResize(输入图像,输出图像,插值)
图像大小变换