مكتبة برمجية مفتوحة للرؤية الحاسوبية هي مكتبة مجانية لرؤية الآلة عبر الأنظمة الأساسية (الإصدارات الحالية لـ GNU / Linux و Mac OS X و Windows و Android) والتي كانت في الأصل تم تطويره بواسطة Intel واستخدامه في عدد لا يحصى من التطبيقات، من أنظمة الأمان مع كشف الحركة ، إلى تطبيقات التحكم في العمليات التي تتطلب التعرف على الأشياء. وذلك لأن نشره مُعطى بموجب ترخيص BSD ، والذي يسمح باستخدامه بحرية للأغراض التجارية والبحثية وفقًا للشروط الواردة فيه.
افتح السيرة الذاتية يحتوي على أكثر من 500 وظيفة تغطي مجموعة واسعة من المجالات في عملية الرؤية ، مثل التعرف على الأشياء (التعرف على الوجه) ، ومعايرة الكاميرا ، والرؤية المجسمة ، والرؤية الآلية ، وتصنيف الإجراءات في الفيديو ، وتحويل الصور ، واستخراج النماذج ثلاثية الأبعاد ، وإنشاء مساحة ثلاثية الأبعاد من صورة كاميرا استريو لإنشاء صور عالية الجودة من خلال الجمع بين الصور منخفضة الجودة.
أيضا يوفر القدرة على البحث عن صور لكائنات مماثلة إلى مجموعة العناصر المقدمة من خلال تطبيق أساليب التعلم الآلي ، وتنظيم العلامات ، وتحديد العناصر المشتركة في الصور المختلفة ، والقضاء تلقائيًا على العيوب مثل العيون الحمراء.
يوفر OpenCV أكثر من 2500 خوارزمية ، كلاهما كلاسيكي ويعكس أحدث الإنجازات في مجال رؤية الكمبيوتر وأنظمة التعلم الآلي. تمت كتابة كود المكتبة بلغة C ++ وتوزيعها بموجب ترخيص BSD.
حول الإصدار الجديد OpenCV 4.2
الآن المكتبة في إصدار OpenCV 4.2 الخاص بها، بحيث في وحدة DNN (الشبكة العصبية العميقة) مع تنفيذ خوارزميات التعلم الآلي على أساس الشبكات العصبية ، أضاف خلفية لاستخدام CUDA وتم تنفيذ الدعم التجريبي لـ nGraph OpenVINO API.
بالإضافة إلى استخدام إرشادات SIMD ، نقوم بتحسين أداء الكود لإخراج الاستريو (StereoBM / StereoSGBM) وتغيير الحجم وإخفاء وتدوير وحساب مكونات اللون المفقودة والعديد من العمليات الأخرى.
في وحدة G-API (opencv_gapi) ، الذي يعمل كمحرك للمعالجة كفاءة الصورة باستخدام الخوارزميات القائمة على الرسومات ، تدعم الخوارزميات الهجينة الأكثر تعقيدًا لرؤية الكمبيوتر والتعلم الآلي العميق. يوفر الدعم لمحرك الاستدلال Intel. تمت إضافة دعم لمعالجة دفق الفيديو إلى نموذج التنفيذ.
تم أيضًا إصلاح الثغرات الأمنية (CVE-2019-5063، CVE-2019-5064) التي قد تؤدي إلى تنفيذ كود الهجوم من خلال معالجة البيانات غير المؤكدة بتنسيقات XML و YAML و JSON. إذا تم العثور على حرف برمز فارغ أثناء تحليل JSON ، يتم نسخ القيمة بالكامل إلى المخزن المؤقت ، ولكن بدون التحقق الصحيح من حدود منطقة الذاكرة المخصصة.
من التغييرات الأخرى المقدمة في هذا الإصدار الجديد:
- تمت إضافة تنفيذ متعدد مؤشرات الترابط لوظيفة pyrDown.
- تمت إضافة القدرة على استخراج تدفقات الفيديو من حاويات الوسائط (demuxing) باستخدام الواجهة الخلفية للفيديو المستندة إلى FFmpeg.
- تمت إضافة خوارزمية لإعادة بناء انتقائي سريع التردد لصور FSR (إعادة البناء الانتقائي للتردد).
- تمت إضافة طريقة RIC لاستيفاء المساحات الفارغة النموذجية.
- تمت إضافة طريقة تسوية انحراف LOGOS.
كيفية تثبيت OpenCV 4.2؟
للراغبين في تثبيت هذه المكتبة ، يمكن الحصول على الإصدار الجديد بالإضافة إلى الرجوع إلى المعلومات المتعلقة بالاستخدام وحتى العثور على البرامج التعليمية من موقعه الرسمي على الويب.
في هذه المقالة سوف نقدم الخطوات لتكون قادرًا على تنفيذ المكتبة على Raspberry pi.
لتثبيت OpenCV على جهاز Raspberry P.يجب أن يكون لدي نظامك ، وهو Raspbian.
من vسنفتح محطة وفيها سنكتب الأوامر التالية لتثبيت التبعيات وأدوات المطورين وحزم الصور من بين مكتبات إضافية أخرى:
sudo apt-get install build-essential cmake pkg-config
sudo apt-get install libjpeg-dev libtiff5-dev libjasper-dev libpng-dev libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libxvidcore-dev libx264-dev libfontconfig1-dev libcairo2-dev libgdk-pixbuf2.0-dev libpango1.0-dev libgtk2.0-dev libgtk-3-dev libatlas-base-dev gfortran libhdf5-dev libhdf5-serial-dev libhdf5-103 libqtgui4 libqtwebkit4 libqt4-test python3-pyqt5
وأخيرا، لنقم بتثبيت ملفات رأس Python 3 حتى نتمكن من تجميع OpenCV:
sudo apt-get install python3-dev
الآن لنقم بإنشاء بيئة بايثون بالأوامر التالية ، وذلك من أجل الحصول على موقع معزول:
wget https://bootstrap.pypa.io/get-pip.py
sudo python get-pip.py
sudo python3 get-pip.py
sudo rm -rf ~/.cache/pip
سنقوم بتثبيت virtualenv و virtualenvwrapper:
sudo pip install virtualenv virtualenvwrapper
nano ~/.bashrc
# virtualenv and virtualenvwrapper
export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
source /usr/local/bin/virtualenvwrapper.sh
source ~/.bashrc
mkvirtualenv cv -p python3
pip install "picamera[array]"
فعلت هذا الآن سنقوم بتجميع OpenCV باستخدام:
cd ~
wget -O opencv.zip https://github.com/opencv/opencv/archive/4.2.0.zip
wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/4.2.0.zip
unzip opencv.zip
unzip opencv_contrib.zip
mv opencv-4.2.0 opencv
mv opencv_contrib-4.2.0 opencv_contrib
سنقوم الآن بزيادة المبادلة في نظامنا لأنه إذا تركناه كما هو افتراضيًا ، فيمكن للنظام تعليقه:
sudo nano /etc/dphys-swapfile
وسنقوم بتحرير المتغير CONF_SWAPSIZE:
CONF_SWAPSIZE=1024
نحفظ ونغلق باستخدام ctrl + o و ctrl + x. ثم نكتب:
sudo /etc/init.d/dphys-swapfile stop
sudo /etc/init.d/dphys-swapfile start
الآن سننتقل إلى تجميع:
workon cv
pip install numpy
cd ~/opencv
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \
-D ENABLE_NEON=ON \
-D ENABLE_VFPV3=ON \
-D BUILD_TESTS=OFF \
-D INSTALL_PYTHON_EXAMPLES=OFF \
-D OPENCV_ENABLE_NONFREE=ON \
-D CMAKE_SHARED_LINKER_FLAGS=-latomic \
-D BUILD_EXAMPLES=OFF ..
make -j4
sudo make install
sudo ldconfig
cd /usr/local/lib/python3.7/site-packages/cv2/python-3.7
sudo mv cv2.cpython-37m-arm-linux-gnueabihf.so cv2.so
cd ~/.virtualenvs/cv/lib/python3.7/site-packages/
ln -s /usr/local/lib/python3.7/site-packages/cv2/python-3.7/cv2.so cv2.so
و مستعد.