لإضافة نص عرض إلى الصورة عند رسم حدود الكائن باستخدام وظيفة "draw_vertices" في مكتبة Pillow Python، يمكننا اتباع عملية خطوة بخطوة. تتضمن هذه العملية استرداد قمم الكائنات المكتشفة من Google Vision API، ورسم حدود الكائن باستخدام القمم، وأخيرًا إضافة نص العرض إلى الصورة.
1. استرجاع رؤوس الكائنات المكتشفة:
- استخدم Google Vision API لاكتشاف الكائنات في الصورة.
– استخراج رؤوس كل كائن تم اكتشافه من استجابة API. تمثل القمم الزوايا الأربع للمربع المحيط بالكائن.
2. ارسم حدود الكائن باستخدام القمم:
- قم بتحميل الصورة باستخدام مكتبة Pillow في بايثون.
- قم بإنشاء مثيل لوحدة ImageDraw من مكتبة Pillow.
- قم بالتكرار فوق رؤوس كل كائن وارسم مستطيلاً باستخدام وظيفة "draw.rectangle" من وحدة ImageDraw.
- تأخذ الدالة "draw.rectangle" إحداثيات الزوايا العلوية اليسرى والسفلى اليمنى للمستطيل كوسيطات.
3. إضافة نص العرض إلى الصورة:
– إنشاء مثيل آخر لوحدة ImageDraw.
- قم بالتكرار فوق رؤوس كل كائن وأضف نص العرض باستخدام وظيفة "draw.text" من وحدة ImageDraw.
- تأخذ وظيفة "draw.text" إحداثيات موضع النص والسلسلة النصية كوسيطات.
- يمكنك تخصيص الخط والحجم واللون وخصائص النص الأخرى عن طريق تحديد معلمات إضافية في وظيفة "draw.text".
فيما يلي مثال لمقتطف الشفرة الذي يوضح العملية الموضحة أعلاه:
python from PIL import Image, ImageDraw, ImageFont # Step 1: Retrieve the vertices of the detected objects # (Assuming you have already obtained the vertices from the Google Vision API) vertices = [ [(100, 100), (200, 100), (200, 200), (100, 200)], # Example vertices of object 1 [(300, 150), (400, 150), (400, 250), (300, 250)] # Example vertices of object 2 ] # Step 2: Draw object borders using the vertices image = Image.open("input_image.jpg") draw = ImageDraw.Draw(image) for vertex in vertices: draw.rectangle(vertex, outline="red") # Step 3: Add display text to the image font = ImageFont.truetype("arial.ttf", 12) text_draw = ImageDraw.Draw(image) for i, vertex in enumerate(vertices): text_position = vertex[0][0], vertex[0][1] - 20 text_draw.text(text_position, f"Object {i+1}", font=font, fill="red") # Save the modified image image.save("output_image.jpg")
في هذا المثال، نفترض أنه تم بالفعل الحصول على رؤوس الكائنات من Google Vision API. نقوم بعد ذلك بتحميل الصورة باستخدام مكتبة Pillow، ورسم حدود الكائن باستخدام القمم، وإضافة نص العرض فوق كل كائن.
تذكر أن تقوم بضبط الكود وفقًا لمتطلباتك المحددة، مثل الخط وحجم الخط ولون النص.
أسئلة وأجوبة أخرى حديثة بخصوص رسم حدود الكائن باستخدام مكتبة سادة بيثون:
- ما هي معلمات طريقة "draw.line" في الكود المقدم، وكيف يتم استخدامها لرسم الخطوط بين قيم القمم؟
- كيف يمكن استخدام مكتبة الوسائد لرسم حدود الكائنات في بايثون؟
- ما هو الغرض من وظيفة "draw_vertices" في الكود المقدم؟
- كيف يمكن لـ Google Vision API المساعدة في فهم الأشكال والكائنات في الصورة؟