整理的opencv2.4.5—sample—adaptiveskindetector.cpp文件更简洁形式

该博客展示了如何将OpenCV2.4.5中的adaptiveskindetector.cpp文件进行简化,包括定义了一个ASDCVFrameSequencer基类,以及其派生类ASDFrameSequencerWebCam、ASDFrameSequencerVideoFile和ASDFrameSequencerImageFile,分别用于读取摄像头、视频文件和图片序列。同时,实现了一种自适应皮肤检测算法并展示在图像上。
摘要由CSDN通过智能技术生成
#include "stdafx.h"
#include "opencv2/opencv.hpp"
#include <iostream>
#include <cstdio>
#include <cstring>
#include <ctime>
using namespace std;
using namespace cv;


class ASDCVFrameSequencer 
{
protected:   //parent Variable
CvCapture *capture;
public:
void getFrameCaption(char *caption);
virtual IplImage *getNextImage();
virtual void close();
virtual bool isOpen();
};
//open camera
class ASDFrameSequencerWebCam : public ASDCVFrameSequencer
{
public:
virtual bool open(int cameraIndex);
};
//open video file
class ASDFrameSequencerVideoFile : public ASDCVFrameSequencer
{
public:
virtual bool open(const char *fileName);
};
//read sequencer image 
class ASDFrameSequencerImageFile : public ASDCVFrameSequencer
{
private:
char sFileNameMask[2048];
int nCurrentIndex, nStartIndex, nEndIndex;
public:
virtual void open(const char *fileNameMask, int startIndex, int endIndex);
virtual void getFrameCaption(char *caption);
virtual IplImage *getNextImage();
virtual void close();
virtual bool isOpen();
};
//-------------------- ASDCVFrameSequencer -----------------------//
//camera video all same methods
bool ASDCVFrameSequencer::isOpen()  //did camera open
{
return (capture != NULL);
};


IplImage* ASDCVFrameSequencer::getNextImage()
{
IplImage *image;
image = cvQueryFrame(capture);


if (image != NULL)
{
return cvCloneImage(image);
}
else
{
return NULL;
}
};
void ASDCVFrameSequencer::close()  //close camera
{
if (capture != NULL)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值