2015-10-24 3 views
6

OpenCV реализует StructuredEdgeDetection на основе случайного подхода, основанного на лесах, изложенный в "Structured Forests for Fast Edge Detection" (2013) П. Долларом и С. Зитником. Авторы опубликовали an implementation for Matlab, а также one for Python, оба из которых также содержат предварительно подготовленную модель, основанную на наборе данных BSDS500.Файл модели для детектора структурированного края OpenCV

Реализация OpenCV, кажется, не хватает в pretrained модели, и я также не удалось раскрыть то, что форматировать только конструктор предлагает ОЖИДАЕТ:

Ptr<cv::StructuredEdgeDetection> createStructuredEdgeDetection(String model)
Единственный доступный конструктор
Параметры: модель - название файла модели

В документации также не указано, как обучать реализации OpenCV, поэтому я оставлен совсем в темноте.

Напомним, как использовать реализацию OpenCV? Доступна ли обученная модель? Если нет, то как тренироваться с помощью OpenCV?

ответ

8

Вы можете использовать this model от opencv_extraximgproc данные испытаний.

Если вы хотите обучить свою модель, вы можете следовать инструкциям на OpenCV tutorials.

Изображения:

enter image description here

Ребро:

enter image description here

Код:

#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

Большого спасибо за вашу помощь, это кажется информация _is_ доступна, просто трудно найти, поскольку это не структурировано так ясно. – Nit

Смежные вопросы