Zet de eerste stappen in augmented reality-programmering door te leren hoe u plaatsaanduidingen voor inhoud kunt genereren.
Als het gaat om augmented reality, is de positionering van virtuele objecten en overlays cruciaal. Dat is waar ArUco-markers van pas komen. ArUco-markeringen zijn eenvoudige binaire patronen die u in echte woordscènes kunt plaatsen om digitale inhoud te bedekken.
U kunt ze afdrukken op papier, weergeven op een scherm of projecteren op objecten uit de echte wereld. Deze flexibiliteit maakt ze een populaire keuze in computer vision-toepassingen.
De ArUco-module en OpenCV-bibliotheek
Om ArUco-markeringen te genereren, hebt u de ArUco-module nodig die deel uitmaakt van de OpenCV-bibliotheek. OpenCV is een bibliotheek die veel tools en functies bevat om te ontwikkelen toepassingen voor computervisie.
Met de module kunt u ArUco-markers genereren, detecteren en herkennen. Het stelt u ook in staat om pose-inschattingen uit te voeren. Dit maakt het op zijn beurt mogelijk om virtuele objecten af te stemmen op de echte wereld, waardoor een meeslepende en naadloze gebruikerservaring ontstaat.
Uw omgeving instellen
Maak een nieuwe virtuele Python-omgeving. Dit zorgt ervoor dat er geen pakketversieconflict is wanneer u de vereiste bibliotheken van uw project installeert. Ga vervolgens naar de terminal en voer de volgende opdracht uit om OpenCV te installeren.
pip installeer opencv-contrib-python
De bovenstaande opdracht installeert de OpenCV contrib-bibliotheek. Dit bevat de ArUco-module die u gaat gebruiken om de markergenerator te maken. Zorg ervoor dat je deze versie installeert, niet OpenCV-python, want de laatste bevat niet de functionaliteit die je nodig hebt.
De volledige broncode is beschikbaar in een GitHub-opslagplaats.
Het ArUco Maker Generator-programma maken
Het maken van het ArUco-markeringsprogramma is vrij eenvoudig. Dit komt omdat de AruCo-module het meeste zware werk voor u doet. Begin met het importeren van OpenCV zodat u de functies en tools in uw code kunt gebruiken.
importeren cv2
Definieer een functie die een enkele markering met een specifieke ID zal genereren. Dit zal tegemoet komen aan wanneer de markeringen niet in bulk nodig zijn.
defgenereer_single_marker(aruco_dict):
marker_size = int (invoer("Voer de markeringsgrootte in: "))
marker_id = int (invoer("Voer de markerings-ID in: "))marker_img = cv2.aruco.generateImageMarker (aruco_dict, marker_id,
marker_size)cv2.imwrite("markering_{}.png".format (marker_id), marker_img)
marker_img = cv2.imread("markering_{}.png".formaat (marker_id))
cv2.imshow("Markeerstift", marker_img)
afdrukken("Dimensies:", marker_img.shape)
cv2.waitKey(0)
Definieer vervolgens een functie die een bepaald aantal markeringen in bulk zal genereren. Het aantal markeringen dat u kunt genereren, is afhankelijk van de OpenCV-woordenboek je gebruikt. Dit komt omdat sommige woordenboeken het genereren van meer markeringen ondersteunen dan andere.
defgenereer_bulk_markers(aruco_dict):
marker_size = int (invoer("Voer de markeringsgrootte in: "))
num_markers = int (invoer("Voer het aantal te genereren markeringen in: "))
marker_imgs = []voor marker_id in bereik (num_markers):
marker_img = cv2.aruco.generateImageMarker (aruco_dict, marker_id,
marker_size)cv2.imwrite("markering_{}.png".format (marker_id), marker_img)
marker_imgs.append (cv2.imread("markering_{}.png".formaat (marker_id)))
voor marker_img in marker_imgs:
cv2.imshow("Markeerstift", marker_img)
afdrukken("Dimensies:", marker_img.shape)
cv2.waitKey(0)
Definieer ten slotte een hoofdfunctie die de stroom van het programma regelt en vraag de gebruiker om de gewenste bewerking. Zorg ervoor dat het als eerste wordt uitgevoerd wanneer het programma wordt uitgevoerd.
defvoornaamst():
aruco_dict = cv2.aruco.getPredefinedDictionary (cv2.aruco. DICT_4X4_50)gebruiker_invoer = invoer("Druk op '1' om een enkele markering te genereren of "
"'2' om markeringen in bulk te genereren: ")als gebruiker_invoer == "1":
genereer_single_marker (aruco_dict)
elif gebruiker_invoer == "2":
genereren_bulk_markers (aruco_dict)
anders:
afdrukken("Ongeldige invoer. Probeer het opnieuw.")
als __naam__ == "__voornaamst__":
voornaamst()
Voer nu het programma uit om een enkele markering of in bulk te genereren. De uitvoer van het programma ziet er ongeveer zo uit:
De uitvoer toont een gegenereerde ArUco-markering. Het programma slaat elke markering op met een nummer aan het einde van de naam, dat de markerings-ID vertegenwoordigt.
Wat nu na het genereren van ArUco-markeringen?
Na het genereren van ArUco-markeringen, kunt u uw eigen eenvoudige computervisietoepassing maken. Dit zal u helpen te leren hoe u de markeringen kunt gebruiken om digitale informatie over afbeeldingen uit de echte wereld te leggen. Het zal je ook helpen waarderen hoe de markeringen bijdragen aan de hele naadloze en meeslepende gebruikerservaring.