كيفية قراءة ومعالجة الصور باستخدام مكتبة OpenCV في Python

تمت الكتابة بواسطة: عبد الحكيم

تارخ آخر تحديث: 19 ديسمبر 2024

محتوى المقال

كيفية قراءة ومعالجة الصور باستخدام مكتبة OpenCV في Python

تُعتبر مكتبة 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 كل ما تحتاجه لبناء تطبيقات متقدمة في مجال رؤية الكمبيوتر.

طور مهاراتك: مقالات يجب قراءتها في البرمجة