📟 Leitura automática de manômetros analógicos usando YOLO (detecção) e regressão de ângulo, com conversão para porcentagem, pressão e volume.
Projetado para aplicações industriais, hospitalares e IoT, eliminando a necessidade de leitura manual.
- Detecção do manômetro via YOLOv8
- Regressão precisa do ângulo do ponteiro
- Conversão de ângulo → porcentagem
- Cálculo de pressão e volume
- API simples e reutilizável
- Compatível com pipelines de visão computacional
git clone https://github.com/danilotec/reader_manometer.git
pip install -r reader_manometer/requirements.txt
⚠️ O pacote inclui modelos treinados. Porem você pode fornecer seus próprios arquivos.pt.
- Python 3.9+
- PyTorch
- Ultralytics (YOLOv8)
- OpenCV
- NumPy
Você precisa informar:
- Modelo YOLO treinado (
best.pt) - Modelo de regressão de ângulo (
regressor.pt)
Exemplo:
reader_manometer/runs/detect/train2/weights/best.pt
reader_manometer/regressor.pt
from reader_manometer import Manometer, angle_to_percent, get_volume, CropImage, YOLO
yolo = YOLO("reader_manometer/runs/detect/train2/weights/best.pt")
def get_crop():
crop = CropImage(
yolo=yolo,
imput_dir='./',
output_dir='./crops'
)
crop.generate_crop('image2.jpg')
def get_vol():
man = Manometer(
yolo=yolo,
regressor="reader_manometer/regressor.pt"
)
angles = man.get_angle(
filename='./crops/image2_0.jpg'
)
if angles:
print("ângulos:", angles)
man_volume = angles[0]
vol_percent = angle_to_percent(man_volume)
print("porcentagem volume:", round(vol_percent, 2))
print("volume:", round(get_volume(vol_percent, 800), 2))Classe principal responsável pela inferência.
Manometer(model: str, regressor: str)Parâmetros
model: caminho para o modelo YOLO (.pt)regressor: caminho para o modelo de regressão de ângulo (.pt)
angles = man.get_angle(filename: str)Retorno
[angulo_1, angulo_2]- Valores em graus
- Retorna
Nonese não detectar o manômetro
percent = angle_to_percent(angle)Converte o ângulo do ponteiro em porcentagem (0–100%), considerando a escala do manômetro.
value = get_volume(percent, max_value)Usado para calcular:
- Pressão (ex:
25 bar) - Volume (ex:
800 L)
- Monitoramento de oxigênio hospitalar
- Leitura remota de tanques pressurizados
- Automação industrial
- Integração com ESP32, APIs REST e MQTT
- Dashboards e sistemas SCADA
- O modelo YOLO deve ser treinado especificamente para seu tipo de manômetro apesar de ja pussuir uma boa base
- A regressão depende de imagens bem enquadradas
- A escala angular precisa estar configurada corretamente no projeto
MIT License