`
kanwoerzi
  • 浏览: 1639845 次
文章分类
社区版块
存档分类
最新评论

物体识别

 
阅读更多

#include "cv.h"
#include "highgui.h"

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h> //用于防御式编程
#include <math.h>
#include <float.h>//<float.h>与<limits.h>一样是定义边界值的,<float.h>定义的是浮点数的边界值
#include <limits.h>
#include <time.h>
#include <ctype.h>//在调用字符函数时,在源文件中包含的头文件
static CvMemStorage *storage = 0;
static CvHaarClassifierCascade *cascade = 0;//harr 分类器级联的内部标识形式
//const char *cascade_name ="F://OpenCV//OpenCV//data//haarcascades//haarcascade_frontalface_alt2.xml";
const char *cascade_name ="D://boost//xml.xml";
void change(int x1,int y1,int x2,int y2,IplImage *img)
{
unsigned char *data=(unsigned char *)img->imageData;
int step=img->widthStep;
int c=img->nChannels;
for(int j=y1;j<y2;j++)
for(int i=x1;i<x2;i++)
for(int k=0;k<c;k++)
data[j*step+i*c+k]=255;
}
int main()
{
IplImage *img=cvLoadImage("first.bmp",1);
cascade = (CvHaarClassifierCascade*)cvLoad( cascade_name, 0, 0, 0);
storage = cvCreateMemStorage(0);//创建内存块
CvSeq *face = cvHaarDetectObjects(img, cascade,storage,1.1,2,0,cvSize(30, 30));
if(!cascade)
printf("没有相应的文件/n");
else
printf("找到了相应的文件/n");
if(face==0)
printf("没有检测到/n");
else
printf("已经检测到了/n");

cvNamedWindow("first",2);
cvShowImage("first",img);
double scale = 1.1;
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}}
};
int n=face?face->total:0;
if(n==0)
printf("检测失败/n");
else
printf("检测到了%d个目标/n",n);
for (int i = 0; i < (face ? face->total : 0); i++)
{
//返回索引所指定的元素指针
CvRect *r = (CvRect*)cvGetSeqElem(face, i);
if(!r)
printf("无法构成矩形/n");
else
printf("可以构成矩形/n");
//用矩形
//确定两个点来确定人脸位置因为用cvRetangle
CvPoint pt1, pt2;
//找到画矩形的两个点
pt1.x = r->x*scale;
pt2.x = (r->x+r->width)*scale;
pt1.y = r->y*scale;
pt2.y = (r->y+r->height)*scale;
//画出矩形
cvRectangle( img, pt1, pt2, colors[i%8], 3, 8, 0 );
//change(pt1.x,pt1.y,pt2.x,pt2.y,img);
}
cvNamedWindow("second",2);
cvShowImage("second",img);
cvWaitKey(0);
return 0;
}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics