2015-10-24 7 views
6

OpenCV implementa StructuredEdgeDetection in base all'approccio basato su foresta casuale delineato in "Structured Forests for Fast Edge Detection" (2013) da P. Dollár e C. Zitnick. Gli autori hanno pubblicato an implementation for Matlab e c'è anche one for Python, che contengono entrambi anche un modello preliminare basato sul set di dati BSDS500.File di modello per rilevatore di bordi strutturati OpenCV

L'implementazione OpenCV sembra mancare un modello preaddestrato e sono anche in grado di scoprire ciò che formattare l'unico costruttore che offre aspetta:

Ptr<cv::StructuredEdgeDetection> createStructuredEdgeDetection(String model)
L'unico costruttore a disposizione
Parametri: Modello - nome file modello

La documentazione inoltre non delinea come addestrare l'implementazione di OpenCV, quindi sono rimasto completamente al buio.

Per ricapitolare, come utilizzare l'implementazione di OpenCV? È disponibile un modello addestrato? In caso negativo, come addestrarne uno utilizzando OpenCV?

risposta

8

È possibile utilizzare this model da opencv_extra dati di test ximgproc.

Se si desidera addestrare il proprio modello, è possibile seguire le istruzioni su OpenCV tutorials.

immagine:

enter image description here

Bordi:

enter image description here

Codice:

#include <opencv2\opencv.hpp> 
#include <opencv2\ximgproc.hpp> 

using namespace cv; 
using namespace cv::ximgproc; 

int main() 
{ 
    Ptr<StructuredEdgeDetection> pDollar = createStructuredEdgeDetection("path_to_model.yml.gz"); 

    Mat3b src = imread("path_to_image"); 

    Mat3f fsrc; 
    src.convertTo(fsrc, CV_32F, 1.0/255.0); 

    Mat1f edges; 
    pDollar->detectEdges(fsrc, edges); 

    imshow("Image", src); 
    imshow("Edges", edges); 
    waitKey(); 

    return 0; 
} 
+0

Grazie mille per il vostro aiuto, sembra che le informazioni _is_ disponibili, solo difficile da trovare poiché non è strutturato in modo chiaro. – Nit

Problemi correlati