Untitled

mail@pastecode.io avatar
unknown
plain_text
16 days ago
1.7 kB
2
Indexable
Never
def process_fingerprint(img_path, save_dir, img_name):
    # Load the image
    image = cv2.imread(img_path)

    # Convert to grayscale
    gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

    # Enhance contrast and remove noise
    enhanced = cv2.equalizeHist(gray)
    blurred = cv2.GaussianBlur(enhanced, (5, 5), 0)

    # Apply adaptive thresholding to binarize the image
    _, thresh = cv2.threshold(blurred, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)

    # Find contours
    contours, _ = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

    # Create a blank mask
    mask = np.zeros_like(gray)

    # Find the largest contour (assuming it's the finger)
    if contours:
        largest_contour = max(contours, key=cv2.contourArea)

        # Draw the largest contour on the mask
        cv2.drawContours(mask, [largest_contour], 0, 255, -1)

        # Apply the mask to the original image to get the fingerprint region
        fingerprint = cv2.bitwise_and(gray, gray, mask=mask)

        # Find the contours within the fingerprint region
        fingerprint_contours, _ = cv2.findContours(fingerprint, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

        # Create a blank image for drawing fingerprint contours
        contour_image = np.zeros_like(gray)

        # Draw the fingerprint contours on the blank image
        cv2.drawContours(contour_image, fingerprint_contours, -1, 255, 1)

        # Save the contour image
        contour_img_path = os.path.join(save_dir, f'contour_{img_name}.jpg')
        cv2.imwrite(contour_img_path, contour_image)
        print(f"Contour image saved as '{contour_img_path}'")
    else:
        print("No contours found.")
Leave a Comment