Fix deprecated MQTT client usage and enhance dayglo detection

- Updated MQTT client to use MQTTv5 to resolve deprecation warning.
- Fine-tuned color thresholds for dayglo detection.
- Added cropping to focus on the center 80% of the image for more accurate analysis.
- Improved functionality to process an image provided via command line before continuing with MQTT message handling.
This commit is contained in:
2024-10-20 18:09:59 +11:00
parent 53807d79c1
commit 994e814823
2 changed files with 13 additions and 4 deletions
+12 -4
View File
@@ -21,8 +21,9 @@ DISCOVERY_PREFIX = "homeassistant"
last_rating = 0
# Default color thresholds for dayglo detection
LOWER_COLOR = np.array([20, 100, 100])
UPPER_COLOR = np.array([40, 255, 255])
# Fine-tune color thresholds for dayglo detection
LOWER_COLOR = np.array([25, 150, 150])
UPPER_COLOR = np.array([35, 255, 255])
# Track if the initial snapshot has been processed
initial_snapshot_processed = False
@@ -92,7 +93,14 @@ def process_snapshot(payload):
def calculate_dayglo_rating(image):
print("Calculating dayglo rating...")
hsv_image = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
# Crop the image to focus on the center area
height, width = image.shape[:2]
crop_margin = 0.1 # 10% margin
cropped_image = image[int(height * crop_margin):int(height * (1 - crop_margin)),
int(width * crop_margin):int(width * (1 - crop_margin))]
print("Calculating dayglo rating...")
hsv_image = cv2.cvtColor(cropped_image, cv2.COLOR_BGR2HSV)
mask = cv2.inRange(hsv_image, LOWER_COLOR, UPPER_COLOR)
dayglo_pixels = cv2.countNonZero(mask)
total_pixels = image.shape[0] * image.shape[1]
@@ -123,7 +131,7 @@ if len(sys.argv) > 1:
print(f"File not found: {image_file}")
# Set up MQTT client for normal operation
client = mqtt.Client()
client = mqtt.Client(client_id='', clean_session=True, protocol=mqtt.MQTTv5)
client.username_pw_set(MQTT_USERNAME, MQTT_PASSWORD)
client.on_connect = on_connect
client.on_message = on_message