اولین گام ها را در برنامه نویسی واقعیت افزوده با یادگیری نحوه تولید متغیرهای محتوا بردارید.
وقتی صحبت از واقعیت افزوده می شود، موقعیت اشیاء مجازی و همپوشانی ها بسیار مهم است. نشانگرهای ArUco از اینجا وارد میشوند. نشانگرهای ArUco الگوهای باینری سادهای هستند که میتوانید آنها را در صحنههای واقعی کلمه قرار دهید تا محتوای دیجیتال را پوشش دهید.
می توانید آنها را روی کاغذ چاپ کنید، آنها را روی صفحه نمایش دهید یا آنها را روی اشیاء دنیای واقعی پخش کنید. این انعطاف پذیری آنها را به یک انتخاب محبوب در برنامه های بینایی کامپیوتر تبدیل می کند.
ماژول ArUco و کتابخانه OpenCV
برای تولید نشانگرهای ArUco، به ماژول ArUco نیاز دارید که بخشی از کتابخانه OpenCV است. OpenCV کتابخانه ای است که شامل ابزارها و عملکردهای زیادی برای توسعه برنامه های بینایی کامپیوتر است.
این ماژول به شما امکان می دهد نشانگرهای ArUco را تولید، شناسایی و تشخیص دهید. همچنین به شما امکان می دهد تخمین پوز را انجام دهید. این به نوبه خود امکان تراز کردن اشیاء مجازی را با دنیای واقعی ایجاد می کند و یک تجربه کاربری همه جانبه و یکپارچه را ایجاد می کند.
تنظیم محیط
یک محیط مجازی پایتون جدید ایجاد کنید. این اطمینان حاصل می کند که هنگام نصب کتابخانه های مورد نیاز پروژه خود، هیچ تضاد نسخه بسته وجود ندارد. سپس به ترمینال بروید و دستور زیر را برای نصب OpenCV اجرا کنید.
pip install opencv-contrib-python
دستور بالا کتابخانه مشارکت OpenCV را نصب می کند. این شامل ماژول ArUco است که از آن برای ایجاد نشانگر استفاده خواهید کرد. اطمینان حاصل کنید که این نسخه را نصب کنید، نه OpenCV-python، زیرا نسخه دوم شامل عملکرد مورد نیاز شما نمی شود.
کد منبع کامل در یک مخزن GitHub موجود است.
ایجاد برنامه ArUco Maker Generator
ایجاد برنامه نشانگر ArUco بسیار ساده است. این به این دلیل است که ماژول AruCo بیشتر کارهای سنگین را برای شما انجام می دهد. با وارد کردن OpenCV شروع کنید تا بتوانید از توابع و ابزارهای آن در کد خود استفاده کنید.
import cv2
تابعی را تعریف کنید که یک نشانگر واحد با یک شناسه خاص تولید کند. این برای زمانی که نشانگرها به صورت عمده مورد نیاز نباشند پاسخ می دهد.
def generate_single_marker(aruco_dict):
marker_size = int(input("Enter the marker size: "))
marker_id = int(input("Enter the marker ID: "))
marker_img = cv2.aruco.generateImageMarker(aruco_dict, marker_id,
marker_size)
cv2.imwrite("marker_{}.png".format(marker_id), marker_img)
marker_img = cv2.imread("marker_{}.png".format(marker_id))
cv2.imshow("Marker", marker_img)
print("Dimensions:", marker_img.shape)
cv2.waitKey(0)
سپس تابعی را تعریف کنید که تعداد مشخصی نشانگر را به صورت عمده تولید کند. تعداد نشانگرهایی که می توانید ایجاد کنید با توجه به فرهنگ لغت OpenCV که استفاده می کنید متفاوت است. این به این دلیل است که برخی از لغت نامه ها از تولید نشانگرهای بیشتری نسبت به دیگران پشتیبانی می کنند.
def generate_bulk_markers(aruco_dict):
marker_size = int(input("Enter the marker size: "))
num_markers = int(input("Enter the number of markers to generate: "))
marker_imgs = []
for marker_id in range(num_markers):
marker_img = cv2.aruco.generateImageMarker(aruco_dict, marker_id,
marker_size)
cv2.imwrite("marker_{}.png".format(marker_id), marker_img)
marker_imgs.append(cv2.imread("marker_{}.png".format(marker_id)))
for marker_img in marker_imgs:
cv2.imshow("Marker", marker_img)
print("Dimensions:", marker_img.shape)
cv2.waitKey(0)
در نهایت یک تابع اصلی که جریان برنامه را کنترل می کند تعریف کنید و از کاربر عملیات مورد نظر را بخواهید. مطمئن شوید که هنگام اجرای برنامه ابتدا اجرا می شود.
def main():
aruco_dict = cv2.aruco.getPredefinedDictionary(cv2.aruco.DICT_4X4_50)
user_input = input("Press '1' to generate a single marker or "
"'2' to generate markers in bulk: ")
if user_input == "1":
generate_single_marker(aruco_dict)
elif user_input == "2":
generate_bulk_markers(aruco_dict)
else:
print("Invalid input. Please try again.")
if __name__ == "__main__":
main()
اکنون برنامه را اجرا کنید تا یک نشانگر واحد یا به صورت انبوه تولید شود. خروجی برنامه چیزی شبیه به این خواهد بود:
خروجی نشانگر ArUco تولید شده را نشان می دهد. این برنامه هر نشانگر را با یک عدد در انتهای نام خود ذخیره می کند که نشان دهنده شناسه نشانگر است.
بعد از تولید نشانگرهای ArUco چه اتفاقی می افتد؟
پس از تولید نشانگرهای ArUco، می توانید برنامه بینایی کامپیوتری ساده خود را ایجاد کنید. این به شما کمک می کند یاد بگیرید که چگونه از نشانگرها برای همپوشانی اطلاعات دیجیتال بر روی تصاویر دنیای واقعی استفاده کنید. همچنین به شما کمک می کند تا درک کنید که نشانگرها چگونه به کل تجربه کاربر یکپارچه و همهجانبه کمک می کنند.