اذهب إلى المحتوى

السؤال

نشر

أحاول وضع هذا النص ' Yesterday I was clever.. \n so I wanted to change the world ' على الصورة من خلال الدالة putText،  لكن عند عرض الصورة يظهر هكذا ' Yesterday I was clever.. ? so I wanted to change the world ' لكن كنت أتوقع أن تتم طباعة "so I wanted to change the world" في السطر الجديد لكن لم يتم التعرف على ال n\ فما المشكلة؟ هذا هو الكود:

import cv2
# قراءة الصورة
image = cv2.imread("/content/test.jpg")
# الخط
font = cv2.FONT_HERSHEY_SIMPLEX
# الإحداثيات
org = (100, 50)
# fontScale
fontScale = 1
# red color in BGR
color = (0, 0, 255)
# السماكة
thickness = 2
# استخدام cv2.putText() 
image = cv2.putText(image, 'Yesterday I was clever.. \n so I wanted to change the world.', org, font,
                    fontScale, color, thickness, cv2.LINE_AA)
# عرض
cv2.imshow(window_name, image)
cv2.waitKey(0)
cv2.destroyAllWindows()

 

Recommended Posts

  • 1
نشر

الدالة putText لا تتعامل مع رموز مثل n\، لذا أنت مجبر على التعامل مع هذا الأمر بشكل يدوي، لذا إليك حل لمشكلتك:
نقوم بقسم النص إلى عدة أسطر من خلال الدالة split حيث تكون عملية التقسيم على أساس ظهور الرمز n\:

your_text.split('\n') ==> ['Yesterday I was clever.. ', 'so I wanted to change the world.']

ثم نقوم بالمرور على هذه الأسطر وإضافتها واحداً تلو الآخر، لكن قبل ذلك يجب أن نقوم بتحديد الموضع الابتدائي للإحداثي y (ارتفاع المكان الذي سنضع فيه أول سطر):

y0= 50 # 100 فلن نتلاعب به وسيبقى كما حددته في البداية أي  x أما الإحداثي  y الإحداثي 

ثم يجب أن نقوم بتحديد مسافة الانتقال بالبكسل (الانتقال من السطر الأول للثاني):

dy = 40 # 40 بكسل

ثم داخل الحلقة يجب أن نعرَف معادلة لطباعة باقي الأسطر وتحقيق الانتقال:

for i, line in enumerate(your_text.split('\n')):
    y = y0 + i*dy
    cv2.putText(image,line , (100,y), font,
                    fontScale, color, thickness, cv2.LINE_AA)

وبالتالي يكون الكود بعد التعديل:

import cv2
# قراءة الصورة
image = cv2.imread("/content/test.jpg")
# الخط
font = cv2.FONT_HERSHEY_SIMPLEX
# الإحداثيات
org = (100, 50)
# fontScale
fontScale = 1
# red color in BGR
color = (0, 0, 255)
# السماكة
thickness = 2
# استخدام cv2.putText() 
your_text='Yesterday I was clever.. \nso I wanted to change the world.'
y0= 50
dy = 40
for i, line in enumerate(your_text.split('\n')):
    y = y0 + i*dy
    cv2.putText(image,line , (100,y), font,
                    fontScale, color, thickness, cv2.LINE_AA)
cv2.imshow( image)
cv2.waitKey(0)
cv2.destroyAllWindows()

والنتيجة:
index.png.d2446c2913e907b422c729e45fc24e30.png

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...