Comment utiliser l'outil de vérification FDDB roc

Le code officiel fourni est
l'environnement cpp : vs, opencv

1. Configurer opencv

Tout d'abord, créez un nouveau projet dans VS, décompressez le fichier tgz téléchargé, puis placez le fichier hpp dans le fichier d'en-tête et le fichier cpp dans le fichier d'origine, puis ajustez les propriétés du projet et introduisez opencv.
Reportez-vous à https://blog.csdn.net/gu1857035894/article/details/125473159. Après la configuration d'opencv,
une erreur est signalée lors de l'exécution, indiquant qu'il n'y a pas de cv.h et highgui.h, et qu'IplImage n'est pas défini
. remplacez le code qui introduit cv dans le fichier d'en-tête. Comme suit
#include<opencv/cv.h>
#include<opencv/highgui.h>
#include "opencv2/imgproc.hpp"
Référence :
https://blog.csdn. net/y601500359/article/details/100974755
https://blog.csdn.net/emperorjade/article/details/49718985
https://blog.csdn.net/yourijing/article/details/50721756

2. Ajustez le code

Tout d'abord, faites attention à ajuster l'adresse et à modifier la valeur par défaut de argc dans main pour qu'elle soit 0 : le
Insérer la description de l'image ici
Insérer la description de l'image ici
résultat de sortie est modifié dans results.cpp et
utilise les variables de pointeur locales "det" et "l1" qui ne peuvent pas être initialisées. La nouvelle version de cpp doit initialiser le pointeur. Attribuez-leur simplement NULL.
Actuellement, je rencontre des problèmes avec l'initialisation du pointeur et l'introduction de la bibliothèque. Si vous rencontrez d'autres problèmes, modifiez-les simplement en fonction des invites d'erreur. Compilez et exécutez
, et tu auras

void Results::saveROC(string outFile, vector<Results *> *rv){
    
    
  string s = outFile + "Cont_or_ROC.txt";
  ofstream osc(s.c_str());

  s = outFile + "Disc_or_ROC.txt";
  ofstream osd(s.c_str());

Référence :
https://blog.csdn.net/qq_32108823/article/details/89216186

3.perl、gnuplot

Perl est le code reconnaissable par gnuplot. Perl exécute le fichier .pl. L'auteur l'a écrit dans eval__tool. Attention à modifier certaines adresses :

#!/usr/bin/perl -w
use strict;
#### VARIABLES TO EDIT ####
# where gnuplot is gnuplot的exe文件绝对路径
my $GNUPLOT = "D:/gnuplot/gnuplot/bin/wgnuplot"; 
# where the binary is evaluate的exe文件绝对路径
my $evaluateBin = "F:/evaluation/evaluation/evaluate.cpp"; 
# where the images are fddb图片总路径
my $imDir = "F:/FDDB/originalPics/"; 
# where the folds are fddb路径信息、真值框信息文档路径
my $fddbDir = "F:/FDDB/FDDB-folds"; 
# where the detections are 最终生成的ROC图像存放位置
my $detDir = "F:/FDDB/"; 
###########################
 
my $detFormat = 0; # 0: rectangle, 1: ellipse 2: pixels
 
sub makeGNUplotFile
{
    
    
my $rocFile = shift;
my $gnuplotFile = shift;
my $title = shift;
my $pngFile = shift;
 
open(GF, ">$gnuplotFile") or die "Can not open $gnuplotFile for writing\n"; 
#print GF "$GNUPLOT\n";
print GF "set term png\n";
print GF "set size 1,1\n";
print GF "set output \"$pngFile\"\n";
#print GF "set xtics 500\n";
print GF "set ytics 0.1\n";
print GF "set grid\n";
#print GF "set size ratio -1\n";
print GF "set ylabel \"True positive rate\"\n";
print GF "set xlabel \"False positives\"\n";
#print GF "set xr [0:2000]\n";
print GF "set yr [0:1.0]\n";
print GF "set key right bottom\n";
print GF "plot \"$rocFile\" using 2:1 title \"$title\" with lines lw 2 \n";
close(GF);
}
 
my $gpFile = "F:/evaluation/evaluation/ContROC.p"; #存放ContROC图绘图信息的.p文件绝对路径(需要自己先生成)
my $gpFile1 = "F:/evaluation/evaluation/DistROC.p"; #存放DistROC图绘图信息的.p文件绝对路径
my $title = "FaceBoxes";
 
# plot the two ROC curves using GNUplot
makeGNUplotFile("F:/evaluation/evaluation/tempContROC.txt", $gpFile, $title, $detDir."ContROC.png");
makeGNUplotFile("F:/evaluation/evaluation/tempDiscROC.txt", $gpFile1, $title, $detDir."DiscROC.png");

Après avoir exécuté le fichier pl, vous obtiendrez le fichier .p. Faites glisser le fichier .p vers gunplot pour obtenir la courbe roc.

Je suppose que tu aimes

Origine blog.csdn.net/qq_41950533/article/details/128340335
conseillé
Classement