OpenCV基于P. Dollár和C.Zitnick在“用于快速边缘检测的结构化森林”(2013年)中概述的基于随机森林的方法实现了StructuredEdgeDetection。作者已经发表了Matlab的一种实现和一个用于Python,这两个版本都包含一个基于BSDS500数据集的预培训模型。
OpenCV实现似乎缺少一个经过预先培训的模型,而且我也无法了解它提供的唯一构造函数的格式:
Ptr<cv::StructuredEdgeDetection> createStructuredEdgeDetection(String model)唯一可用的构造函数 参数:模型-模型文件名
这些文档也没有概述如何训练OpenCV实现,所以我完全没有意识到。
综上所述,如何使用OpenCV实现?有受过训练的模特吗?如果没有,如何使用OpenCV来训练一个人?
发布于 2015-10-24 13:07:50
您可以从这个模型 opencv_extra ximgproc测试数据中使用ximgproc。
如果你想训练你自己的模型,你可以按照OpenCV教程上的说明。
图片:

边缘:

代码:
#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;
}https://stackoverflow.com/questions/33317152
复制相似问题