import cv2 as cv # Caminhos para o arquivo de configuração e o modelo congelado config_file = './ssd_mobilenet_v3_large_coco_2020_01_14.pbtxt' frozen_model = './frozen_inference_graph.pb' # Modelo de detecção usando o módulo de rede neural profunda model = cv.dnn_DetectionModel(frozen_model, config_file) # labels.txt contém todas as anotações para a detecção class_labels = [ ] file_name = './labels.txt' with open(file_name, 'rt') as fpt: class_labels = fpt.read().rstrip('\n').split("\n") # Parâmetros de entrada para o modelo de detecção model.setInputSize(320, 320) model.setInputScale(1.0/127.5) model.setInputMean((127.5, 127.5, 127.5)) model.setInputSwapRB(True) # Ler uma imagem img = cv.imread("./test.jpeg") # Executar uma inferência na imagem class_index, confidence, bbox = model.detect(img, confThreshold=0.6) # Configurar a escala da fonte e o tipo para exibir texto na imagem após a detecção font_scale = 3 font = cv.FONT_HERSHEY_PLAIN # Contador para acompanhar o número de bicicletas detectadas counter = 0 # Iterar sobre os objetos detectados na imagem for class_ind, conf, boxes in zip(class_index, confidence, bbox): # Desenhar um retângulo ao redor do objeto detectado cv.rectangle(img, boxes, (255, 0, 0), 2) # Exibir o rótulo perto do objeto detectado cv.putText(img, class_labels[class_ind - 1], (boxes[0] + 10, boxes[1] + 40), font, font_scale, (0, 255, 0), thickness=3) # Verificar se há uma bicicleta na imagem if class_labels[class_ind - 1] == 'bicycle': counter += 1 # Incrementar o contador se uma bicicleta for detectada # Exibir o número de bicicletas detectadas print(f"Número de bicicletas detectadas: {counter}") # Salvar a imagem com rótulos e caixas ao redor dos objetos detectados cv.imwrite('./output.jpg', img)