البرمجة

كيفية استخدام ConnectedComponentsWithStats في OpenCV باستخدام Python

في هذا المقال، سنقوم بفحص كيفية استخدام وظيفة ConnectedComponentsWithStats() في مكتبة OpenCV باستخدام لغة البرمجة Python. يُعتبر هذا الدالة أحد الأدوات القوية المتاحة في OpenCV 3 والإصدارات الأحدث، وهي مفيدة جداً في عمليات ربط العناصر المتصلة في الصور.

قد يكون من المثير للاهتمام أن الوثائق الرسمية لمكتبة OpenCV تقدم API الخاصة بهذه الوظيفة فقط للغة C++، حيث لا توفر توجيهات صريحة لاستخدامها في Python. ومع ذلك، يمكننا استغلال قوة ومرونة لغة Python لاستخدام هذه الدالة بكفاءة.

أولاً وقبل كل شيء، دعونا نستعرض الهدف الرئيسي لاستخدام ConnectedComponentsWithStats(). هذه الدالة تستخدم لربط العناصر المتصلة في الصورة، حيث يُعد كل مجموعة من البكسلات المتصلة واحدة من الكائنات. بالإضافة إلى ذلك، توفر الدالة إحصائيات إضافية حول هذه العناصر، مثل موقع العنصر وحجمه ومساحته.

لبدء استخدام ConnectedComponentsWithStats() في Python، يجب عليك التأكد من تثبيت مكتبة OpenCV بإصدار 3 أو أحدث. يمكن القيام بذلك ببساطة باستخدام الأمر التالي:

python
pip install opencv-python

بعد تثبيت المكتبة بنجاح، يمكنك البدء في كتابة الكود. دعونا نفترض أن لدينا صورة نود فحصها باستخدام ConnectedComponentsWithStats():

python
import cv2 # قراءة الصورة image = cv2.imread('your_image.jpg', cv2.IMREAD_GRAYSCALE) # استخدام ConnectedComponentsWithStats() _, labels, stats, centroids = cv2.connectedComponentsWithStats(image) # الطباعة للاطلاع على النتائج print('عدد العناصر المتصلة:', len(stats) - 1) # نلاحظ الطرح 1 لاحتساب الخلفية print('إحصائيات العناصر:', stats) print('مراكز العناصر:', centroids)

يعتبر السطر الثالث مهمًا حيث يتم استدعاء ConnectedComponentsWithStats() وتمرير الصورة كمعامل لها. الدالة ستقوم بإرجاع متغيرات labels و stats و centroids. يمكنك استخدام هذه المتغيرات للوصول إلى المعلومات المرتبطة بالعناصر المتصلة في الصورة.

باستخدام هذا المثال، يمكنك الآن استكشاف وفهم كيفية استخدام ConnectedComponentsWithStats() في Python بشكل فعال. قد يكون الأمر محيرًا في البداية نظرًا لغياب التوجيهات الرسمية، ولكن مع المرونة التي توفرها Python، يمكنك الاستفادة الكاملة من قوة هذه الوظيفة في تحليل الصور.

المزيد من المعلومات

بالتأكيد، سنقدم المزيد من المعلومات لفهم أفضل لكيفية استخدام وظيفة ConnectedComponentsWithStats() في OpenCV مع Python.

أولاً، يُشير الوسم labels الذي يتم إرجاعه من الدالة إلى مصفوفة تحتوي على نفس حجم الصورة الأصلية، حيث يتم تعيين رقم فريد لكل عنصر متصل. يمكنك استخدام هذه المعلومات لفصل وتحديد كل كائن في الصورة.

بالنسبة لمصفوفة الإحصائيات stats، تتضمن معلومات حول كل كائن متصل في الصورة. العمود الأول يحتوي على مساحة الكائن (بالبكسل)، والعمود الثاني والثالث يحددان موقع الزاوية العلوية اليسرى للكائن (y، x). العمود الرابع والخامس يحددان الابعاد (الارتفاع والعرض) للكائن.

أما مصفوفة centroids، فتحتوي على إحداثيات مركز كل كائن المتصل. يمكنك استخدام هذه المعلومات لتحديد وفهم موقع المراكز الرئيسية للعناصر المتصلة في الصورة.

لتوضيح أكثر، يمكنك استخدام الكود التالي للتلاعب ببعض هذه المعلومات:

python
# تحديد مساحة العناصر المتصلة التي تزيد عن حد معين threshold_area = 100 filtered_stats = [stat for stat in stats if stat[4] > threshold_area] # رسم المستطيل حول العناصر المتصلة image_with_rectangles = image.copy() for stat in filtered_stats: x, y, w, h = stat[0], stat[1], stat[2], stat[3] cv2.rectangle(image_with_rectangles, (x, y), (x+w, y+h), (0, 255, 0), 2) # عرض الصورة الأصلية والتي تحتوي على المستطيلات المرسومة cv2.imshow('Original Image', image) cv2.imshow('Image with Rectangles', image_with_rectangles) cv2.waitKey(0) cv2.destroyAllWindows()

يستخدم هذا الكود قيمة عتبة threshold_area لتحديد الحد الأدنى لمساحة الكائن المتصل الذي يهمنا. ثم يقوم برسم مستطيل حول كل كائن يتجاوز هذا الحد، مما يمكنك من تحديد وتحليل العناصر المتصلة في الصورة بشكل دقيق.

هذا مجرد نظرة عامة على كيفية استخدام ConnectedComponentsWithStats() في OpenCV باستخدام Python. يمكنك تكييف هذه الأفكار وتوسيعها حسب احتياجات مشروعك المحدد.

زر الذهاب إلى الأعلى