import cv2 import numpy as np # Carregar a imagem image = cv2.imread('foto1.jpg') # Substitua 'foto2.jpg' pelo caminho da sua imagem # Converter para o espaço de cores HSV hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV) # Definir limites para a cor verde ampliada em HSV lower_green = np.array([30, 40, 40]) # Valores de cor verde em HSV upper_green = np.array([90, 255, 255]) # Criar máscara para a cor verde estendida mask_green = cv2.inRange(hsv, lower_green, upper_green) # Salvar a imagem temporária com o resultado da máscara cv2.imwrite('mask_green_result.jpg', mask_green) # Carregar a imagem temporária temp_image = cv2.imread('mask_green_result.jpg') # Converter a imagem para tons de cinza gray_temp_image = cv2.cvtColor(temp_image, cv2.COLOR_BGR2GRAY) # Definir uma região de interesse no lado esquerdo da máscara height, width = gray_temp_image.shape[:2] roi_left = gray_temp_image[0:height, 0:width // 2] # Encontrar a linha onde ocorre a transição de preto para branco mais próxima do centro e do topo contours, _ = cv2.findContours(roi_left, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) max_distance_center = 0 max_distance_top = 0 selected_contour = None for contour in contours: for point in contour: x, y = point[0] distance_center = abs(x - width // 4) # Distância do ponto ao centro distance_top = y # Distância do ponto ao topo if distance_center > max_distance_center and distance_top > max_distance_top: max_distance_center = distance_center max_distance_top = distance_top selected_contour = contour # Sobrepor o ponto na imagem original if selected_contour is not None: for point in selected_contour: x, y = point[0] x += width // 4 # Ajustar a posição para a imagem original cv2.circle(image, (x, y), 5, (0, 255, 0), -1) # Mostrar a imagem com o ponto destacado cv2.imshow('Imagem com Ponto na Linha de Transição', temp_image) cv2.waitKey(0) cv2.destroyAllWindows()