delphi – OpenCV Haar Cascade xml格式

delphi – OpenCV Haar Cascade xml格式,第1张

概述我对面部检测很感兴趣,我正在尝试将OpenCV用于我的Delphi应用程序.我稍后将使用Google Picasa进行面部识别.我发现了4种不同的基本haar级联用于检测正面: haarcascade_frontalface_default.xmlhaarcascade_frontalface_alt.xmlhaarcascade_frontalface_alt2.xmlhaarcascad 我对面部检测很感兴趣,我正在尝试将OpenCV用于我的Delphi应用程序.我稍后将使用Google Picasa进行面部识别.我发现了4种不同的基本haar级联用于检测正面:

haarcascade_frontalface_default.xmlhaarcascade_frontalface_alt.xmlhaarcascade_frontalface_alt2.xmlhaarcascade_frontalface_alt_tree.xml

“默认”haarcascade给出了太多误报并且根本不好,而’alt’,’alt2’和’tree’级联似乎产生了相当准确但有时不同的结果. ‘tree’级联倾向于产生比’alt’和’alt2’更多的假阴性,但也是最少的误报.

问题是这些haarcascade xml文件有两种不同的格式.

首先是这样的:https://github.com/Danukeru/FOUCAM/blob/master/haarcascade_frontalface.xml

第二个是这样的:https://github.com/Itseez/opencv/blob/master/data/haarcascades/haarcascade_frontalface_alt.xml

如果我没有弄错,第二个被认为是“新”格式,但我的应用程序目前只能理解第一个“旧”格式. “新”级联可能更准确,我想尝试一下.

有没有办法将新格式级联转换为旧格式?

或者我如何在我的应用程序中使用它们?

以下是一些代码(来自sites.Google.com/site/josejp1/index/OCV.ZIP):

f1 := 'haarcascade_frontalface_alt.xml';file1 := PChar(f1);cascade_f := cvLoad(file1,0);storage := cvCreateMemStorage(0);s.wIDth := 40;s.height := 40;faces := cvHaarDetectObjects(PCvArr(img),cascade_f,storage,1.1,3,s);

如果我尝试使用’新’格式的xml级联文件,我会收到一个错误:

OpenCV GUI Error Handler---------------------------UnspecifIEd error (The node does not represent a user object (unkNown type?))in function cvRead,..\..\cxcore\src\cxpersistence.cpp(5061)

我没有在Delphi中找到任何带有新C API的现成例子,所以我将this example of detectMultiScale (a C++ version of cvHaarDetectObjects)转换为Delphi.它会在尝试加载级联时编译但崩溃.我是C新手所以任何帮助将不胜感激.

Delphi 2010 project in zip archive

unit Unit1;interfaceuses  windows,Messages,SysUtils,Variants,Classes,Graphics,Controls,Forms,Dialogs,StdCtrls,ExtCtrls,DateUtils,ExtDlgs,highgui_c,core_c,Core.types_c,imgproc_c,imgproc.types_c,objdetect;type  TForm1 = class(TForm)    Image1: timage;    button2: Tbutton;    Label1: TLabel;    Memo1: TMemo;    procedure button2Click(Sender: TObject);  private    { Private declarations }  public    { Public declarations }  end;var  Form1: TForm1;    mystorage: pCvMemStorage = nil;    mycascade : pCvHaarClassifIErCascade = nil;    mycascade_name: AnsiString = 'cascades\haarcascade_frontalface_alt.xml';implementation{$R *.dfm}procedure TForm1.button2Click(Sender: TObject);var img,grayImage : PIplimage;    myobjects : TArray<TCvRect>;    myscale : double;    i: integer;    r: pCvRect;    mycolors : array[0..7] of TCvScalar;    myCascadeClassifIEr : TCascadeClassifIEr;begin   mycolors[0] := CvScalar(0,255);   mycolors[1] := CvScalar(0,128,255);   mycolors[2] := CvScalar(0,255,255);   mycolors[3] := CvScalar(0,0);   mycolors[4] := CvScalar(255,0);   mycolors[5] := CvScalar(255,0);   mycolors[6] := CvScalar(255,0);   mycolors[7] := CvScalar(255,255);   img := cvLoadImage('lena.jpg');   grayImage := cvCreateImage(cvGetSize(img),8,1);   cvCvtcolor(img,grayImage,CV_BGR2GRAY);   cvShowImage('gray',grayImage);   mystorage := cvCreateMemStorage(0);   Memo1.lines.Add('Memory allocated');   mycascade := cvLoad('cascade.xml');   myscale := 1.3;   cvClearMemStorage(mystorage);   myobjects := nil;   myCascadeClassifIEr.detectMultiScale(grayImage,myobjects,CV_HAAR_SCALE_IMAGE or CV_HAAR_DO_CANNY_PRUNING,cvSize(0,0),cvSize(40,40));   Memo1.lines.Add('Object size? : ' + IntToStr(Length(myobjects)));   for i := 0 to (Length(myobjects)-1) do    begin      cvRectangle(grayImage,cvPoint(r.x,r.y),cvPoint(r.x+r.wIDth,r.y+r.height),CvScalar(0,255));    end;   cvnameDWindow('Output');   cvShowImage('Output',grayImage);   cvReleaseImage(grayImage);   cvReleaseImage(img);end;end.

@TLama:我正在使用最新版本的Delphi-OpenCV用于带有detectMultiScale的项目,以及第一个项目中使用cvHaarDetectObjects的第一个项目的一些过时(但工作)版本(sites.Google.com/site/josejp1/ / OCV.ZIP)指数.

解决方法 如果这些delphi绑定使用过时的c-API,(cvHaarDetectObjects) – 你只能使用旧的格式.

c API(cv :: CascadeClassifIEr)支持这两种,以及hog和lbp级联.

再次,它是旧c-API的限制.如果可以的话,避免它!

总结

以上是内存溢出为你收集整理的delphi – OpenCV Haar Cascade xml格式全部内容,希望文章能够帮你解决delphi – OpenCV Haar Cascade xml格式所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1273468.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-08
下一篇2022-06-08

发表评论

登录后才能评论

评论列表(0条)

    保存