בצע את הצעדים הראשונים בתכנות מציאות רבודה על ידי לימוד כיצד ליצור מצייני מיקום של תוכן.
כשמדובר במציאות רבודה, המיקום של אובייקטים וירטואליים ושכבות הוא קריטי. זה המקום שבו סמני ArUco נכנסים לתמונה. סמני ArUco הם תבניות בינאריות פשוטות שתוכלו למקם בסצנות של מילים אמיתיות כדי לשכב על תוכן דיגיטלי.
אתה יכול להדפיס אותם על נייר, להציג אותם על מסך, או להקרין אותם על אובייקטים בעולם האמיתי. גמישות זו הופכת אותם לבחירה פופולרית ביישומי ראייה ממוחשבת.
מודול ArUco וספריית OpenCV
כדי ליצור סמני ArUco, אתה צריך את מודול ArUco שהוא חלק מספריית OpenCV. OpenCV היא ספרייה המכילה הרבה כלים ופונקציות לפיתוח יישומי ראייה ממוחשבת.
המודול מאפשר ליצור, לזהות ולזהות סמני ArUco. זה גם מאפשר לך לבצע הערכת תנוחה. זה בתורו מאפשר ליישר אובייקטים וירטואליים לעולם האמיתי וליצור חווית משתמש סוחפת וחלקה.
הגדרת הסביבה שלך
צור סביבה וירטואלית חדשה של Python. זה יבטיח שלא תהיה התנגשות בגרסת החבילה כאשר אתה מתקין את הספריות הנדרשות של הפרויקט שלך. לאחר מכן המשך למסוף והפעל את הפקודה הבאה כדי להתקין את OpenCV.
pip להתקין opencv-contrib-python
הפקודה לעיל מתקינה את ספריית התרומות של OpenCV. זה מכיל את מודול ArUco שבו תשתמש כדי ליצור את מחולל הסמנים. ודא שאתה מתקין גרסה זו, לא OpenCV-python, מכיוון שהאחרון אינו כולל את הפונקציונליות הדרושה לך.
קוד המקור המלא זמין ב-a מאגר GitHub.
יצירת תוכנית המחולל ArUco Maker
יצירת תוכנית הסמנים של ArUco היא די פשוטה. הסיבה לכך היא שמודול AruCo עושה עבורך את רוב המשימות הכבדות. התחל בייבוא OpenCV כדי לאפשר לך להשתמש בפונקציות ובכלים שלו בקוד שלך.
יְבוּא cv2
הגדר פונקציה שתיצור סמן בודד עם מזהה ספציפי. זה יספק כאשר אין צורך בטושים בכמויות גדולות.
defgener_single_marker(aruco_dict):
marker_size = int (קלט("הזן את גודל הסמן:"))
marker_id = int (input("הזן את מזהה הסמן:"))marker_img = cv2.aruco.generateImageMarker (aruco_dict, marker_id,
סמן_גודל)cv2.imwrite("marker_{}.png".format (marker_id), marker_img)
marker_img = cv2.imread("marker_{}.png".format (marker_id))
cv2.imshow("סַמָן", marker_img)
הדפס("ממדים:", marker_img.shape)
cv2.waitKey(0)
לאחר מכן הגדר פונקציה שתיצור מספר מסוים של סמנים בכמויות גדולות. מספר הסמנים שתוכל ליצור ישתנה בהתאם ל מילון OpenCV אתה משתמש. הסיבה לכך היא שמילונים מסוימים תומכים ביצירת יותר סמנים מאחרים.
defgener_bulk_markers(aruco_dict):
marker_size = int (קלט("הזן את גודל הסמן:"))
num_markers = int (קלט("הזן את מספר הסמנים ליצירת:"))
marker_imgs = []ל marker_id ב טווח (מספר_סמנים):
marker_img = cv2.aruco.generateImageMarker (aruco_dict, marker_id,
סמן_גודל)cv2.imwrite("marker_{}.png".format (marker_id), marker_img)
marker_imgs.append (cv2.imread("marker_{}.png".format (marker_id)))
ל marker_img ב marker_imgs:
cv2.imshow("סַמָן", marker_img)
הדפס("ממדים:", marker_img.shape)
cv2.waitKey(0)
לבסוף, הגדירו פונקציה ראשית שתשלוט בזרימת התוכנית ובקשו מהמשתמש את הפעולה הרצויה. ודא שהיא פועלת תחילה כאשר התוכנית מופעלת.
defרָאשִׁי():
aruco_dict = cv2.aruco.getPredefinedDictionary (cv2.aruco. DICT_4X4_50)user_input = input("לחץ על '1' כדי ליצור סמן בודד או "
"'2' ליצירת סמנים בכמות גדולה: ")אם user_input == "1":
gener_single_marker (aruco_dict)
אליף user_input == "2":
gener_bulk_markers (aruco_dict)
אַחֵר:
הדפס("קלט לא תקין. בבקשה נסה שוב.")
אם __שם__ == "__רָאשִׁי__":
רָאשִׁי()
כעת הפעל את התוכנית כדי ליצור סמן בודד או בכמות גדולה. הפלט של התוכנית ייראה בערך כך:
הפלט מציג סמן ArUco שנוצר. התוכנית שומרת כל סמן עם מספר בסוף שמו, המייצג את מזהה הסמן.
מה הלאה לאחר יצירת סמני ArUco?
לאחר הפקת סמני ArUco, אתה יכול ליצור אפליקציה פשוטה משלך לראייה ממוחשבת. זה יעזור לך ללמוד כיצד להשתמש בסמנים כדי לכסות מידע דיגיטלי על תמונות ויזואליות בעולם האמיתי. זה גם יעזור לך להעריך כיצד הסמנים תורמים לכל חווית המשתמש החלקה והסוחפת.