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

إنشاء ورسم الإطارات contours باستخدام opencv في بايثون

Ali Ismael

السؤال

Recommended Posts

  • 0

أول خطوة عليك أن  تقوم بتمثيل هذه النقاط كقائمة بالشكل التالي:

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)

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

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

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

 _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 لتشمل كل الحدود ثم تحديد لون وسمك الخط.

وتظهر بعد تشغيلها هكذا:

618aab6bb6303_Screenshot2021-11-09190913.png.ee093b952689845b50da9218ce01b6ef.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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...