மற்றும் OpenCV ஐப் பயன்படுத்தி படங்களை தைப்பது என்பது Python ஒரு பரந்த அல்லது பரந்த-புலக் காட்சியை உருவாக்க பல படங்களை இணைப்பதை உள்ளடக்கியது. இந்த செயல்முறை பொதுவாக புகைப்படம் எடுப்பதில் ஒன்றுடன் ஒன்று படங்களை ஒன்றிணைக்கவும் மற்றும் ஒரு தடையற்ற பனோரமாவை உருவாக்கவும் பயன்படுத்தப்படுகிறது. OpenCV ஐப் பயன்படுத்தி படங்களை தைப்பது எப்படி என்பதற்கான அடிப்படை அவுட்லைன் இங்கே:
பட முன் செயலாக்கம்
OpenCV இன் செயல்பாட்டைப் பயன்படுத்தி நீங்கள் தைக்க விரும்பும் படங்களை ஏற்றவும் cv2.imread()
.
cv2.cvtColor()
தேவைப்பட்டால், படங்களை கிரேஸ்கேலுக்கு மாற்றவும் .
SIFT, ORB அல்லது AKAZE போன்ற அம்சங்களைக் கண்டறியும் வழிமுறைகளைப் பயன்படுத்தி படங்களில் உள்ள முக்கிய அம்சங்களைக் கண்டறியவும்.
அம்சம் பொருத்தம்
படங்களுக்கிடையில் தொடர்புடைய புள்ளிகளைக் கண்டறிய அம்சம் பொருந்தக்கூடிய நுட்பங்களைப் பயன்படுத்தவும்.
cv2.BFMatcher()
OpenCV அம்சம் பொருத்துதல் போன்ற செயல்பாடுகளை வழங்குகிறது cv2.FlannBasedMatcher()
.
ஹோமோகிராபி மதிப்பீடு
முந்தைய கட்டத்தில் காணப்படும் தொடர்புடைய புள்ளிகளைப் பயன்படுத்தி ஹோமோகிராபி மேட்ரிக்ஸைக் கணக்கிடவும்.
ஹோமோகிராபி மேட்ரிக்ஸ் இரண்டு படங்களுக்கிடையேயான மாற்றத்தை விவரிக்கிறது.
வார்ப்பிங் மற்றும் தையல்
படங்களில் ஒன்றை மற்றொன்றுடன் சீரமைக்க ஹோமோகிராபி மேட்ரிக்ஸைப் பயன்படுத்தவும்.
இந்த நோக்கத்திற்காக செயல்பாட்டைப் cv2.warpPerspective()
பயன்படுத்தலாம்.
தைக்கப்பட்ட பனோரமாவை உருவாக்க, சிதைந்த படத்தை மற்ற படத்துடன் இணைக்கவும்.
கலத்தல்(விரும்பினால்)
தைக்கப்பட்ட படங்களை தடையின்றி ஒன்றிணைக்க, படக் கலப்பு நுட்பங்களைப் பயன்படுத்தவும்.
நேரியல் கலவை அல்லது பல-பேண்ட் கலவை போன்ற நுட்பங்களைப் பயன்படுத்தலாம்.
காட்சி அல்லது சேமி
தைத்த பனோரமாவை பயன்படுத்தி காட்சிப்படுத்தவும் cv2.imshow()
அல்லது பயன்படுத்தி சேமிக்கவும் cv2.imwrite()
.
OpenCV ஐப் பயன்படுத்தி படத்தை தைக்கும் செயல்முறையை விளக்கும் எளிமையான குறியீடு எடுத்துக்காட்டு இங்கே:
import cv2
# Load images
image1 = cv2.imread('image1.jpg')
image2 = cv2.imread('image2.jpg')
# Convert images to grayscale
gray1 = cv2.cvtColor(image1, cv2.COLOR_BGR2GRAY)
gray2 = cv2.cvtColor(image2, cv2.COLOR_BGR2GRAY)
# Detect key features and descriptors
orb = cv2.ORB_create()
keypoints1, descriptors1 = orb.detectAndCompute(gray1, None)
keypoints2, descriptors2 = orb.detectAndCompute(gray2, None)
# Feature matching
matcher = cv2.BFMatcher(cv2.NORM_HAMMING, crossCheck=True)
matches = matcher.match(descriptors1, descriptors2)
# Apply ratio test to filter good matches
matches = [match for match in matches if match.distance < 0.7 * max(len(matches), 1)]
# Find corresponding points
src_pts = [keypoints1[match.queryIdx].pt for match in matches]
dst_pts = [keypoints2[match.trainIdx].pt for match in matches]
# Calculate homography matrix
homography, _ = cv2.findHomography(src_pts, dst_pts, cv2.RANSAC)
# Warp and stitch images
stitched_image = cv2.warpPerspective(image1, homography,(image1.shape[1] + image2.shape[1], image1.shape[0]))
stitched_image[0:image2.shape[0], 0:image2.shape[1]] = image2
# Display or save the stitched image
cv2.imshow('Stitched Image', stitched_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
இந்த உதாரணம் ஒரு எளிமைப்படுத்தப்பட்ட ஆர்ப்பாட்டம் என்பதை நினைவில் கொள்ளவும். நடைமுறையில், உயர்தர பனோரமிக் படங்களை அடைய, படத்தை சீரமைத்தல், கலத்தல் மற்றும் சிதைத்தல் திருத்தம் போன்ற சிக்கல்களை நீங்கள் கையாள வேண்டியிருக்கலாம்.