/ / opencv detecção de borda de floresta estruturada e findcontours - opencv, visual-c ++, processamento de imagem, detecção de borda, opencv3.0

detecção de borda de floresta estruturada opencv e findcontours - opencv, visual-c ++, processamento de imagem, detecção de borda, opencv3.0

Eu estou tentando usar o opencv via visual c ++ para extrair contornos de uma imagem. Eu fui capaz de fazer isso usando o opencv tutorial para findcontours. findcontours funciona em duas etapas

  1. Detecte as bordas usando o detector de borda.
  2. Alimente a saída de inteligência para encontrar contornos.

Eu quero experimentar o mesmo com "Detecção Estruturada de Borda na Floresta"(Zitnick et al). Eu sou capaz de extrair as bordas e exibi-las, mas quando tento alimentar a saída para encontrar contornos. Estou recebendo um erro "cv :: Exception at memory local 0x0020EE9C". (veja o código abaixo). O que estou fazendo de errado?

Mat src = imread("image.jpg");

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

Mat edges(src.size(), src.type());

Ptr<StructuredEdgeDetection> pDollar = createStructuredEdgeDetection("model.yml.gz");

pDollar->detectEdges(src, edges);

findContours(edges, contours, hierarchy, CV_RETR_TREE, CV_CHAIN_APPROX_SIMPLE, Point(0, 0));

Respostas:

0 para resposta № 1
pDollar->detectEdges(src, edges);

edges tipo é CV_32F. você deve convertê-lo para a imagem de canal único de 8 bits