Is éard atá i gceist le fuála íomhánna Python agus OpenCV á n-úsáid ná íomhánna iolracha a chomhcheangal chun radharc lánléargais nó réimse leathan a chruthú. Úsáidtear an próiseas seo go coitianta sa ghrianghrafadóireacht chun íomhánna forluiteacha a chumasc agus chun lánléargas gan uaim a chruthú. Seo cur síos bunúsach ar conas íomhánna a fhuáil le OpenCV:
Réamhphróiseáil Íomhá
Luchtaigh na híomhánna is mian leat a fhuáil le feidhm OpenCV cv2.imread()
.
Tiontaigh íomhánna go liathscála ag úsáid cv2.cvtColor()
más gá.
Braith príomhghnéithe na n-íomhánna ag baint úsáide as halgartaim braite gné mar SIFT, ORB, nó AKAZE.
Meaitseáil Gné
Úsáid teicníochtaí meaitseála gné chun pointí comhfhreagracha idir na híomhánna a fháil.
Soláthraíonn OpenCV feidhmeanna cosúil le cv2.BFMatcher()
nó cv2.FlannBasedMatcher()
le haghaidh meaitseáil gnéithe.
Meastachán Hoimagrafaíocht
Ríomh an mhaitrís homagrafaíochta ag baint úsáide as na pointí comhfhreagracha a fuarthas sa chéim roimhe seo.
Déanann an mhaitrís homagrafaíochta cur síos ar an gclaochlú idir an dá íomhá.
Warping agus Fuála
Úsáid an mhaitrís homagrafaíochta le dlúith ar cheann de na híomhánna chun ailíniú leis an gceann eile.
Is féidir an cv2.warpPerspective()
fheidhm a úsáid chun na críche seo.
Comhcheangail an íomhá warped leis an íomhá eile chun an Lánléargas fuaite a chruthú.
Cumasc(Roghnach)
Cuir teicnící cumasc íomhá i bhfeidhm chun na híomhánna fuaite a chumasc gan uaim.
Is féidir teicnící cosúil le cumasc líneach nó cumasc il-bhanna a úsáid.
Taispeáin nó Sábháil
Taispeáin an Lánléargas fuaite ag baint úsáide as cv2.imshow()
nó sábháil ag baint úsáide as cv2.imwrite()
.
Seo sampla cód simplithe a thaispeánann an próiseas fuála íomhá ag baint úsáide as 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()
Tabhair faoi deara gur léiriú simplithe é an sampla seo. Go praiticiúil, b'fhéidir go mbeadh ort saincheisteanna a láimhseáil mar ailíniú íomhá, cumasc, agus ceartú saobhadh chun íomhánna lánléargais ardchaighdeáin a bhaint amach.