OpenCV لـ C++: دليل شامل مع أمثلة

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

ما هو OpenCV ولماذا نحتاجه؟

\n\n

OpenCV (مكتبة رؤية الكمبيوتر مفتوحة المصدر) هي مكتبة متعددة المنصات ومفتوحة المصدر، مصممة لمهام رؤية الكمبيوتر والتعلم الآلي. توفر أكثر من 2500 خوارزمية محسّنة تغطي جميع مجالات رؤية الكمبيوتر تقريبًا: من معالجة الصور البسيطة (الترشيح، التحويلات الهندسية) إلى المهام المعقدة (التعرف على الوجوه، تتبع الأجسام، إعادة البناء ثلاثي الأبعاد، تحليل الفيديو).

\n\n

المكتبة مكتوبة بلغتي C++ و C، مما يضمن أداءً عاليًا، ولها روابط بلغات Python و Java و MATLAB وغيرها. في هذا الدليل، سنركز على استخدام OpenCV من C++ تحديدًا - وهذا هو الخيار الأمثل لأنظمة الإنتاج حيث تكون سرعة الأداء وإدارة الذاكرة الفعالة أمرًا بالغ الأهمية.

\n\n

لماذا نحتاج OpenCV؟

\n
    \n
  • معالجة الصور: تغيير الحجم، التدوير، الترشيح، تحسين التباين، تصحيح الألوان.
  • \n
  • تحليل الفيديو: قراءة/كتابة الفيديو، اكتشاف الحركة، تتبع الأجسام.
  • \n
  • التعرف على الأجسام: الوجوه، السيارات، النص (OCR)، الإيماءات.
  • \n
  • معايرة الكاميرا: إزالة التشوهات، الرؤية المجسمة.
  • \n
  • التعلم الآلي: مصنفات مدمجة (SVM, KNN, Decision Trees) والتكامل مع DNN (الشبكات العصبية العميقة) للعمل مع نماذج TensorFlow و Caffe و PyTorch.
  • \n
\n\n

تثبيت OpenCV لـ C++

\n\n

على عكس Python، حيث يكفي أمر واحد pip install opencv-python، فإن تثبيت OpenCV لـ C++ يتطلب التجميع أو استخدام حزم ثنائية جاهزة. دعنا نستعرض الطرق الرئيسية.

\n\n

1. التثبيت عبر مدير الحزم (Linux/macOS)

\n

Ubuntu/Debian:

\n
sudo apt update\nsudo apt install libopencv-dev
\n

macOS (Homebrew):

\n
brew install opencv
\n\n

2. التثبيت عبر vcpkg (Windows, Linux, macOS)

\n

vcpkg هو مدير حزم متعدد المنصات من Microsoft. قم أولاً بتثبيت vcpkg:

\n
git clone https://github.com/Microsoft/vcpkg.git\ncd vcpkg\n./bootstrap-vcpkg.sh  # Linux/macOS\n.\\bootstrap-vcpkg.bat # Windows
\n

ثم قم بتثبيت OpenCV:

\n
./vcpkg install opencv4
\n

بعد التثبيت، قم بربط المكتبة في CMake:

\n
cmake_minimum_required(VERSION 3.10)\nproject(MyOpenCVProject)\nfind_package(OpenCV REQUIRED)\nadd_executable(main main.cpp)\ntarget_link_libraries(main ${OpenCV_LIBS})
\n\n

3. التجميع من المصدر (مستوى متقدم)

\n

هذه الطريقة تمنحك أقصى تحكم في الوحدات المضمنة والتحسينات:

\n
git clone https://github.com/opencv/opencv.git\ncd opencv\nmkdir build && cd build\ncmake -D CMAKE_BUILD_TYPE=RELEASE \\\n      -D CMAKE_INSTALL_PREFIX=/usr/local \\\n      -D WITH_TBB=ON \\\n      -D WITH_V4L=ON \\\n      -D WITH_QT=ON \\\n      -D WITH_OPENGL=ON ..\nmake -j$(nproc)\nsudo make install
\n\n

بداية سريعة: تحميل وعرض صورة

\n

دعنا نتحقق من تثبيت OpenCV بشكل صحيح عن طريق كتابة برنامج بسيط يقوم بتحميل صورة، وتحويلها إلى تدرج الرمادي، وعرضها.

\n\n
#include <opencv2/opencv.hpp>\n#include <iostream>\n\nint main() {\n    // تحميل الصورة\n    cv::Mat img = cv::imread("example.jpg");\n    if (img.empty()) {\n        std::cerr << "فشل تحميل الصورة!" << std::endl;\n        return -1;\n    }\n\n    // التحويل إلى تدرج الرمادي\n    cv::Mat gray;\n    cv::cvtColor(img, gray, cv::COLOR_BGR2GRAY);\n\n    // عرض كلتا الصورتين\n    cv::imshow("Original", img);\n    cv::imshow("Gray", gray);\n\n    // انتظار الضغط على مفتاح\n    cv::waitKey(0);\n    cv::destroyAllWindows();\n\n    return 0;\n}
                
    
    

توصيات