opencv使用,人脸识别,java使用opencv

本文介绍了如何利用OpenCV进行人脸识别,包括C++和Java两种实现方式。通过加载预训练的分类器,如haarcascade_frontalface_default.xml,进行人脸检测。在Java中,使用JNI2OpenCV.dll库,实现FaceDetection类来调用原生方法检测人脸。文章还提供了编译和运行可能遇到的问题及解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

遇到opencv,使用后,列一下。

(当然据说目前挺火的 绿坝 用的就是这个)

 

opencv是个图形函数库,内容丰富。是Intel资助的开源计算机视觉库。

由一系列 C 函数和少量 C++ 类构成,实现了图像处理和计算机视觉方面的很多通用算法。
OpenCV 对非商业应用和商业应用都是免费(FREE)的。

 

 

相关网站:

 

http://www.opencv.org.cn

 

http://sourceforge.net/projects/opencvlibrary/

 

http://tech.groups.yahoo.com/group/OpenCV/

 

 

下载下来后,例子直接运行。

 

有些情况,比如提供的例子运行出错,需要重新编译。

 

 

 

windows下,vc6,重编译时有错误,是源程序里有个注释写错了位置,改了可以了,编译有顺序,一般提示...d文件找不到,顺藤摸瓜的找到源文件,编译就可以。

 

 

有个face检测的程序有意思:

可以检测人脸。

直接调用人脸检测函数。非常简单

人脸检测时2002年的论文?后来加入了侧脸检测?

 

#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
#endif

static CvMemStorage* storage = 0;
static CvHaarClassifierCascade* cascade = 0;
static CvHaarClassifierCascade* nested_cascade = 0;
int use_nested_cascade = 0;

void detect_and_draw( IplImage* image );

const char* cascade_name ="1.xml";
   // "../../data/haarcascades/haarcascade_frontalface_alt_tree.xml";
/*    "";haarcascade_profileface.xml*/
const char* nested_cascade_name ="2.xml";
 //   "../../data/haarcascades/haarcascade_eye_tree_eyeglasses.xml";
//    "../../data/haarcascades/";
double scale = 1;

int main( int argc, char** argv )
{
    CvCapture* capture = 0;
    IplImage *frame, *frame_copy = 0;
    IplImage *image = 0;
    const char* scale_opt = "--scale=";
    int scale_opt_len = (int)strlen(scale_opt);
    const char* cascade_opt = "--cascade=";
    int cascade_opt_len = (int)strlen(cascade_opt);
    const char* nested_cascade_opt = "--nested-cascade";
    int nested_cascade_opt_len = (int)strlen(nested_cascade_opt);
    int i;
    const char* input_name = 0;


            input_name = argv[1];
  

    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>/"]/n"
        "   [--nested-cascade[=/"nested_cascade_path/"]]/n"
        "   [--scale[=<image scale>/n"
        "   [filename|camera_index]/n" );
        return -1;
    }
   
    if( !input_name || (isdigit(input_name[0]) && input_name[1] == '/0') )
        capture = cvCaptureFromCAM( !input_name ? 0 : input_name[0] - '0' );
    else if( input_name )
    {

    storage = cvCreateMemStorage(0);        image = cvLoadImage( input_name, 1 );
        if( !image )
            capture = cvCaptureFromAVI( input_name );
    }
    else
        image = cvLoadImage( "lena.jpg", 1 );

    cvNamedWindow( "result", 1 );

    if( capture )
    {

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值