كيفية قراءة ومعالجة الصور باستخدام مكتبة OpenCV في Python
تمت الكتابة بواسطة: عبد الحكيم
تارخ آخر تحديث: 19 ديسمبر 2024محتوى المقال
- تثبيت مكتبة OpenCV
- قراءة الصور باستخدام OpenCV
- معالجة الصور باستخدام OpenCV
- تطبيق الفلترات على الصور
- الخلاصة
تُعتبر مكتبة OpenCV واحدة من أقوى المكتبات في مجال معالجة الصور وتحليلها باستخدام لغة البرمجة Python. توفر هذه المكتبة أدوات متقدمة لقراءة، معالجة، وتحليل الصور والفيديوهات بطرق متنوعة. في هذا المقال، سنتعرف على كيفية استخدام OpenCV لقراءة الصور ومعالجتها مع أمثلة عملية توضح ذلك.
تثبيت مكتبة OpenCV
أول خطوة للبدء في معالجة الصور باستخدام OpenCV هي تثبيت المكتبة. يمكن تثبيت المكتبة بسهولة باستخدام مدير الحزم pip
.
$ pip install opencv-python
بعد تنفيذ هذا الأمر، ستتمكن من استيراد المكتبة واستخدامها في مشاريع Python الخاصة بك.
قراءة الصور باستخدام OpenCV
بمجرد تثبيت المكتبة، يمكنك قراءة الصور باستخدام الدالة cv2.imread()
. تدعم OpenCV العديد من تنسيقات الصور مثل PNG، JPEG، وTIFF.
import cv2
image = cv2.imread('path_to_image.jpg')
cv2.imshow('Loaded Image', image)
cv2.waitKey(0)
cv2.destroyAllWindows()
في هذا المثال، نقوم بتحميل صورة من المسار المحدد وعرضها باستخدام cv2.imshow()
. ستظل النافذة مفتوحة حتى تضغط على أي مفتاح لإغلاقها.
معالجة الصور باستخدام OpenCV
توفر OpenCV مجموعة واسعة من الأدوات لمعالجة الصور. سنستعرض بعض العمليات الأساسية مثل تغيير الحجم، التدوير، والتحويل إلى التدرج الرمادي.
تغيير حجم الصورة
يمكنك تغيير حجم الصورة باستخدام الدالة cv2.resize()
. يتم تحديد الأبعاد الجديدة للصورة على شكل زوج من القيم (عرض، ارتفاع).
resized_image = cv2.resize(image, (width, height))
cv2.imshow('Resized Image', resized_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
في هذا المثال، نقوم بتغيير حجم الصورة إلى الأبعاد المحددة وعرضها على الشاشة.
تدوير الصورة
لتدوير الصورة، يمكنك استخدام الدالة cv2.getRotationMatrix2D()
لإنشاء مصفوفة التحويل، ثم تطبيقها باستخدام cv2.warpAffine()
.
center = (image.shape[1] / 2, image.shape[0] / 2)
matrix = cv2.getRotationMatrix2D(center, angle, scale)
rotated_image = cv2.warpAffine(image, matrix, (image.shape[1], image.shape[0]))
cv2.imshow('Rotated Image', rotated_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
في هذا المثال، نقوم بتدوير الصورة بزاوية محددة حول مركزها. يمكن أيضًا ضبط معامل scale
لتغيير حجم الصورة بعد التدوير.
تحويل الصورة إلى التدرج الرمادي
لتحويل صورة ملونة إلى صورة بتدرج رمادي، يمكنك استخدام الدالة cv2.cvtColor()
مع المعامل cv2.COLOR_BGR2GRAY
.
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
cv2.imshow('Gray Image', gray_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
في هذا المثال، نقوم بتحويل الصورة إلى التدرج الرمادي باستخدام دالة cv2.cvtColor()
.
تطبيق الفلترات على الصور
تتيح مكتبة OpenCV تطبيق مجموعة متنوعة من الفلترات على الصور، مثل التمويه، واكتشاف الحواف. سنتناول بعض الأمثلة على ذلك.
تطبيق فلتر Gaussian Blur
يمكنك تطبيق فلتر Gaussian Blur لتنعيم الصورة باستخدام الدالة cv2.GaussianBlur()
. هذا الفلتر يستخدم للتقليل من التشويش والضوضاء في الصور.
blurred_image = cv2.GaussianBlur(image, (kernel_size, kernel_size), sigma)
cv2.imshow('Blurred Image', blurred_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
في هذا المثال، نطبق فلتر Gaussian Blur باستخدام حجم نواة محدد.
اكتشاف الحواف باستخدام Canny Edge Detection
لاكتشاف الحواف في الصورة، يمكنك استخدام خوارزمية Canny Edge Detection المتاحة في OpenCV عبر الدالة cv2.Canny()
.
edges = cv2.Canny(gray_image, threshold1, threshold2)
cv2.imshow('Edges', edges)
cv2.waitKey(0)
cv2.destroyAllWindows()
في هذا المثال، نستخدم دالة cv2.Canny()
لاكتشاف الحواف في الصورة المحولة إلى تدرج رمادي.
الخلاصة
يعتبر استخدام مكتبة OpenCV لمعالجة الصور في Python أمرًا مميزًا وقويًا نظرًا لإمكاناتها الواسعة وسهولة استخدامها. من خلال فهم الأدوات والدوال التي توفرها المكتبة، يمكنك تنفيذ العديد من المهام المتعلقة بالصور مثل القراءة، المعالجة، والتحليل. سواء كنت ترغب في تطبيق فلتر بسيط أو تنفيذ خوارزميات معقدة، توفر OpenCV كل ما تحتاجه لبناء تطبيقات متقدمة في مجال رؤية الكمبيوتر.
طور مهاراتك: مقالات يجب قراءتها في البرمجة
- كيفية إجراء الاختبارات الوحدوية في Python باستخدام unittest
- بناء تطبيق ويب بسيط باستخدام Django في Python
- كيفية استخدام مكتبة Seaborn لإنشاء مخططات متقدمة في Python
- كيفية إرسال رسائل بريد إلكتروني باستخدام Python
- كيفية التعامل مع النصوص الكبيرة باستخدام مكتبة StringIO في Python
- كيفية استخدام مكتبة Socket لبرمجة الشبكات في Python
- كيفية تحليل البيانات البيانية باستخدام مكتبة Plotly في Python
- إنشاء تطبيق ويب ديناميكي باستخدام FastAPI في Python
- كيفية إدارة وحفظ الملفات باستخدام مكتبة os في Python
- كيفية كتابة سكربت لتشغيل أوامر النظام في Python