Home › Fóruns › Fórum Detecção de Movimentos com Python e OpenCV › Como Colocar Entradas de VIDEOS EXTERNOS
- Este tópico contém 8 respostas, 2 vozes e foi atualizado pela última vez 7 meses, 1 semana atrás por Dalton Vargas.
- AutorPosts
- 12 de fevereiro de 2024 às 12:13 #43864
Professor, como eu coloco uma entrada de vídeo externo, EX: Eu transmito as imagens do drone em tempo real pra o VLC, no caso como eu colocaria essa entrada no algoritmo em vês do vídeo ? ou como colocar qualquer outra fonte de vídeo exerna ?
13 de fevereiro de 2024 às 08:03 #43869Certo, apenas precisa ajustar o carregamento do vídeo:
* ao invés de passar como parâmetro para a função cv2.VideoCapture a variável VIDEO_SOURCE (caminho até um vídeo):
VIDEO_SOURCE = “videos/Cars.mp4”
cap = cv2.VideoCapture(VIDEO_SOURCE)
hasFrame, frame = captura.read()* você passa a ID da câmera:
cap = cv2.VideoCapture(0)
hasFrame, frame = captura.read()Se você tiver mais de uma webcam conectada, pode ser necessário testar qual é a sua webcam identificada pelo número zero e alterar o valor sequencialmente para encontrar a webcam que se deseja utilizar na captura. Com uma única webcam, o valor zero irá funcionar.
Caso você necessite conectar a uma câmera IP, ai você passa o URL de streaming como parâmetro. Normalmente, o protocolo RTSP ou HTTP é usado pela câmera para transmitir vídeo. Por exemplo:
cap = cv2.VideoCapture(‘rtsp://192.168.1.1/1’)A maioria das câmeras IP possui um nome de usuário e senha para acessar o vídeo. Nesse caso, as credenciais devem ser fornecidas no URL de streaming da seguinte forma:
cap = cv2.VideoCapture(‘rtsp://username:password@192.168.1.1/1’)
Também seguem alguns artigos que podem lhe ajudar:- Integrate Your Android Phone Camera with IP Webcam and OpenCV Using Python
- Python-Based Method for Connecting to IP Cameras
- Esta resposta foi modificada 9 meses, 3 semanas atrás por Dalton Vargas.
14 de fevereiro de 2024 às 13:58 #43876Maravilha Professor, deu certo ok.
Uma dica Professor, trabalho com drone qual desses projeto mais indicado pra usar as imagens do drone por ex. pra acompanhar um intruso pelo fato de algum momento o drone ter que se movimentar ou seja o vídeo estará em movimento em algum momento, no caso pra rastrear o individuo qual dos projetos aqui na plataforma é mais indicado ?
14 de fevereiro de 2024 às 14:11 #43877Esqueci de mencionar na pergunta acima vamos lá, COMO É POSSIVEL COM ESSE PROJETO ACIONAR UMA ALARME NO PC MESMO, como implementar essa função ou entrada ex. para que quando detectar o movimento tocar um som qualquer ?
15 de fevereiro de 2024 às 08:14 #43878Olá Abraão,
Sugiro combinar os algoritmos de rastreamento de objetos com estes de detecção de movimentos. Sobre emitir um som ao detectar o movimento, existem algumas bibliotecas do python para isso, como por exemplo a playsound. Segue um exemplo utilizando a playsound para reproduzir um som:
from playsound import playsound
playsound(‘path/to/audio/file/audio.mp3’)
- Esta resposta foi modificada 9 meses, 3 semanas atrás por Dalton Vargas.
15 de fevereiro de 2024 às 10:32 #43881Então Professor, eu inseri o áudio, porem quando executo ele toca o áudio e não abre por explo a câmera, qualquer parte que coloco a linha do código sempre ele toca o áudio e não abre a câmera
segue o parte do codigo, “Detecção de movimentos 2″em negrito o codigo do audio.
for cnt in contours:
area = cv2.contourArea(cnt)
if area >= minArea:
x, y, w, h = cv2.boundingRect(cnt)
cv2.rectangle(frame, (10,30), (300,55), (255, 0, 0), -1)
cv2.putText(frame, ‘Movimento detectado!’, (10,50), FONT, 0.8, TEXT_COLOR, 2, cv2.LINE_AA)cv2.drawContours(frame, cnt, -1, TRACKER_COLOR, 3)
cv2.drawContours(frame, cnt, -1, (255,255,255), 1)
cv2.rectangle(frame, (x, y), (x+w, y+h), TRACKER_COLOR, 3)
cv2.rectangle(frame, (x, y), (x + w, y + h), (255,255,255), 1)playsound(“Adam_03.mp3”)
# Sobreposições transparentes
# https://www.pyimagesearch.com/2016/03/07/transparent-overlays-with-opencv/
#for alpha in np.arange(0.8, 1.1, 0.9)[::-1]:
# frame_copy = frame.copy()
# output = frame.copy()
# cv2.drawContours(frame_copy, [cnt], -1, TRACKER_COLOR, -1)
# frame = cv2.addWeighted(frame_copy, alpha, output, 1 – alpha, 0, output)result = cv2.bitwise_and(frame, frame, mask=bg_mask)
cv2.imshow(‘Frame’, frame)
cv2.imshow(‘Mask’, result)if cv2.waitKey(1) & 0xFF == ord(“q”):
breakmain()
- Esta resposta foi modificada 9 meses, 3 semanas atrás por Abraão Isidoro Lipari.
16 de fevereiro de 2024 às 08:00 #43885Entendi,
Considerando que o processamento da detecção ocorre a cada frame, é possível que o algoritmo de processamento de áudio possa interromper o fluxo de processamento do vídeo. Para solucionar esse problema, sugiro a implementação de variáveis de controle para alterar seu estado quando o movimento é detectado, permitindo a execução do áudio somente quando um estado específico for identificado.
Sugiro utilizar uma variável booleana inicializada como ‘False’ e alterá-la para ‘True’ apenas quando houver detecção de movimento. Também seria útil ter uma segunda variável para registrar o tempo entre detecções consecutivas, permitindo que o valor da variável booleana seja redefinido para ‘False’ após um determinado intervalo de tempo
16 de fevereiro de 2024 às 08:17 #43886Professor poderia me dar um exemplo de como inserir e onde colocar esses código, se me dar um exemplo do código ficara mais fácil pra mim assimilar, e acerta essa questão. tentei alguma coisa aqui mas a cabeça bugo kkk.
30 de abril de 2024 às 10:54 #44588Olá Abraão,
Peço desculpas pela demora em lhe dar o retorno.
Adaptei o exemplo aqui do curso sobre detecção de distanciamento social.
adicionei duas variáveis de controle:
- THRESHOLD_COUNTER = 200, assim a cada 200 frames onde a detecção de proximidade alcançar este limiar, dispara o ‘alarme’ (sugiro usar um som com um tempo de execução bem curto, 2 seg. por exemplo, para não ‘travar’ a detecção por muito tempo);
- counter = 0, que é o contador de frames onde houve a detecção de proximidade.
É um exemplo bem simples para ajudar a você entender a ideia, então pode adapatar da maneira que você achar melhor. Segue abaixo:
- AutorPosts
- Você deve fazer login para responder a este tópico.