Página 1 de 1
OpenCV ( iniciando... )

Enviado:
20 Jul 2011 08:12
por andre_luis
Olá Pessoal,
Gostaria de saber se alguem já trabalhou com essa biblioteca, e qual compilador recomendaria ( tipo, aquele que deu menos problemas, tem mais exemplos na web, etc... ).
+++

Enviado:
20 Jul 2011 19:31
por chipselect
na plataforma Windows, usei bastante o Visual Studio 2005 (licenciado), atualmente trabalho com o Visual Studio 2010 (express edition) usando o openCV 2.3 para projetos pequenos.
eu usei quase todas as versões do OpenCV, incluindo as versões 2.x. Trabalhei mais com a versão 1.1pré no Visual Studio 2005... que é basicamente C. Acho interessante as versões 2.2 e 2.3 porque já é mais C++.
não usei outros compiladores C/C++ no Windows com o openCV, só fiz um teste usando o MinGW e deu um pouco mais de trabalho pra configurar.
supondo que você está usando MS Windows, recomendo o VS2010 em 32 bits, mesmo que seu W7 seja 64. Compilando o openCV em 64 bits deu muito problema, tive que abrir os fontes do openCV e modificar umas diretivas, etc, isso no openCV 2.2 e depois do tempo perdido nem tentei na versão 2.3... resumindo, funcionou mas não valeu a pena.
As versões mais novas nem funcionam direito no RadStudio, dá muito trabalho pra compilar o source.
também usei o openCV dentro do C#, a produtividade aumenta bastante, mas limita um pouco o que você pode fazer com o openCV pois alguns recursos não estão disponíveis diretamente no "managed code". Obviamente você pode usar "unsafe code" a doidado e aproveitar 100% do openCV, só que daí acho melhor fazer em C/C++.
na plataforma Linux, o único que testei foi o Ubuntu 10 com gcc e openCV 2.1 em 64 bits, mas não usei pra nada comercial, só verifiquei se compilava e rodava uma janelinha tipo hello world. Apesar de existir outros compiladores, no Linux o mais usado é o gcc mesmo.
se você não quer usar c/c++, pode optar por .NET ou java. Existem wrappers para outras linguagens também, mas só conheço o emgu para o dot net.

Enviado:
20 Jul 2011 20:41
por andre_luis
Rapaz,
Antes de mais nada, obrigado pelas dicas.
Não imaginava que o caminho das pedras seria tão difícil assim.
Bom, estou usando o VS 2008 com o OpenCV 2.3, mas inda não achei um exemplo de projeto que pudesse fazer a primeira compilação decente. Na verdade, eu gostaria de pegar um atalho e não ter de criar o projeto, mas trabalhar em cima de algum, pois nunca trabalhei com Visual Studio ( apenas C++Borland Builder ) e confesso que estou achando um pouco obscuro.
Bom, vou continuar catando informações, e conforme for, posto aqui....ou peço mais socorro....rsrs
+++

Enviado:
22 Jul 2011 22:38
por andre_luis
Bom,
Consegui criar no Microsoft Visual Studio em C++ um projeto e executar um sample do OpenCV muito interessante, o find_obj.cpp.
O problema é que notei que, além de não haver recursos no VS para manipulação de objetos VCL tão poderosos como na Borland C++ Builder, o OpenCV acessa diretamente a interface gáfica pelo IPL, o que dificulta a interação com qualquer ambiente de compilação.
Por acaso, já vi outro programa no meu trabalho feito com essa biblioteca, e o painel da imagem também ficava separado do resto do programa.
É isso mesmo ?
OBS.: Pra imagem, não vejo tanto problema, já que o OpenCV pode salvar em disco e depois o compilador a abrir dentro de outro painel; mas no caso de filme, acho que vai ser um problema.
+++

Enviado:
23 Jul 2011 18:05
por chipselect
bom, se você não quer fazer as telas quase na unha usando Win32 e não quer criar as rotinas pra converter IPL Image para BMP em memória, então o mais fácil é usar o EMGU com C#, ou outras gambiarras da Microsoft, como CLR, MFC e etc...
Sugiro que baixe o emgu, e use c#, porque acho que é menos doloroso inicialmente... eu adoro c++, mas infelizmente demora muito fazer algo nele e nunca tentei usar c++ "ligado" no dot net, achei meio esquisito.
segue um trecho de código pra mostrar uma imagem da webcam (1 quadro) num Picturebox (igual ao do CBuilder...) usando o openCV através do emgu, é bem fácil e simples, removi toda a programação defensiva e thread, para simplificar.
No projeto em C# (Windows Application, obviamente), você bota uma image Box no form, exatamente igual ao modo que você fazia no CBuilder... mais baba que mamão com açúcar.
- Código: Selecionar todos
Capture grabber = new Emgu.CV.Capture(0);
Image<Bgr, Byte> currentFrame=null;
while(currentFrame==null)
currentFrame = grabber.QueryFrame();
Byte[, ,] data;
data = currentFrame.Data;
imageBox1.Image = currentFrame;
Basicamente você cria um projeto com C#, inclui uma referência para a dll do EMGU, bota todas as dlls que vai usar do openCV no projeto e, nas propriedades de cada dll do openCV você coloca como copiar para saída, assim, quando gerar um executável no VS2010, ele vai automaticamente copiar as dlls de código nativo para junto com o executável, o instalador (publish) vai embutir isso automaticamente, não vai precisar ficar escrevendo script de make como fazemos direto usando gcc...
boa diversão

Enviado:
23 Jul 2011 18:25
por chipselect
o image box é um componente do emgu... (editei porque tinha escrito picture box, e o C# já tem um picture box).
Caso você queira usar os componentes do dot net, usando c# você pode converter o Image<> para BMP com isso:
cpp code
public static BitmapSource ToBitmapSource(IImage image)
{
using (System.Drawing.Bitmap source = image.Bitmap)
{
IntPtr ptr = source.GetHbitmap(); //obtain the Hbitmap
BitmapSource bs = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(
ptr,
IntPtr.Zero,
Int32Rect.Empty,
System.Windows.Media.Imaging.BitmapSizeOptions.FromEmptyOptions());
DeleteObject(ptr); //release the HBitmap
return bs;
}
}
é um código que achei na internet, não testei, mas lembro que era mais ou menos desse modo ai que eu usava para converter imagens em texturas para colocar no openGL.
Tem um projetinho interessante aqui em C#, só abrir e rodar, tudo tá ok, mas você altera fácil pra pegar imagem da webcam no lugar do mpeg:
http://dl.dropbox.com/u/1299007/HandGestureRecognition_Code_and_Video%20-%20Copia.rar

Enviado:
23 Jul 2011 18:25
por andre_luis
Olá,
Mais uma vez, agradeço pelas informações.
Estou catando o EMGU na Web, mas por enquanto estou tentando fazer funcionar no QT, cujo ambiente até achei simpático, além da vantagem de ser multiplataforma.
Voce tem alguma opinião do QT em comparação com a solução que voce propôs ?
( gostaria de saber se vale a pena insistir nessa solução )
Obrigado.
+++

Enviado:
23 Jul 2011 18:33
por chipselect
bom, já que você vai pelo menos testar o EMGU, pode tentar rodar o dot net no Linux com o mono... e usar os componentes do C# (na verdade .net) mesmo... nunca tentei fazer isso, porque onde trabalho atualmente querem distância do Linux. Sei que o EMGU tem versão para Linux e Mac OS.
Não conheço ainda o QT, usei o GTK, fiz interfaces com GLADE e linkei tudo com o C/C++, achei um parto comparado com a solução do dot net ou do cbuilder. Se for realmente usar .NET, nem precisa esquentar muito sobre a interface, ele se vira com isso.

Enviado:
24 Jul 2011 12:40
por andre_luis
Olha...
Nunca usei o C#, mas apenas o C++Borland Builder.
Acha que é muita encrenca se eu tentar ir por esse camino ?
+++

Enviado:
25 Jul 2011 10:14
por chipselect
não é não, só é um pouco mais demorado pra fazer interface.
Se não for usar C#, nem precisa do EMGU, e se for usar o CBuilder mesmo, vai ter que usar uma versão antiga do openCV, tipo a 1.1pré.

Enviado:
25 Jul 2011 19:28
por andre_luis
Ola,
Estou por um fio de fazer funcionar o QT, e acho que vou optar por esse mesmo.
Passei o final de semana acertando Includes, Variaveis de ambiente, configurações, versões, etc...
Já compilou e até gerou o .EXE na pasta Debug, mas tá dando erro numa DLL.
Conforme for, posto aqui os resultados, mas minha opinião até agora é positiva á ferramenta.
+++
Re: OpenCV ( iniciando... )

Enviado:
30 Jul 2011 09:10
por andre_luis
Consegui fazer funcionar o OpenCV no QT.
Foi um verdadeiro parto, tendo de mexer em variáveis de ambiente do Windows, copiar DLLs, alterar caminho de includes, reinstalar versões, catar informações na Web, etc...
+++

Enviado:
09 Ago 2011 12:24
por chipselect
André
Você está usando o OpenCV para reconhecimento de padrões/visão computacional?

Enviado:
09 Ago 2011 20:35
por andre_luis
chipselect escreveu:André
Você está usando o OpenCV para reconhecimento de padrões/visão computacional?
Sim,
Por enquanto estamos na fase de aprimoramento da qualidade da imagem (
enhancement ), e só depois disso decidimos que abordagem ( ou seja, que algorítimo ) adotar em função das características finais.
+++