*   >> Leitura Educação Artigos >> science >> programação

Componentes conectados usando Opencv

Introdução

Na visão computacional e processamento de imagem que usamos muitas idéias de outras áreas da ciência da computação para resolver nossos desafios. O problema que eu vou falar é o seguinte: dada uma imagem monocromática Quero obter os grupos de pixels de primeiro plano que são isoladas por uma região branco. O nome dado a esses grupos é componente conectado

.

Em um componente ligado, dado um ponto dentro dele, eu posso andar a qualquer outro ponto dentro dele usando apenas pontos que estão dentro também. Esta imagem ilustra o que quero dizer.

Cada cor é um componente conectado.

Usando OpenCV

OpenCV é uma biblioteca de visão computacional famoso que tem toneladas de recursos interessantes e é amplamente utilizada. Ele lida com a abertura de vários tipos de arquivos de imagem e vídeo e tem o código para encontrar os componentes conectados de uma imagem (incluindo os furos nos componentes).

A primeira coisa a saber é como abrir uma imagem e como para compilar seu primeiro programa. Instruções de compilação para Windows e para Linux. Este programa abre uma imagem e salva uma cópia como result.png.

Vamos expandir esse exemplo para dar o resultado acima. Se você quer uma explicação mais em profundidade que você pode olhar para este tutorial.

Encontrar os componentes conectados

Para encontrar os componentes conectados, vamos utilizar a função cvFindContours do OpenCV. Com os parâmetros corretos esta função retorna uma lista com os contornos de cada componentes ligados e para cada componente do contorno dos buracos dentro dela.


CvMemStorage e CvContour Em OpenCV, sempre que usar qualquer tipo de estrutura dinâmica que precisamos a utilização de um CvMemStorage para manter a memória para ele. Desde cvFindContours retorna uma lista, temos de criar um CvMemStorage e passar para esta função. O código que deve ser adicionado a seguir (uma versão completa do programa será disponíveis no final do artigo

Declare as variáveis:.

CvMemStorage * mem; CvSeq * contornos, * ptr;
E adicionar este código no CODE /* ADICIONAR AQUI * /linha:

cvThreshold (img, img, 150, 255, CV_THRESH_BINARY); mem = cvCreateMemStorage

(0); cvFindContours (img, mem , e contornos, sizeof (CvContour), CV_RETR_CCOMP, CV_CHAIN_APPROX_SIMPLE, cvPoint (0,0));.

O parâmetro CV_RETR_CCOMP conta a função que os contornos dos componentes ligados devem ser extraídos CV_CHAIN_

Page   <<       [1] [2] [3] >>
Copyright © 2008 - 2016 Leitura Educação Artigos,https://artigos.nmjjxx.com All rights reserved.