Olá pessoal,
Como parte do processo de desenvolvimento de nosso projeto com robôs aéreos, mais especificamente o segmento relacionado ao processamento de imagens usando visão computacional, o uso da ferramenta livre OpenCV, desenvolvida pela Intel, é indispensável. Originalmente desenvolvido para uso junto às linguagens c/c++, o OpenCV é uma poderosa biblioteca gráfica que permite a realização de inúmeras tarefas envolvendo desde filtragem de imagens/vídeos a reconhecimento de padrões.
Em determinadas circunstâncias, é desejável empregar o processamento de imagens em projetos cujo desenvolvimento se dá nas demais linguagens e IDEs existentes. Uma dessas IDEs é o Visual C#, desenvolvido pela Microsoft como parte do pacote .NET (Dot NET). O Visual C# é uma excelente e poderosa ferramenta para desenvolvimento de aplicações envolvendo GUI (interfaces gráficas) por simplificar a tarefa do programador nesse sentido. Caso você esteja programando sistemas de visão em Visual C++, eu recomendo o tutorial do meu amigo André Carmona, o qual você pode acessar aqui.
Entretanto, como mencionado acima, o OpenCV foi escrito originalmente para integra-se às IDEs com suporte às linguagens c/c++, não sendo possível a sua integração direta ao Microsoft Visual C#. No entanto, há (felizmente!) uma distribuição (também denominadas wrappers) própria para a integração entre OpenCV e C# chamada EMGU CV (http://www.emgu.com/wiki/index.php/Main_Page) .
Neste tutorial, irei ensiná-los a efetuar essa integração de maneira que você possa, com sucesso, desenvolver suas aplicações em Visual C# utilizando-se dos poderosos recursos oferecidos pelo OpenCV.
Integração Entre OpenCV e Visual C#
Considerarei, a partir de agora, que você já possui o pacote OpenCV devidamente instalado em seu PC. Caso não tenha, você pode baixá-lo aqui.
1. Baixe o arquivo contendo o wrapper do EMGU CV (libemgucv-windows-x86-2.3.0.1416) aqui.
2. Para instalar o pacote, selecione o local de sua preferência.
3. Inicie um novo projeto no Visual C# (console ou windows form, não importa).
4. Criado o projeto, dentro do Visual C#, acesse via menu:
PROJECT >> ADD REFERENCE
5. Acesse a aba BROWSE. Busque pela pasta BIN que se encontra no diretório onde o EMGU C Sharp foi instalado.
6. Selecione os seguintes arquivos:
Emgu.CV.dll
Emgu.CV.UI.dll
Emgu.Util.dll
E seguida, clique em OK. Você notará que os arquivos pertinentes à biblioteca surgirão no SOLUTION EXPLORER, ao lado (vide figura abaixo);
7. No cabeçalho da função principal de seu programa, adicione as seguintes bibliotecas:
using Emgu.CV;
using Emgu.Util;
using Emgu.CV.Structure;
8. Agora você deverá inserir as seguintes bibliotecas ao seu projeto, as quais se encontram na pasta BIN da sua distribuição EMGU:
opencv_calib3dXXX.dll
opencv_contribXXX.dll
opencv_coreXXX.dll
opencv_features2dXXX.dll
opencv_highguiXXX.dll
opencv_imgprocXXX.dll
opencv_legacyXXX.dll
opencv_mlXXX.dll
opencv_objectdetectXXX.dll
opencv_videoXXX.dll
Onde o XXX se refere à versão do seu OpenCV (ex: 210 para versão 2.1 e assim por diante).
Para isso, com o botão direito, clique sobre o seu projeto em Solution Explorer:
ADD >> EXISTING ITEM
(OBS): Altere o filtro da pesquisa na janela (TIPO DE OBJETO), de modo que ele leia *.dll, caso os arquivos não se encontrem visíveis.
Você deverá ver as *dll no Solution Explorer:
9. O próximo passo é efetuar o download de um patch de correção da Microsoft aqui, cujo objetivo é solucionar alguns “bugs” de dependências internas do Visual C#.
10. Pronto. Se tudo tiver sido executado como descrito nos passoa acima, você já deverá ser capaz de utilizar o OpenCV no Visual C#. Faça o seguinte teste:
- Na função principal de seu programa, digite a seguinte linha de código (vide figura abaixo):
CvInvoke.cvNamedWindow(“Test de Integração C# + OpenCV”);
- Clique na tecla F5 e veja o seguinte resultado:
O comando CvInvoke é responsável por efetuar o direcionamento para o acesso às bibliotecas do OpenCV. Nesse sentido, cvNamedWindow(“Test de Integração C# + OpenCV”) é um método presente nas classes do OpenCV e, no nosso exemplo, efetua a criação de uma tela (formulário) com o título da nova janela como parâmetro principal. As demais funcionalidades do OpenCV como optical flow, reconhecimento de padrões e demais filtros pode (e devem) ser efetuados a partir deste simples exemplo.
Espero que tenham gostado do tutorial e que tenham sucesso nas suas aplicações.
Um abraço e até a próxima!
















