OpenCV
OpenCV for Computer Vision
المكتبة المفتوحة الأشهر للرؤية الحاسوبية: قراءة الصور والفيديو، والرسم، والكنتورات، وتشغيل الشبكات.
التثبيت
pip install opencv-python(النسخة opencv-python-headless مناسبة للخوادم دون واجهة رسومية.)
الصور والرسم
import cv2
img = cv2.imread("street.jpg")
h, w = img.shape[:2]
cv2.rectangle(img, (50, 40), (200, 180), (0, 255, 0), 2) # (x1, y1), (x2, y2), BGR
cv2.putText(img, "car 0.91", (50, 32), cv2.FONT_HERSHEY_SIMPLEX, 0.7, (0, 255, 0), 2)
cv2.imwrite("out.jpg", img)
roi = img[40:180, 50:200] # الفهرسة [y1:y2, x1:x2]cv2.putText لا يدعم تشكيل العربية؛ لعرض نص عربي على الصور استخدم مكتبة رسم تدعم ذلك.
الكنتورات وتحليل الأشكال
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
_, th = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
contours, _ = cv2.findContours(th, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
for c in contours:
if cv2.contourArea(c) > 500:
x, y, cw, ch = cv2.boundingRect(c)
cv2.rectangle(img, (x, y), (x + cw, y + ch), (255, 0, 0), 2)الفيديو
cap = cv2.VideoCapture(0) # الكاميرا الافتراضية، أو مسار ملف فيديو
while True:
ok, frame = cap.read()
if not ok:
break
edges = cv2.Canny(cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY), 80, 160)
cv2.imshow("edges", edges)
if cv2.waitKey(1) & 0xFF == ord("q"):
break
cap.release(); cv2.destroyAllWindows()شغّل هذا المثال على جهازك؛ لا يعمل داخل المتصفح.
تشغيل الشبكات
وحدة cv2.dnn تحمّل نماذج بصيغ مثل ONNX وتشغلها دون PyTorch، وهذا مفيد للنشر الخفيف:
net = cv2.dnn.readNetFromONNX("model.onnx")
blob = cv2.dnn.blobFromImage(img, scalefactor=1/255, size=(224, 224), swapRB=True)
net.setInput(blob)
out = net.forward()مصطلحات الدرس
- OpenCV Open Source Computer Vision Library
- مكتبة مفتوحة المصدر تضم آلاف الخوارزميات لمعالجة الصور والرؤية الحاسوبية.
- الكنتور Contour
- منحنى يصل النقاط المتصلة على حدود منطقة ذات شدة متجانسة، ويُستخدم لتحليل الأشكال.
الملخص
OpenCV مكتبة مفتوحة المصدر للرؤية الحاسوبية ومعالجة الصور، مكتوبة بـ C++ مع واجهة Python واسعة الاستخدام، تتعامل مع الصور كمصفوفات NumPy. توفر قراءة الصور والفيديو وكتابتها، والمعالجة، والرسم، واستخراج الكنتورات، ومعايرة الكاميرا، ووحدة dnn لتشغيل نماذج مدربة. أهم ما يجب تذكره ترتيب القنوات BGR وإحداثيات (x, y) مقابل فهرسة المصفوفة [صف، عمود].
أسئلة مراجعة
-
ما الفرق بين إحداثيات OpenCV وفهرسة NumPy؟
دوال الرسم في OpenCV تستخدم (x, y) أي (العمود، الصف)، بينما فهرسة المصفوفة img[y, x] تبدأ بالصف.
-
كيف تقرأ إطارات فيديو من كاميرا الجهاز؟
cv2.VideoCapture(0) ثم read() في حلقة.
المصادر والمراجع
إكمال الدرس
أكملت كل دروس المسار! يمكنك الآن طلب شهادة إكمال المسار.
اطلب الشهادة