Grianghraif Lánléargais Néal a Chruthú le Python OpenCV

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()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.