Ali Ismael نشر 2 نوفمبر 2021 أرسل تقرير نشر 2 نوفمبر 2021 لدي مجموعة من النقاط الحدودية التي تمثل كائن، وأريد رسمه كإطار contour، كيف نقوم بذلك؟ 1 اقتباس
0 Ali Haidar Ahmad نشر 2 نوفمبر 2021 أرسل تقرير نشر 2 نوفمبر 2021 أول خطوة عليك أن تقوم بتمثيل هذه النقاط كقائمة بالشكل التالي: L=[[x1,y1],[x2,y2],[x3,y3],[x4,y4],[x5,y5],[x6,y6],...[xn,yn]] حيث x و y هي الإحداثيات. ثم عليك أن تقوم بتحويلها إلى مصفوفة نمباي كما يلي: np.array(L,dtype=np.int32) وأخيراً نقوم برسمها من خلال الدالة drawContours: cv.DrawContours(src, contour, contourIndex, colour, thickness) الوسيط الأول يمثل الصورة، والثاني هو الإطارات المطلوب رسمها، والثالث هو فهرس الإطارات ونعطيه القيمة -1 لرسم كل الإطارات أو رقم إطار محدد لرسمه فقط، ثم اللون ثم السماكة. مثال: import cv2 import numpy as np from google.colab.patches import cv2_imshow # تحديد إحداثيات نقاط الكائن الحدودية contour=np.array([[100,50],[150,80],[200,200],[288,172],[250,200]],dtype=np.int32) # إنشاء خلفية رمادية (صورة) لرسم الإطار ضمنها drawing = np.zeros([300, 300],np.uint8)+230 # 300*300 image # رسم الإطار cv2.drawContours(drawing,[contour],0,0,2) # عرضه cv2_imshow(drawing) والنتيجة: اقتباس
0 Ahmed Sharshar نشر 9 نوفمبر 2021 أرسل تقرير نشر 9 نوفمبر 2021 يمكنك تحديد النقاط الحدودية سواء الداخلية أو الخاريجية للشكل ثم رسمة بالطريقة التي تعجبك كالتالي: _ret, contours, hierarchy = cv2.findContours(threshold, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) cv2.drawContours(img,contours , -1, (255,0,0), 1) اما اذا كانت لديك النقاط الحدودية مسبقا فيمكنك رسمها مباشرة بعد تحويلها الى صيغة numpy هكذا: cv2.drawContours(image, contours, -1, (0, 255, 0), 3) حيث image هي الصورة التي تريد الرسم عليها، contours هي ال numpy التي تحوي النقاط الحدودية و -1 لتشمل كل الحدود ثم تحديد لون وسمك الخط. وتظهر بعد تشغيلها هكذا: اقتباس
السؤال
Ali Ismael
لدي مجموعة من النقاط الحدودية التي تمثل كائن، وأريد رسمه كإطار contour، كيف نقوم بذلك؟
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.