import sys import cv2 from pathlib import Path def laplace_edge_detection(image_path, output_path): """ Opens an image, applies Laplace filtering for edge detection, and saves the resulting grayscale image. Args: image_path (str): Path to the input image file. output_path (str): Path to save the processed image. """ try: # Open the image in grayscale mode img = cv2.imread(image_path, cv2.IMREAD_GRAYSCALE) if img is None: print(f"Error: Could not open or read image at {image_path}") return # Apply Laplace filter for edge detection laplace_kernel = np.array([[0, 1, 0], [1, -4, 1], [0, 1, 0]]) # Standard Laplace kernel laplace_filtered = cv2.filter2D(img, -1, laplace_kernel) # Convert to uint8 (grayscale 8-bit) and clip values to the valid range [0, 255] laplace_filtered = np.uint8(laplace_filtered) # Important for saving correctly # Save the resulting image cv2.imwrite(output_path, laplace_filtered) print(f"Laplace edge detection complete. Image saved to {output_path}") except Exception as e: print(f"An error occurred: {e}") if __name__ == "__main__": import numpy as np # Import here, only if needed for the main execution input_path = sys.argv[1] output_path = sys.argv[2] laplace_edge_detection(input_path, output_path)