haarcascade 分类器(视频图像皆可)
来源:互联网 发布:mac finder 显示路径 编辑:程序博客网 时间:2024/05/03 05:28
#include "cv.h"#include "highgui.h"#include <stdio.h>#include <stdlib.h>#include <string.h>#include <assert.h>#include <math.h>#include <float.h>#include <limits.h>#include <time.h>#include <ctype.h>#ifdef _EiC#define WIN32#endifstatic CvMemStorage* storage = 0;static CvHaarClassifierCascade* cascade = 0;void detect_and_draw(IplImage* image);const char* cascade_name = "D:/.../opencv/sources/data/haarcascades/haarcascade_frontalface_alt.xml";//"haarcascade_frontalface_alt2.xml";/* "haarcascade_profileface.xml";*/#define _CRTDBG_MAP_ALLOC#include <stdlib.h>#include <crtdbg.h>int main(int argc, char** argv){CvCapture* capture = 0;IplImage *frame, *frame_copy = 0;int optlen = strlen("--cascade=");const char* input_name;cascade = (CvHaarClassifierCascade*)cvLoad(cascade_name, 0, 0, 0);if (!cascade){fprintf(stderr, "ERROR: Could not load classifier cascade\n");fprintf(stderr,"Usage: facedetect --cascade=\"<cascade_path>\" [filename|camera_index]\n");return -1;}storage = cvCreateMemStorage(0);cvNamedWindow("result", 1);//检测图片//IplImage* image = cvLoadImage("1.jpg", 1);//if (image)//{//detect_and_draw(image);//cvWaitKey(-1);//cvReleaseImage(&image);//}//else//printf("error\n");//检测视频capture = cvCaptureFromAVI("留学.mp4");if( capture ){for(;;){if( !cvGrabFrame( capture ))break;frame = cvRetrieveFrame( capture );if( !frame )break;if( !frame_copy )frame_copy = cvCreateImage( cvSize(frame->width,frame->height),IPL_DEPTH_8U, frame->nChannels );if( frame->origin == IPL_ORIGIN_TL )cvCopy( frame, frame_copy, 0 );elsecvFlip( frame, frame_copy, 0 );IplImage *equ = cvCreateImage(cvGetSize(frame_copy),8, 1);IplImage *gray = cvCreateImage(cvGetSize(frame_copy), 8, 1);cvCvtColor(frame_copy, gray, CV_BGR2GRAY);cvEqualizeHist(gray, equ);//cvNamedWindow("yuantu");//cvNamedWindow("equ");//cvShowImage("yuantu",gray);//cvShowImage("equ",equ);detect_and_draw( frame_copy );if( cvWaitKey( 10 ) >= 0 )break;//cvReleaseImage(&gray);//cvReleaseImage(&equ);}cvReleaseImage( &frame_copy );cvReleaseCapture( &capture );}cvWaitKey(-1); //检测图片的时候,等待显示cvDestroyWindow("result");return 0;}void detect_and_draw(IplImage* img){static CvScalar colors[] ={{ { 0, 0, 255 } },{ { 0, 128, 255 } },{ { 0, 255, 255 } },{ { 0, 255, 0 } },{ { 255, 128, 0 } },{ { 255, 255, 0 } },{ { 255, 0, 0 } },{ { 255, 0, 255 } }};double scale = 1.3;IplImage* gray = cvCreateImage(cvSize(img->width, img->height), 8, 1);IplImage* small_img = cvCreateImage(cvSize(cvRound(img->width / scale),cvRound(img->height / scale)),8, 1);int i;cvCvtColor(img, gray, CV_BGR2GRAY);cvResize(gray, small_img, CV_INTER_LINEAR);cvEqualizeHist(small_img, small_img);cvClearMemStorage(storage);if (cascade){double t = (double)cvGetTickCount();CvSeq* faces = cvHaarDetectObjects(small_img, cascade, storage,1.1, 2, 0/*CV_HAAR_DO_CANNY_PRUNING*/,cvSize(30, 30));printf("face's total is %d\n", faces->total);t = (double)cvGetTickCount() - t;printf("detection time = %gms\n", t / ((double)cvGetTickFrequency()*1000.));for (i = 0; i < (faces ? faces->total : 0); i++){CvRect* r = (CvRect*)cvGetSeqElem(faces, i);//用矩形框框出cvRectangle(img, cvPoint(r->x * scale, r->y * scale), cvPoint((r->x + r->width) * scale, (r->y + r->height) * scale), colors[i % 8], 3, 8, 0);/*//用原型框出CvPoint center;int radius;center.x = cvRound((r->x + r->width*0.5)*scale);center.y = cvRound((r->y + r->height*0.5)*scale);radius = cvRound((r->width + r->height)*0.25*scale);cvCircle( img, center, radius, colors[i%8], 3, 8, 0 );*/}}cvShowImage("result", img);cvReleaseImage(&gray);cvReleaseImage(&small_img);_CrtDumpMemoryLeaks();}
0 0
- haarcascade 分类器(视频图像皆可)
- opencv 人脸识别 眼睛识别 鼻子嘴巴等等的分类器haarcascade
- 图像分类器(KNN)
- logistics图像分类器
- JetBrains激活(IDEA,WebStorm 皆可)
- JetBrains激活(IDEA,WebStorm 皆可)
- 图像算法测试集(视频+图像)
- Python图像处理(12):贝叶斯分类器
- Python图像处理(14):神经网络分类器
- Python图像处理(15):SVM分类器
- 图像的线性分类器(感知机、SVM、Softmax)
- 图像分类
- 基于图像的室内装修风格分类系统(四)---分类器
- 斯坦福CS231n - CNN for Visual Recognition(1)-lecture2图像分类、最近邻分类器
- 1.2近邻分类器分类Cifar10图像数据集(上)
- 1.3近邻分类器分类Cifar10图像数据集(下)
- 图像(视频)拼接(一)
- 图像分类基本流程及 KNN 分类器
- js实现登录界面验证码生成及验证
- 正则表达式
- 欢迎使用CSDN-markdown编辑器
- poj 1942 Paths on a Grid
- HDU 4333 Revolving Digits 扩展kmp
- haarcascade 分类器(视频图像皆可)
- u-boot Command
- Github建立文件夹并上传文件
- Linux下查找包含BOM头的文件和清除BOM头命令
- Shell脚本示例
- 判断两个单链表是否相交 输出入口点
- LeetCode 16. 3Sum Closest
- Windows+CPU only+VS2013安装caffe以及配置Python接口
- TCP/IP学习笔记一:BIO的网络编程-简单实例