Demo1:视频人体检测






/*
#include<opencv2\opencv.hpp>
using namespace cv;
int main()
{
	Mat img = imread("1.jpg");
	imshow("测试图片",img);
	waitKey(50);
	return 0;

}*/





/*



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%                                                            %%%%%%
%%%%%%       欢迎到www.opencvchina.com下载源代码和资料              %%%%%%
%%%%%%                                                            %%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%




*/
/*
 * Code written by Lya (GeckoGeek.fr)
 */
//#include "stdafx.h"
#include "opencv/highgui.h"
#include "opencv/cv.h"
 
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
 
// Maths methods
#define max(a, b) ((a) > (b) ? (a) : (b))
#define min(a, b) ((a) < (b) ? (a) : (b))  
#define abs(x) ((x) > 0 ? (x) : -(x))
#define sign(x) ((x) > 0 ? 1 : -1)

// Step mooving for object min & max
#define STEP_MIN 5 
#define STEP_MAX 100 
//轮廓区域最小面积

int detectarea=100;
IplImage *image;
IplImage *im; 
// Position of the object we overlay
CvPoint objectPos = cvPoint(-1, -1); //目标当前位置
// Color tracked and our tolerance towards it
int h = 0, s = 0, v = 0, tolerance = 10;
CvPoint temp ;
int T_HSV[3]={111,111,23};
//	int HSV[3]={177,185,120};
	int HSV[3]={179,79,81};
	int HSV_f[3]={177,185,120};
//int count=0;
int countd=0; //在drawbody函数用到
CvPoint HEAD;//上次的头部坐标
CvPoint HAND[5];//用于存储上次的手部坐标
CvPoint FOOT[5];//用于存储上次的脚坐标
CvPoint point[10];//存储目标位置
CvScalar color=CV_RGB(255,158,97);
	// Next position of the object we overlay
	CvPoint objectNextPos;

//此函数用于画出image图片中是HSV[]色彩的所有轮廓,HSV[]是感兴趣的三通道色彩
CvPoint ditalcontours(IplImage* image, int *nbPixels,int HSV[],int detectarea) {
 
	void drawcontours(IplImage* mask,IplImage* image);
	int x, y;
	//CvScalar pixel;
	IplImage *hsv, *mask;
	IplConvKernel *kernel;
	int sommeX = 0, sommeY = 0;
	*nbPixels = 0;
 
	// Create the mask &initialize it to white (no color detected)
	mask = cvCreateImage(cvGetSize(image), image->depth, 1);
 
	// Create the hsv image
	hsv = cvCloneImage(image);
	cvCvtColor(image, hsv, CV_BGR2HSV);
 
	// We create the mask
	cvInRangeS(hsv, cvScalar(HSV[0] - tolerance -1, HSV[1] - tolerance,0), cvScalar(HSV[0] + tolerance -1, HSV[1] + tolerance,  255), mask);
  //cvInRangeS(1,2,3,4)此函数就是从hsv图像中选出在范围在2到3之间的像素点,选出来符合的置为1,否则置为0。
  //最后把二值化图像存在mask中
	//cvShowImage("mask第一步", mask);//展示mask效果

	// Create kernels for the morphological operation
	kernel = cvCreateStructuringElementEx(5, 5, 2, 2, CV_SHAPE_CROSS);
    //生成膨胀和溶解结构 kernel
	// Morphological opening (inverse because we have white pixels on black background)
	cvDilate(mask, mask, kernel, 1); //膨胀
	cvErode(mask, mask, kernel, 1);  //溶解	

	// We go through the mask to look for the tracked object and get its gravity center
  for(x = 0; x < mask->width; x++) {
		for(y = 0; y < mask->height; y++) { 
 
			// If its a tracked pixel, count it to the center of gravity's calcul
			if(((uchar *)(mask->imageData + y*
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值