Forum Replies Created
- AuthorPosts
Olá 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’)
- This reply was modified 1 year, 2 months ago by
Dalton Vargas.
Certo, 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
- This reply was modified 1 year, 2 months ago by
Dalton Vargas.
Olá Abraão,
Conforme a mensagem de erro, você escreveu waitkey errado (k = cv2.waiteKey(1) & 0XFF AttributeError: module ‘cv2’ has no attribute ‘waiteKey’). Ajustanto isso deve funcionar.
Que bom que deu certo Abraão, sigo a disposição!
Boa aula!
Att
Dalton
Perfeito Abraão, que bom que deu certo a execução do multitracker.
Em relação às informações do rodapé, é importante notar que nas aulas do professor Jones os scripts do curso estão sendo executados em uma máquina MAC (Apple), especificamente quando o script é executado no PyCharm. Isso se deve a uma funcionalidade específica do PyCharm em dispositivos dessa marca.
Sobre o erro que você mencionou, de acordo com a mensagem de erro é no momento que está instanciando o multitracker. Já tentou usar o legacy (adicionando ‘legacy’ entre cv2. e a instanciação do tracker)?
Segue um exemplo de como ficaria o script competo usando o legacy:
- This reply was modified 1 year, 2 months ago by
Dalton Vargas.
Certo Abraão,
pelo que analisei e testei, seu script está perfeito.
Seguem algumas sugestões:
- se não está nem abrindo a janela para você selecionar os objetos, verifique se o path para ao vídeo está correto;
- verifique no seu prompt as mensagens que a função selectROI retorna e tente seguir conforme as instruções de retorno:
- Select a ROI and then press SPACE or ENTER button!
Cancel the selection process by pressing c button!
Press Q to quit and start tracking
Press any other key to select the next object
- Select a ROI and then press SPACE or ENTER button!
- This reply was modified 1 year, 2 months ago by
Dalton Vargas.
entendi Abraão, o erro está na identação do seu script. Você deixou todas as funções dentro da condição que verifica se o tracker selecionado é o CSRT, o que significa que essas funções só serão ativadas se esse tracker for escolhido.
Segue o print de como deve ficar pra você ter uma base. Alem disso sugiro revisar/acompanhar as aulas para entender detalhadamente a implementação, onde cada linha de código é explicada em detalhes.
Olá Abraão,
Após realizar testes com o seu script, observei um pequeno erro de digitação na função cv2.VideoCapture, onde está faltando a letra ‘a’ na palavra ‘Capture’:
video = cv2.VideoC**a**pture(‘Videos/race.mp4’) # não esqueça de remover os asteriscos
Fora esse detalhe, o restante do código funcionou sem problemas.
Olá Alessandro,
No módulo carrega_agenda.py temos a comparação se a hora dos eventos do dia registrados na agenda.xlsx é maior ou igual a hora atual:
hora = datetime.datetime.time(hora_completa).hour
if data_atual == data:
if hora >= hora_atual: # Se a hora do evento agendado for maior ou igual a hora atual. Se não a hora do evento já passou
descricao.append(row[‘descricao’]), responsavel.append(row[‘responsavel’]), hora_agenda.append(row[‘hora’])Note que não estamos comparando minutos ou segundos, somente a hora. Para comparar também os minutos, você deve ajustar esta condição no script acima para trazer também os minutos e comparar com o minuto atual. Segue um exemplo de como ficaria:
for index, row in agenda.iterrows():
data = datetime.datetime.date(row[‘data’])
#print(data)
hora_completa = datetime.datetime.strptime(str(row[‘hora’]), ‘%H:%M:%S’)
#print(hora_completa)
hora = hora_completa.hour
#print(hora)
minuto = hora_completa.minuteif data_atual == data:
if hora > hora_atual or (hora == hora_atual and minuto >= minuto_atual): # Se a hora e o minuto do evento agendado forem maiores ou iguais a hora e minuto atual. Se não a hora do evento já passou
descricao.append(row[‘descricao’]), responsavel.append(row[‘responsavel’]), hora_agenda.append(row[‘hora’])Olá Mateus,
Consegui identificar o problema.
É na condição onde você está comparando a versão do OpenCV para instanciar o rastreador, é necessário comparar a variável major_ver e minor_ver na condição conforme segue abaixo:
#Ajustar disso
if int(minor_ver) < 3 :
tracker = tracker_type# Para isso
if int(major_ver) == 3 and int(minor_ver) < 3:
tracker = cv2.Tracker_create(tracker_type.upper())- This reply was modified 1 year, 3 months ago by
Dalton Vargas.
Olá Tiago,
Este erro indica que o programa não consegue encontrar o arquivo compartilhado libespeak.so.1. Este é um problema comum quando há uma dependência ausente ou mal configurada. Para corrigir isso, você pode seguir a etapa abaixo:
- Instale o pacote espeak:
- No Ubuntu ou Debian, você pode instalar usando o seguinte comando: sudo apt-get install espeak
- No Linux ou Manjaro, você pode instalar o eSpeak usando um gerenciador de pacotes como
pamac
: pamac install espeak-ng
- Se você estiver usando uma distribuição Linux diferente, pode ser necessário consultar seu gerenciador de pacotes ou repositório de pacotes para instalar o eSpeak.
- Para Windows, pyttsx3 usa SAPI5 por padrão. Certifique-se de ter vozes SAPI5 instaladas e configuradas corretamente em seu sistema Windows.
Se você estiver usando um sistema operacional diferente, consulte a documentação do seu gerenciador de pacotes para instalar o pacote espeak.
- This reply was modified 1 year, 3 months ago by
Dalton Vargas.
12 de December de 2023 at 08:26 in reply to: plt.figure(figsize=(18,7)) sns.countplot(df[‘classID’]); #43201Olá Edson,
Seguem algumas sugestões de ajuste:
- você pode contar as frequências das categorias na coluna ‘classID’ antes de criar o gráfico usando o método .value_counts() do pandas e, em seguida, passar os resultados para sns.countplot():
# Conte as frequências das categorias na coluna ‘classID’
class_counts = df[‘classID’].value_counts()# Crie o gráfico de contagem
plt.figure(figsize=(18, 7))
sns.barplot(x=class_counts.index, y=class_counts.values)
plt.xticks(rotation=90) # Rotação dos rótulos no eixo x, se necessário
plt.xlabel(‘Classe’)
plt.ylabel(‘Contagem’)
plt.title(‘Contagem de Classes’)
plt.show()11 de December de 2023 at 08:37 in reply to: Erro na execução do Notebook Classificações de Sons Ambientais #43194Flávio,
Você acabou postando duas vezes a mesma pergunta. Vou replicar a resposta abaixo:
”
Olá Flávio,
Seguem algumas sugestões de ajuste:
você pode contar as frequências das categorias na coluna ‘classID’ antes de criar o gráfico usando o método .value_counts() do pandas e, em seguida, passar os resultados para sns.countplot():# Conte as frequências das categorias na coluna ‘classID’
class_counts = df[‘classID’].value_counts()# Crie o gráfico de contagem
plt.figure(figsize=(18, 7))
sns.barplot(x=class_counts.index, y=class_counts.values)
plt.xticks(rotation=90) # Rotação dos rótulos no eixo x, se necessário
plt.xlabel(‘Classe’)
plt.ylabel(‘Contagem’)
plt.title(‘Contagem de Classes’)
plt.show()“
11 de December de 2023 at 08:34 in reply to: Erro na execução do Notebook Classificações de Sons Ambientais #43193Olá Flávio,
Seguem algumas sugestões de ajuste:
- você pode contar as frequências das categorias na coluna ‘classID’ antes de criar o gráfico usando o método .value_counts() do pandas e, em seguida, passar os resultados para sns.countplot():
- # Conte as frequências das categorias na coluna ‘classID’
class_counts = df[‘classID’].value_counts()# Crie o gráfico de contagem
plt.figure(figsize=(18, 7))
sns.barplot(x=class_counts.index, y=class_counts.values)
plt.xticks(rotation=90) # Rotação dos rótulos no eixo x, se necessário
plt.xlabel(‘Classe’)
plt.ylabel(‘Contagem’)
plt.title(‘Contagem de Classes’)
plt.show()
- # Conte as frequências das categorias na coluna ‘classID’
Legal Rodrigo, parabéns por mais esta conquista!
- This reply was modified 1 year, 2 months ago by
- AuthorPosts