OpenCV multi-thread chamada

votos
0

Eu fiz um programa que tem dois threads, logo para ser três, que está tentando obter uma imagem de uma web cam de ambos os threads ao mesmo tempo. Existe uma maneira de fazer isso ou se existe uma maneira melhor de fazer isso? (Usando openCV 1,1)

Publicado 25/10/2009 em 20:40
fonte usuário
Em outras línguas...                            


2 respostas

votos
1

Pode Proponho apenas ter um de seus tópicos (vamos chamá-lo a primária) falar com a câmera, obtenha a imagem e obtê-lo pronto. Uma vez que ele é definido e colocado em um local na memória, você poderia notificar o segundo segmento onde esse local é (use um mutex em fazer isso), e ambos os tópicos poderia sair e fazer o seu processamento. Uma vez que ambos os fios são feitos com essa imagem (use um mutex aqui também), você poderia ter o thread principal começa outra imagem e iniciar o processo.

Se a sua câmera está produzindo uma grande quantidade de imagens, e você quer começar a trabalhar neles antes de ambos os tópicos tiver terminado, você pode querer ir a três tópicos ... um pouco para obter a imagem, e os outros dois apenas para fazer o dois tipos de processamento. Isso vai ficar muito mais complicado porque você vai precisar de ter vários buffers. Você também vai provavelmente precisar de vários semáforos e, possivelmente, um par de filas também, é tudo factível embora :-)

Respondeu 26/10/2009 em 21:57
fonte usuário

votos
0

Se você quer ambos os segmentos para ser capaz de trabalhar com a imagem que você deve escrever um método que lhe dá a imagem atual. Você pode obter a imagem do cam a primeira vez que o método é chamado e bloquear chamadas até que a imagem é carregada. Depois, você pode retornar a imagem tamponada até que você deseja buscar a próxima imagem. Desta forma, ambos os tópicos tomar a mesma rota para o cam e não OpenCV não tem que tentar abertura para conexões para a câmera e se você só estão bloqueando vários segmentos, enquanto a imagem não é carregado pode obter os dados de imagem depois que ele foi salvo pelo o mesmo tempo.

Respondeu 26/10/2009 em 15:08
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more