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
- Detecte as bordas usando o detector de borda.
- 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 № 1pDollar->detectEdges(src, edges);
edges
tipo é CV_32F. você deve convertê-lo para a imagem de canal único de 8 bits