Untitled
unknown
plain_text
a year ago
1.7 kB
6
Indexable
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.")Editor is loading...
Leave a Comment