Visão computacional o básico

Visão computacional o básico
OpenCV (Biblioteca de Visão Computacional de código aberto) é um módulo Python usado para visão computacional. OpenCV é um módulo gratuito e de código aberto que contém centenas de algoritmos para executar várias tarefas. Qualquer coisa, desde o reconhecimento de rosto até a detecção de movimento, pode ser feito usando o OpenCV. No entanto, neste guia, examinaremos o básico do OpenCV.

Primeiro, vamos instalar o OpenCV:

PIP3 Instale o OpenCV-Python

Leia e mostre imagens

A primeira coisa que precisamos aprender é ler e escrever imagens. Lendo um arquivo de imagem, inserindo o caminho completo para o arquivo ou o nome do arquivo (se o arquivo estiver na pasta Python) e adicionar um sinalizador é feito usando CV2.eu estou lendo(). A bandeira pode levar o valor de 1 (para uma imagem colorida), 0 (para escala de cinza) ou -1 (para imagem colorida com canais). Pode -se usar o CV2.Função imshow () para mostrar a imagem; Aqui, dois argumentos são aprovados - um nome para a imagem e a imagem para mostrar. Em seguida, usamos o CV2.WaitKey () Função para aguardar uma entrada de teclado; A 0 para o CV2.A função WaitKey (0) implica um tempo de espera permanente. Por outro lado, o CV2.DestroyAllWindows () Função fechará as janelas.

Isso lerá e abrirá uma imagem e mantenha a imagem aberta até fechar:

importar CV2
imagem = cv2.imread ('LinuxLogo.jpg ', 1)
cv2.imshow ('imagem', imagem)
cv2.WaitKey (0)
cv2.DestroyAllWindows ()

Escreva imagens

Usamos o CV2.Função imWrite () para salvar uma imagem. Esta função leva dois parâmetros - um nome para salvar a imagem e a imagem que você deseja salvar.

importar CV2
imagem = cv2.imread ('Identify.jpg ', -1)
cv2.imwrite ('save_image.png ', imagem)

Capture Video da webcam

Para capturar vídeos, começamos a inicializar o CV2.Função videocapture (). Em seguida, usamos um loop "while" para continuar capturando o vídeo. Enquanto o usuário não pressiona a tecla de saída, podemos ler os quadros e mostrá -los usando o Read () e o CV2.função imshow (). Em seguida, colocamos uma tecla "quebra" para sair do loop; Nesse caso, o número 27 é a chave ESC. Se o usuário pressionar a tecla ESC, eles sairão do loop. Uma vez fora do loop, é necessário liberar a captura.

importar numpy como np
importar CV2
Capture = CV2.Videocapture (0)
enquanto (verdadeiro):
ret, quadro = captura.ler()
cv2.imshow ('quadro', quadro)
se cv2.WaitKey (1) e 0xff == 27:
quebrar
capturar.liberar()
cv2.DestroyAllWindows ()

Jogando um arquivo de vídeo

Tocar um arquivo de vídeo é como capturar um vídeo de uma webcam. Para fazer isso, o CV2.A função videocapture () é usada; O nome do arquivo de vídeo que você deseja reproduzir é então adicionado à função. O loop "while" é usado novamente, e a chave de saída, neste caso, é a tecla "S" no teclado. Isso abrirá e reproduzirá o arquivo de vídeo e o fecha quando o usuário pressionar a tecla "S".

importar numpy como np
importar CV2
Capture = CV2.Videocapture ("megamind.Avi ")
enquanto (verdadeiro):
ret, quadro = captura.ler()
cv2.imshow ('quadro', quadro)
se cv2.WaitKey (1) e 0xff == ord ("s"):
quebrar
capturar.liberar()
cv2.DestroyAllWindows ()

Salvando um arquivo de vídeo

Salvar um arquivo de vídeo requer um pouco mais de trabalho. O cv2.A função videowriter () leva 4 parâmetros no total - o nome do arquivo de saída, o código de quatrocc, o número de quadros por segundo e o tamanho do quadro. Além disso, é preciso especificar o código de quatrocc, que é o codec de vídeo usando o CV2.Função videowriter_fourcc (). Usando a captura.isopened (), lemos o quadro e escrevemos o quadro de saída. Também podemos mostrar os quadros usando o CV2.função imshow (). Então, usamos CV2.WaitKey (1) e 0xff == ord ('s') para definir uma chave de saída. Nesse caso, se o usuário pressionar a tecla "S", ele sairá do loop e depois liberará a captura e a saída e fechará as janelas.

importar numpy como np
importar CV2
Capture = CV2.Videocapture (0)
quatrocc = cv2.Videowriter_fourcc (*'xvid')
saída = cv2.Videowriter ('saída.Avi ', quatrocc, 30.0, (640.480))
enquanto (captura.está aberto()):
ret, quadro = captura.ler()
saída.Escreva (quadro)
cv2.imshow ('quadro', quadro)
se cv2.WaitKey (1) e 0xff == ord ('s'):
quebrar
capturar.liberar()
saída.liberar()
cv2.DestroyAllWindows ()

Linhas de desenho, círculos, retângulos e textos

A primeira coisa que aprenderemos a desenhar é uma linha. Para desenhar uma linha, simplesmente usamos o CV2.Função de linha (). A função leva 5 argumentos - o vídeo de origem, o ponto de partida, o ponto final, a cor e a espessura da linha. No caso seguinte, decidimos desenhar uma borda retangular (composta por 4 linhas):

importar CV2
Capture = CV2.Videocapture ('vtest.Avi ')
enquanto é verdade:
ret, quadro = captura.ler()
largura = int (captura.obtenha (3))
altura = int (captura.Get (4))
linha1 = cv2.linha (quadro, (0,0), (0, altura), (255, 255, 255), 10)
linha2 = cv2.linha (linha1, (0, 0), (largura, 0), (255, 255, 255), 10)
linha3 = cv2.linha (linha2, (0, altura), (largura, altura), (255, 255, 255), 10)
linha4 = cv2.linha (linha3, (largura, 0), (largura, altura), (255, 255, 255), 10)
cv2.imshow ('quadro', linha4)
se cv2.WaitKey (40) == ord ('q'):
quebrar
capturar.liberar()
cv2.DestroyAllWindows ()

Em seguida, desenharemos um círculo e um retângulo no vídeo. Para desenhar um retângulo, usamos o CV2.função retângulo (), que leva 5 argumentos como a linha. Para desenhar um círculo, usamos a função CV2.Circle (), que também leva 5 argumentos - o vídeo de origem, o ponto central, o raio, a cor e a espessura.

importar CV2
Capture = CV2.Videocapture ('vtest.Avi ')
enquanto é verdade:
ret, quadro = captura.ler()
largura = int (captura.obtenha (3))
altura = int (captura.Get (4))
retângulo = cv2.retângulo (quadro, (150, 15), (650, 550), (0,0,0), 11)
cv2.círculo (retângulo, (250, 250), 60, (0,0,0), 11)
cv2.imshow ('quadro', quadro)
se cv2.WaitKey (40) == ord ('q'):
quebrar
capturar.liberar()
cv2.DestroyAllWindows ()

Agora, vamos adicionar algum texto ao vídeo que temos. Para fazer isso, precisamos especificar uma fonte; Aqui, escolhemos CV2.FONT_HERSHEY_SIMPLEX. Depois que a fonte for selecionada, podemos usar a função CV2.putText () para fazer o resto. Cv2.putText () leva 8 argumentos - o vídeo de origem, o texto que você deseja escrever, a posição onde você deseja, a fonte, a ampliação, a cor, a espessura e o CV2.Line_aa (o que faz tudo parecer melhor).

importar CV2
Capture = CV2.Videocapture ('vtest.Avi ')
enquanto é verdade:
ret, quadro = captura.ler()
largura = int (captura.obtenha (3))
altura = int (captura.Get (4))
Fonte = CV2.FONT_HERSHEY_SIMPLEX
imagem = cv2.puttext (quadro, "vtest.Avi ", (200, 200), Fonte, 4, (0,0,0), 5, CV2.Line_aa)
cv2.imshow ('quadro', imagem)
se cv2.WaitKey (40) == ord ('q'):
quebrar
capturar.liberar()
cv2.DestroyAllWindows ()

OpenCV é capaz de muitas coisas grandes, onde é preciso começar em algum lugar. Pode estar aprendendo a criar e salvar imagens e vídeos. Neste tutorial, aprendemos a fazer o básico da visão computacional.

Codificação feliz!