Thursday 16 November 2017

Opencv flood fill binário opções no Brasil


Esta pergunta já tem uma resposta aqui: Eu tenho um mapa de borda extraído do módulo de detecção de borda em OpenCV (canny edge detection). O que eu quero fazer é preencher os buracos no mapa de borda. Estou usando C. E OpenCV bibliotecas. Em OpenCV há uma função cvFloodFill (), e ele irá preencher os buracos com uma semente (com um do local para iniciar a inundação). No entanto, estou tentando preencher todos os buracos interiores sem conhecer as sementes. (Semelhante a imfill () no MATLAB) Q1: como encontrar todas as sementes, para que eu pudesse aplicar cvFloodFill () Q2: como implementar um imfill ) Equivalente Newbie no OpenCV, e qualquer dica é apreciada. Perguntou Nov 11 09 em 16:19 Amro 105k 9679 19 9679 171 9679 314 marcado como duplicado por Shl matlab Usuários com o crachá matlab pode sozinho fechar questões matlab como duplicatas e reabri-los conforme necessário. Jun 5 14 at 8:52 Esta pergunta foi feita antes e já tem uma resposta. Se essas respostas não abordarem completamente a sua pergunta, faça uma nova pergunta. De acordo com a documentação do imfill no MATLAB: Portanto, para obter os buracos pixels, faça uma chamada para cvFloodFill com o pixel do canto esquerdo da imagem como uma semente. Você obtém os buracos complementando a imagem obtida na etapa anterior. MATLAB Exemplo: respondeu Nov 11 09 em 18:02 Amro 105k 9679 19 9679 171 9679 314 that39s impressionante, Amro Obrigado. Ndash Lily Nov 11 09 em 20:17 Muito agradável. Eu estava tentando descobrir como fazer isso sem contar com a bandeira buracos em imfill. Eu gostaria de fazer isso no OpenCV Python e você me mostrou o caminho. Obrigado Amro ndash rayryeng Sep 3 14 at 16:49 a função cvDrawContours tem uma opção para preencher os contornos que você desenhou. Aqui está um pequeno exemplo cvDrawContours (IplImage, contornos, cor, cor, -1, CVFILLED, 8) Aqui está a documentação que eu acho que você postou isso há muito tempo, mas espero que ajude alguém. Este é o código-fonte (em C): Eu estive olhando ao redor da internet para encontrar uma função de imfill adequada (como a do Matlab), mas trabalhando em C com OpenCV. Depois de alguns reaserches, eu finalmente veio com uma solução. O truque está na configuração de parâmetros da função cvDrawContours: cvDrawContours (dst, contorno, branco, branco, 0, CVFILLED) dst indicador de contorno de imagem de destino para o primeiro contorno cor branca usada para preencher o contorno 0 Nível máximo para contornos desenhados. Se 0, somente o contorno é desenhado CVFILLED Espessura das linhas com as quais os contornos são desenhados. Se for negativo (Por exemplo, CVFILLED), os interiores do contorno são desenhados. Mais informações na documentação openCV. Provavelmente há uma maneira de obter dst diretamente como uma imagem binária, mas eu não poderia encontrar como usar a função cvDrawContours com valores binários. Responde Apr 15 13 at 12:54 Heres uma aproximação rápida e suja: Execute canny em sua imagem de entrada para que a nova imagem binária tem 1s nas bordas, e 0s de outra forma Encontrar o primeiro 0 ao longo de um lado de sua imagem de borda e iniciar Um floodfill com 1s nesse ponto em uma imagem em branco usando sua imagem de borda como a máscara. (Estavam esperando aqui que nós não tivemos sorte e semente este primeiro preenchimento no interior de uma forma que é meio-fora da tela) Esta nova imagem floodfilled é o fundo. Qualquer pixel aqui que tenha um 1 é o fundo, e qualquer pixel que tem um 0 é o primeiro plano. Percorra a imagem e encontre os pixels de primeiro plano. Semeie um floodfill em qualquer que você encontrar. OU esta nova imagem floodfilled com sua imagem Canny da etapa 1, e você está feito. Eu tentei usar floodfill no meu código-fonte, mas a aplicação não funciona e este é o meu código: bitmap bitmap BitmapFactory. decodeFile (fileUri. getPath (), opções) Mat tmp new Mat (bitmap. getWidth (), Bitmap. getHeight (), CvType. CV8UC1) Tapete novo cinzento Mat (bitmap. getWidth (), bitmap. getHeight (), CvType. CV8UC1) Imgproc. cvtColor (tmp, cinza, Imgproc. COLORRGB2GRAY) (Cinzento, stub, novo Ponto (0, 0), novo Escalar (255, 255, 255)) u ter alcançado algo porque Estou lidando com o mesmo problema Question Tools Última atualização: Jan 30 Questões relacionadas Copyright Itseez. 2017-2017. O conteúdo deste site é licenciado sob uma licença Creative Commons Attribution Share Alike 3.0. Por favor, note: OpenCV respostas requerem javascript para funcionar corretamente, por favor, habilite o javascript no seu navegador, aqui está comoFlood Fill por Adrian Kaehler, Gary Bradski Enchimento Preenchimento Flood encher Heckbert00 Shaw04 Vandevenne04 é uma função extremamente útil que é freqüentemente usado para marcar ou isolar porções de Uma imagem para posterior processamento ou análise. O preenchimento de inundação também pode ser usado para derivar, a partir de uma imagem de entrada, máscaras que podem ser usadas para rotinas subseqüentes para acelerar ou restringir o processamento apenas aos pixels indicados pela máscara. A função cvFloodFill () toma uma máscara opcional que pode ser usada para controlar onde o preenchimento é feito (por exemplo, ao fazer vários preenchimentos da mesma imagem). No OpenCV, o preenchimento de inundação é uma versão mais geral do tipo de funcionalidade de preenchimento que você provavelmente já associa com programas típicos de pintura de computador. Para ambos, um ponto de semente é selecionado a partir de uma imagem e, em seguida, todos os pontos adjacentes semelhantes são coloridos com uma cor uniforme. A diferença aqui é que os pixels vizinhos não precisam ser todos idênticos em cores. 55 O resultado de uma operação de preenchimento de cheias será sempre uma única região contígua. A função cvFloodFill () irá colorir um pixel vizinho se estiver dentro de um intervalo especificado (lo Diff to up Diff) do pixel atual ou if (dependendo das configurações de flags) o pixel vizinho está dentro de um intervalo especificado do original Valor de ponto de semente. O enchimento de inundação também pode ser restringido por um argumento de máscara opcional. O protótipo da rotina de preenchimento de enchentes é: Figura 5-15. Resultados da análise morfológica. Encontre as informações exatas que você precisa para resolver um problema na mosca, ou ir mais fundo para dominar as tecnologias e habilidades que você precisa para ter sucesso

No comments:

Post a Comment