2015-10-24 11 views
6

OpenCVは、P.DollárとC.Zitnickによる"Structured Forests for Fast Edge Detection" (2013)で概説されているランダムフォレストベースのアプローチに基づいてStructuredEdgeDetectionを実装しています。著者はan implementation for Matlabを公開しました。また、one for Pythonもあり、両方ともBSDS500データセットに基づく事前トレーニングモデルを含んでいます。OpenCVの構造化エッジ検出器のモデルファイル

OpenCVの実装がpretrainedモデルを欠いているようだし、私もそれが期待していますどのような形式のみコンストラクタ発見することができませんでしだ:

Ptr<cv::StructuredEdgeDetection> createStructuredEdgeDetection(String model)
のみ利用できコンストラクタ
パラメータ:モデル - モデルファイル名

このドキュメントでは、OpenCV実装のトレーニング方法についても説明していません。かなり暗い。

要約すると、OpenCV実装の使い方は?訓練されたモデルは利用可能ですか?そうでない場合、OpenCVを使ってトレーニングする方法は?

答えて

8

this modelopencv_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