Ali Ismael نشر 23 أكتوبر 2021 أرسل تقرير نشر 23 أكتوبر 2021 لدي صورة وأريد رسم مستطيل عليها، كيف يمكننا القيام بذلك في Matplotlib ؟ 1 اقتباس
1 Ali Haidar Ahmad نشر 23 أكتوبر 2021 أرسل تقرير نشر 23 أكتوبر 2021 يمكنك استخدام الدالة Rectangle من الوحدة patches لإضافة حقل يمثل مستطيل: matplotlib.pyplot.patches.Rectangle(xy, width, height, angle=0.0, **kwargs) xy: النقطة اليسرى السفلية لبدء رسم المستطيل. width: عرض المستطيل. height: ارتفاع المستطيل. angle: زاوية دوران المستطيل. مثال: import matplotlib.patches as patches import matplotlib.pyplot as plt from PIL import Image import numpy as np # قراءة الصورة im = Image.open('/content/test.jpg') # تحويل الصورة إلى مصفوفة im = np.array(im, dtype=np.uint8) plt.imshow(im) # axes و figure تعريف fig, axs = plt.subplots(1) axs.imshow(x) # إنشاء مستطيل rectangle =patches.Rectangle((317, 60), 200, 100, linewidth=1, edgecolor='r', facecolor='None') # إضافة ال المستطيل axs.add_patch(rectangle) # عرض plt.show() الوسيط edgecolor يتحكم بلون حدود المستطيل والوسيط facecolor يتحكم بلونه. والوسيط linewidth يتحكم بسماكة الحدود. والدالة add_patch نستخدمها لإضافة الشكل (الذي يمثل المستطيل) إلى الصورة الموجودة ضمن ال axes. النتيجة: اقتباس
1 Ahmed Sharshar نشر 25 أكتوبر 2021 أرسل تقرير نشر 25 أكتوبر 2021 بجانب استخدام matplotlib.pyplot.patches.Rectangle لوضع مستطيل في مكان معين، يمكن استخدامها كذلك لرسم مستطيل على مكان يتم تحديده بشكل تلقائي اذا كان هناك نموذج تم التعلم عليه مسبقا كالتالي: #تحميل النموذج train_images = get_image_files(root/"train") fig, ax = plt.subplots() #اختيار صورة path_img = train_images[0] img = cv2.imread(str(path_img)) img = cv2.cvtColor(img, cv2.COLOR_RGB2BGR) def get_target_ds(name, df): rows = df[df["name"] == name[:-4]] return rows["class"].values, rows[bboxes_cols].values bboxes_cols = ["center_x", "center_y", "width", "height"] labels, boxes = get_target_ds(path_img.name, train_df) x = (boxes[0][0] - boxes[0][2]*0.5)*img.shape[1] y = (boxes[0][1] - boxes[0][3]*0.5)*img.shape[0] w = boxes[0][2] * img.shape[1] h = boxes[0][3] * img.shape[0] #عرض الصورة fig, ax = plt.subplots(figsize = (6,9)) ax.xaxis.tick_top() ax.imshow(img) #رسم مستطيل بشكل تلقائي ax.add_patch(patches.Rectangle((x,y),w,h, fill=False, edgecolor='red', lw=2)) النتيجة: لاحظ اننا لم نحدد مكان المستطيل على الرسمة وانما تم اختيارها بناء على تعليم النموذج من قبل. ذلك الاستخدام مهم للغاية في مجالات object detection أو تحديد الأشياء وغيرها. اقتباس
السؤال
Ali Ismael
لدي صورة وأريد رسم مستطيل عليها، كيف يمكننا القيام بذلك في Matplotlib ؟
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.