مرحبا بالجميع.
عندما أردت تثبيت OpenCV على التوت الخاص بي لمشروع واحد ، شعرت بخيبة أمل شديدة إزاء النتيجة. اتضح أنه بالنسبة للإصدارات الجديدة من صور Raspbian مع دعم Python3.7 ، يستحيل تثبيت المكتبة من المستودع باستخدام أمر تثبيت مألوف.
أسبابلقد أعطاني تثبيت opencv-python نتيجة غير متوقعة: "تعذر العثور على إصدار يفي بالمتطلبات ...". في الآونة الأخيرة فقط ، وبهذه الطريقة قمت بتثبيت هذه المكتبة على جهاز الكمبيوتر الرئيسي الخاص بي ، وكانت النتيجة إيجابية.
عندما راجعت نفسي للتحقق من الانحناء وتأكدت من أنني ما زلت قادرًا على كتابة أمر من 25 حرفًا بشكل صحيح بدون أخطاء مطبعية ، فقد حان الوقت لمعرفة ما الذي يمكن أن يؤثر على النتيجة.
أوضحت صفحة opencv-python الرسمية على pypi.org الكثير:
... لاحظ أن تنسيق العجلة (خاصة manylinux) لا يدعم حاليًا بنية ARM بشكل صحيح ، لذا لا توجد حزم للأنظمة الأساسية القائمة على ARM في PyPI. ومع ذلك ، يمكن العثور على حزم opencv-python لـ Raspberry Pi من www.piwheels.org .
... يرجى ملاحظة أن تنسيق العجلة (وخاصة manylinux) لا يدعم حاليًا بنية ARM بشكل صحيح ، لذلك لا يحتوي PyPI على حزم للأنظمة التي تستند إلى ARM. ومع ذلك ، يمكن العثور على حزم opencv-python لـ Raspberry Pi على www.piwheels.org .
حسنا ...
لقد تحققت من أن التوت كان يسحب الحزم من المصدر الصحيح ، لكن الكتلة الأخيرة من الموقع تضع كل شيء في مكانه:
توفر العجلات الدعم لجميع طرز Raspberry Pi (Pi 3 و Pi 2 و Pi 1 و Pi Zero). يتم توفير عجلات لـ Raspbian Jessie (Python 3.4) و Raspbian Stretch (Python 3.5). نخطط لإضافة دعم إلى Raspbian Buster (Python 3.7) في الوقت المناسب.
تدعم العجلات المقدمة جميع طرز Raspberry Pi (Pi 3 و Pi 2 و Pi 1 و Pi Zero. تدعم العجلة Raspbian Jessie (Python 3.4) و Raspbian Stretch (Python 3.5) ، ونخطط لإضافة دعم إلى Raspbian Buster (Python 3.7) في الوقت المناسب.
كنت بالفعل على استعداد لقضاء ليلة بلا نوم مع مجموعة OpenCV على التوت ، لكنني تذكرت حول
مقالة حول تجميع المكتبة (لم يكن شيء من أجل أن اقترح المعلمون في المعهد أن نقوم بعمل مختبر بدلاً من الأدلة). بعد أن قمت بتغيير المعلمات من المقالة قليلاً (كان من الضروري إضافة استيراد لـ python3 والتحقق مما إذا كانت جميع المكتبات مخصصة لـ OpenCV 4.1.0) ، فقد تمكنت من تحقيق النتيجة المرجوة.
ومع ذلك ، استغرق الكسل ، وبدأت في البحث عن حلول جاهزة لهذه المشكلة. لذلك صادفت هذا المقال. تبعتها ، جمعت كل شيء في المرة الأولى دون الرقص مع الدف والطقوس الشامانية الأخرى. أعتقد أن هذه المقالة ستكون مفيدة للآخرين.
أقدم ترجمة مجانية للمقال "
Cross compiling OpenCV 4 for Raspberry Pi and BeagleBone Black " للمخرج Paul Silisteanu. ربما سيوفر شخص ما دقائق أو ساعات يمكن أن يقضيها في درس أكثر إثارة للاهتمام من لعب قصة المباحث.
من نفسي ، أضفت بعض الملاحظات على الترجمة ، والتي اعتبرتها مهمة: [
تم إبرازها في النص ].
استمتع بالقراءة!
تجميع OpenCV 4 لـ Raspberry Pi و BeagleBone Black
في هذه المقالة ، سأريك كيفية تثبيت أحدث إصدار من
OpenCV لـ Raspberry Pi و BeagleBone Black باستخدام التحويل البرمجي المتقاطع. في وقت كتابة هذا التقرير [
التحديث في وقت الترجمة هو 17 يوليو 2019 ] ، كان أحدث إصدار من OpenCV هو 4.1.0 ، وكان الإصدار الذي تم شحنه مع أنظمة التشغيل القياسية 3.2.0. بالطبع ، من الممكن تجميع OpenCV من المصدر مباشرة إلى Raspberry أو BeagleBone Black ، لكن هذا قد يستغرق عدة ساعات. و OpenCV المترجمة لل armhf هي عملية تستمر 20-30 دقيقة. واعتمادًا على سرعة جهاز الكمبيوتر الخاص بك ، فقد يكون الأمر أسرع.
أوصي بالبناء في جهاز ظاهري
Debian Buster أو في حاوية
Docker ، حتى لا تشوش نظام التشغيل الرئيسي. إذا قررت تثبيت Buster على جهاز افتراضي ، فتأكد من استخدام
الحد الأدنى من البنية [
أوصي بالقيام بذلك - لقد قمت بفحصه على بشرتي ]. من المهم جدًا البدء بنظام بسيط ، لأننا نحتاج إلى تثبيت الملفات التنفيذية والمكتبات الخاصة بـ armhf. باستخدام الحد الأدنى من النظام ، نتجنب التعارضات المحتملة مع إصدارات x86-64 الأصلية.
توضح هذه المقالة العمل فقط على Raspberry PI مع نظام Raspbian ، ولكن إذا كنت تستخدم BeagleBone Black ، فيجب أن يعمل كل شيء بالطريقة نفسها.
أفترض أن لديك بالفعل تثبيت
Raspbian نظيفة. لقد استخدمت صورة أحدث إصدار متوفر لسطح المكتب. في الواقع ، يمكنك متابعة المقالة على Raspbian Lite ، لكنني أجريت جميع اختباراتي باستخدام إصدار واجهة المستخدم الرسومية.
أولاً ، دعنا نتأكد من تحديث الجهاز أو الحاوية الافتراضية الخاصة بنا:
sudo apt update sudo apt upgrade
بعد ذلك ، تحتاج إلى توصيل بنية armhf.
sudo dpkg --add-architecture armhf sudo apt update sudo apt install qemu-user-static
في هذه المرحلة ، يمكنك تثبيت المكتبات والتطبيقات لـ armhf على نظامك وتشغيلها.
سنبني OpenCV بدعم من Python و C ++. لنقم بتثبيت
Python2 و Python3 ، بالإضافة إلى حلف
NumPy الخاص بهم:
sudo apt-get install python3-dev sudo apt-get install python3-numpy sudo apt-get install python-dev sudo apt-get install python-numpy
سنحتاج أيضًا إلى libpython لهندسة armhf:
sudo apt-get install libpython2-dev:armhf sudo apt-get install libpython3-dev:armhf
بعد ذلك ، سنقوم بتثبيت libgtk-3 لتتمكن من كتابة برامج بسيطة بواجهة رسومية. إذا كنت تخطط لاستخدام OpenCV بشكل حصري في وضع عدم الاتصال ، فيمكنك تجاهل المكتبتين التاليتين بأمان:
$ sudo apt install libgtk-3-dev:armhf libcanberra-gtk3-dev:armhf
نحتاج أيضًا إلى تثبيت عدة مكتبات أخرى ضرورية لـ OpenCV (دعم تنسيقات الصور والفيديو المختلفة):
sudo apt install libtiff-dev:armhf zlib1g-dev:armhf sudo apt install libjpeg-dev:armhf libpng-dev:armhf sudo apt install libavcodec-dev:armhf libavformat-dev:armhf libswscale-dev:armhf libv4l-dev:armhf sudo apt-get install libxvidcore-dev:armhf libx264-dev:armhf
بعد ذلك ، سنقوم بتثبيت برامج ترجمة متقاطعة لـ Debian ، والتي يمكن استخدامها لإنشاء ثنائيات armhf لـ Raspberry Pi:
sudo apt install crossbuild-essential-armhf sudo apt install gfortran-arm-linux-gnueabihf
في وقت كتابة هذا التقرير ، تستند مجموعة الأدوات المذكورة أعلاه إلى الإصدار الخليجي 8.3 ، وهو نفسه الموجود في Raspbian.
أخيرًا ، سنقوم بتثبيت
Cmake و
git و
pkg-config و wget:
sudo apt install cmake git pkg-config wget
بعد ذلك ، يمكننا تنزيل الإصدار الحالي من OpenCV. سأوضح لك كيفية تثبيت الإصدار الكامل من OpenCV (المكتبات الافتراضية والمساهمة):
cd ~ mkdir opencv_all && cd opencv_all wget -O opencv.tar.gz https://github.com/opencv/opencv/archive/4.1.0.tar.gz tar xf opencv.tar.gz wget -O opencv_contrib.tar.gz https://github.com/opencv/opencv_contrib/archive/4.1.0.tar.gz tar xf opencv_contrib.tar.gz rm *.tar.gz
نحتاج إلى تغيير متغيري النظام بشكل مؤقت اللازمين لإنشاء دعم GTK + بنجاح:
export PKG_CONFIG_PATH=/usr/lib/arm-linux-gnueabihf/pkgconfig:/usr/share/pkgconfig export PKG_CONFIG_LIBDIR=/usr/lib/arm-linux-gnueabihf/pkgconfig:/usr/share/pkgconfig
في الوقت الحالي ، يمكننا استخدام Cmake لإنشاء نصوص بناء OpenCV:
cd opencv-4.1.0 mkdir build && cd build cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/opt/opencv-4.1.0 \ -D CMAKE_TOOLCHAIN_FILE=../platforms/linux/arm-gnueabi.toolchain.cmake \ -D OPENCV_EXTRA_MODULES_PATH=~/opencv_all/opencv_contrib-4.1.0/modules \ -D OPENCV_ENABLE_NONFREE=ON \ -D ENABLE_NEON=ON \ -D ENABLE_VFPV3=ON \ -D BUILD_TESTS=OFF \ -D BUILD_DOCS=OFF \ -D PYTHON2_INCLUDE_PATH=/usr/include/python2.7 \ -D PYTHON2_LIBRARIES=/usr/lib/arm-linux-gnueabihf/libpython2.7.so \ -D PYTHON2_NUMPY_INCLUDE_DIRS=/usr/lib/python2/dist-packages/numpy/core/include \ -D PYTHON3_INCLUDE_PATH=/usr/include/python3.7m \ -D PYTHON3_LIBRARIES=/usr/lib/arm-linux-gnueabihf/libpython3.7m.so \ -D PYTHON3_NUMPY_INCLUDE_DIRS=/usr/lib/python3/dist-packages/numpy/core/include \ -D BUILD_OPENCV_PYTHON2=ON \ -D BUILD_OPENCV_PYTHON3=ON \ -D BUILD_EXAMPLES=OFF ..
وصف المعلماتCMAKE_INSTALL_PREFIX - الدليل حيث سيتم تحديد موقع البيانات التي تم جمعها
CMAKE_TOOLCHAIN_FILE - معلمة تُظهر Cmake ماذا سيكون التجميع المتقاطع
OPENCV_EXTRA_MODULES_PATH - المسار إلى وحدات OpenCV إضافية
OPENCV_ENABLE_NONFREE = ON - تضمين الخوارزميات الحاصلة على براءة اختراع في التجميع
يرجى ملاحظة أن قيود براءات الاختراع تنطبق على استخدام خوارزميات SIFT و SURF. وإذا كنت تخطط للتجميع للاستخدام التجاري ، فكر في ما إذا كنت في حاجة إليها وتحقق من القيود.
ENABLE_NEON = ON - تمكين تعليمات NEON لتحسين نظام ARM
ENABLE_VFPV3 = ON - تمكين تعليمات VFPv3-D32 لتحسين نظام ARM
BUILD_TESTS = OFF - تعطيل قواعد بناء الاختبارات (سيكون أسرع)
BUILD_DOCS = OFF - تعطيل قواعد إنشاء الوثائق
PYTHON2_INCLUDE_PATH - المسار إلى python2.7
PYTHON2_LIBRARIES - المسار إلى مكتبة libpython2 التي تم تنزيلها مسبقًا
PYTHON2_NUMPY_INCLUDE_DIRS - المسار إلى NumPy لـ python2.7
PYTHON3_INCLUDE_PATH - المسار إلى python3
PYTHON3_LIBRARIES - المسار إلى مكتبة libpython3 التي تم تنزيلها مسبقًا
PYTHON3_NUMPY_INCLUDE_DIRS - المسار إلى NumPy لـ python3
BUILD_OPENCV_PYTHON2 = ON - تضمين قواعد ل python2 في التجميع
BUILD_OPENCV_PYTHON3 = ON - تضمين قواعد ل python4 في التجميع
BUILD_EXAMPLES = OFF - تعطيل القواعد لتجميع جميع الأمثلة
إذا لم يكن لديك أخطاء ، فنتيجة لذلك ستتلقى Makefile في مجلد التجميع. الآن يمكننا أن نبدأ البناء الفعلي:
make -j16
[
تشير المقالة إلى 16 عملية متوازية أثناء التجميع ، ولكن يجب تحديد هذه المعلمة لنظام التشغيل المضيف الخاص بك ]
بعد اكتمال مرحلة الإنشاء ، يمكننا تثبيت المكتبة:
sudo make install/strip
نحتاج بعد ذلك إلى تغيير اسم المكتبة ، والتي أطلق عليها برنامج التثبيت عن طريق الخطأ اسم المكتبة x86_64 ، على الرغم من أنها في الحقيقة armhf:
cd /opt/opencv-4.1.0/lib/python3.7/dist-packages/cv2/python-3.7/ sudo cp cv2.cpython-37m-x86_64-linux-gnu.so cv2.so
دعونا ضغط مجلد التثبيت وحفظ الأرشيف في الدليل الرئيسي:
cd /opt tar -cjvf ~/opencv-4.1.0-armhf.tar.bz2 opencv-4.1.0 cd ~
لتسهيل حياتنا ، قمت أيضًا بإعداد ملف إعدادات pkg-config بسيط يسمى opencv.pc. يمكنك تنزيله بهذه الطريقة:
git clone https://gist.github.com/sol-prog/ed383474872958081985de733eaf352d opencv_cpp_compile_settings cd opencv_cpp_compile_settings cp opencv.pc ~ cd ~
[في
الواقع ، ليس من الضروري القيام بذلك على الجهاز المضيف. يمكنك تنزيل الملف مباشرة إلى توت العليق. لكن المؤلف أراد أن يفعل ذلك بهذا الترتيب ]
opencv.pcنظرًا لأن الملف صغير نسبيًا ، اسمحوا لي أن أدخله في نص المقال: libdir = /opt/opencv-4.1.0/lib includedir = /opt/opencv-4.1.0/include/opencv4 Name: OpenCV Description: OpenCV (Open Source Computer Vision Library) is an open source computer vision and machine learning software library. Version: 4.1.0 Libs: -L${libdir} -lopencv_aruco -lopencv_bgsegm -lopencv_bioinspired -lopencv_calib3d -lopencv_ccalib -lopencv_core -lopencv_datasets -lopencv_dnn_objdetect -lopencv_dnn -lopencv_dpm -lopencv_face -lopencv_features2d -lopencv_flann -lopencv_freetype -lopencv_fuzzy -lopencv_gapi -lopencv_hfs -lopencv_highgui -lopencv_imgcodecs -lopencv_img_hash -lopencv_imgproc -lopencv_line_descriptor -lopencv_ml -lopencv_objdetect -lopencv_optflow -lopencv_phase_unwrapping -lopencv_photo -lopencv_plot -lopencv_quality -lopencv_reg -lopencv_rgbd -lopencv_saliency -lopencv_shape -lopencv_stereo -lopencv_stitching -lopencv_structured_light -lopencv_superres -lopencv_surface_matching -lopencv_text -lopencv_tracking -lopencv_videoio -lopencv_video -lopencv_videostab -lopencv_xfeatures2d -lopencv_ximgproc -lopencv_xobjdetect -lopencv_xphoto Cflags: -I${includedir}
-lopencv_bgsegm -lopencv_bioinspired -lopencv_calib3d -lopencv_ccalib -lopencv_core -lopencv_datasets -lopencv_dnn_objdetect -lopencv_dnn -lopencv_dpm -lopencv_face -lopencv_features2d -lopencv_flann -lopencv_freetype -lopencv_fuzzy -lopencv_gapi -lopencv_hfs -lopencv_highgui -lopencv_imgcodecs -lopencv_img_hash -lopencv_imgproc libdir = /opt/opencv-4.1.0/lib includedir = /opt/opencv-4.1.0/include/opencv4 Name: OpenCV Description: OpenCV (Open Source Computer Vision Library) is an open source computer vision and machine learning software library. Version: 4.1.0 Libs: -L${libdir} -lopencv_aruco -lopencv_bgsegm -lopencv_bioinspired -lopencv_calib3d -lopencv_ccalib -lopencv_core -lopencv_datasets -lopencv_dnn_objdetect -lopencv_dnn -lopencv_dpm -lopencv_face -lopencv_features2d -lopencv_flann -lopencv_freetype -lopencv_fuzzy -lopencv_gapi -lopencv_hfs -lopencv_highgui -lopencv_imgcodecs -lopencv_img_hash -lopencv_imgproc -lopencv_line_descriptor -lopencv_ml -lopencv_objdetect -lopencv_optflow -lopencv_phase_unwrapping -lopencv_photo -lopencv_plot -lopencv_quality -lopencv_reg -lopencv_rgbd -lopencv_saliency -lopencv_shape -lopencv_stereo -lopencv_stitching -lopencv_structured_light -lopencv_superres -lopencv_surface_matching -lopencv_text -lopencv_tracking -lopencv_videoio -lopencv_video -lopencv_videostab -lopencv_xfeatures2d -lopencv_ximgproc -lopencv_xobjdetect -lopencv_xphoto Cflags: -I${includedir}
-lopencv_reg -lopencv_rgbd -lopencv_saliency -lopencv_shape -lopencv_stereo -lopencv_stitching -lopencv_structured_light -lopencv_superres -lopencv_surface_matching -lopencv_text -lopencv_tracking -lopencv_videoio -lopencv_video -lopencv_videostab -lopencv_xfeatures2d -lopencv_ximgproc -lopencv_xobjdetect libdir = /opt/opencv-4.1.0/lib includedir = /opt/opencv-4.1.0/include/opencv4 Name: OpenCV Description: OpenCV (Open Source Computer Vision Library) is an open source computer vision and machine learning software library. Version: 4.1.0 Libs: -L${libdir} -lopencv_aruco -lopencv_bgsegm -lopencv_bioinspired -lopencv_calib3d -lopencv_ccalib -lopencv_core -lopencv_datasets -lopencv_dnn_objdetect -lopencv_dnn -lopencv_dpm -lopencv_face -lopencv_features2d -lopencv_flann -lopencv_freetype -lopencv_fuzzy -lopencv_gapi -lopencv_hfs -lopencv_highgui -lopencv_imgcodecs -lopencv_img_hash -lopencv_imgproc -lopencv_line_descriptor -lopencv_ml -lopencv_objdetect -lopencv_optflow -lopencv_phase_unwrapping -lopencv_photo -lopencv_plot -lopencv_quality -lopencv_reg -lopencv_rgbd -lopencv_saliency -lopencv_shape -lopencv_stereo -lopencv_stitching -lopencv_structured_light -lopencv_superres -lopencv_surface_matching -lopencv_text -lopencv_tracking -lopencv_videoio -lopencv_video -lopencv_videostab -lopencv_xfeatures2d -lopencv_ximgproc -lopencv_xobjdetect -lopencv_xphoto Cflags: -I${includedir}
انسخ opencv-4.1.0-armhf.tar.bz2 و opencv.pc من مجلد منزلك إلى RPi.
في الجزء التالي من المقالة ، أفترض أنك
تفعل كل شيء
بالفعل على Raspberry Pi .
تأكد من أن RPi لديه جميع مكتبات التطوير التي استخدمناها. كما كان من قبل ، إذا كنت لا تخطط لاستخدام GTK + ، فتجاهل السطر الأول من الأوامر التالية. يجب تثبيت معظم هذه المكتبات بالفعل إذا كنت تستخدم الإصدار الكامل من Raspbian:
sudo apt install libgtk-3-dev libcanberra-gtk3-dev sudo apt install libtiff-dev zlib1g-dev sudo apt install libjpeg-dev libpng-dev sudo apt install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev sudo apt-get install libxvidcore-dev libx264-dev
قم بفك ضغط المكتبة ونقلها إلى المجلد / opt الخاص بـ RPi:
tar xfv opencv-4.1.0-armhf.tar.bz2 sudo mv opencv-4.1.0 /opt
إذا كنت ترغب في ذلك ، يمكنك حذف الأرشيف:
rm opencv-4.1.0-armhf.tar.bz2
بعد ذلك ، دعنا أيضًا ننقل opencv.pc إلى مجلد يمكن العثور عليه من خلال pkg-config:
sudo mv opencv.pc /usr/lib/arm-linux-gnueabihf/pkgconfig
حتى يتمكن نظام التشغيل من العثور على مكتبات OpenCV ، نحتاج إلى إضافتها إلى مسار المكتبة:
echo 'export LD_LIBRARY_PATH=/opt/opencv-4.1.0/lib:$LD_LIBRARY_PATH' >> .bashrc source .bashrc
تسجيل الخروج وتسجيل الدخول أو إعادة تشغيل المحطة الطرفية.
بعد ذلك ، قم بإنشاء بعض الروابط الرمزية التي تسمح لبيثون بتحميل المكتبات التي تم إنشاؤها حديثًا:
sudo ln -s /opt/opencv-4.1.0/lib/python2.7/dist-packages/cv2 /usr/lib/python2.7/dist-packages/cv2 sudo ln -s /opt/opencv-4.1.0/lib/python3.7/dist-packages/cv2 /usr/lib/python3/dist-packages/cv2
في هذه المرحلة ، يمكنك استخدام مكتبة OpenCV من C ++ أو Python.
في
مستودع هذه المقالة ، يمكنك العثور على العديد من برامج الاختبار في C ++ و Python. يمكنك تنزيل الكود على Pi باستخدام الأوامر:
git clone https://github.com/sol-prog/raspberry-pi-opencv.git cd raspberry-pi-opencv/tests
يوجد اختباران مستقلان يمكنك استخدامهما حتى إذا لم يكن لديك عرض متصل بـ RPi: cli_cpp_test.cpp و cli_python_test.py. قمت أيضًا بتضمين اختبارين للرسومات يتطلبان العرض: gui_cpp_test.cpp و gui_python_test.py.
يمكنك إنشاء وتشغيل اختبارات C ++ كما يلي:
g++ cli_cpp_test.cpp -o cli_cpp_test `pkg-config --cflags --libs opencv` ./cli_cpp_test
وإذا كان لديك عرض متصل بـ RPi الخاص بك:
g++ gui_cpp_test.cpp -o gui_cpp_test `pkg-config --cflags --libs opencv` ./gui_cpp_test
فيما يلي لقطة شاشة لاختبار C + GUI الذي يعمل على بي:

لاختبارات Python ، استخدم:
python3 cli_python_test.py
أو
python3 gui_python_test.py
كملاحظة ، من الممكن أيضًا تجميع برامج C ++ باستخدام OpenCV على نظامك Debian x86-64 وتشغيل الشفرة الثنائية على RPi.
[
المزيد في المقال ، يوصي المؤلف بقراءة كتاب ديريك مولوي حول البرمجة لـ RaspberryPi. يمكنك العثور على رابط الإحالة إلى الكتاب في المقال الأصلي ].
رابط إلى المقال الأصليإضافة صغيرة من نفسيقمت بإعداد ملف Dockerfile سيتيح لك تنفيذ جميع الخطوات الواردة في المقالة دون الحاجة إلى نشر جهاز افتراضي.
عملية التثبيت:
إنشاء Dockerfile.
mkdir opencv && cd opencv && mkdir armhf_opencv touch armhf_opencv/Dockerfile nano armhf_opencv/Dockerfile
بعد ذلك ، نقوم بلصق الشفرة في Dockerfile وبعد ذلك نبدأ تجميع الصورة.
docker image build armhf_opencv/
بعد اكتمال الإنشاء ، سترى معرف الصورة المجمعة:
>>> Successfully built babdc99ba2d8
نستخدم هذا المعرف لتعيين العلامة للصورة وتشغيلها:
docker tag babdc99ba2d8 armhf_opencv:latest docker run armhf_opencv
بعد بدء تشغيل الحاوية ، من الضروري ضخ الأرشيف المجمع وملف opencv.pc منه. للقيام بذلك ، نحتاج إلى معرفه:
docker container ls --all >>> CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES >>> 369dff5a0a9b armhf_opencv "bash" 9 seconds ago Exited (0) 7 seconds ago affectionate_wu
انسخ الملفات التي نحتاجها إلى الدليل الحالي:
docker cp 369dff5a0a9b:/root/opencv-4.1.0-armhf.tar.bz2 ./ docker cp 369dff5a0a9b:/root/opencv.pc ./
بعد ذلك ، أوصي بحذف الصورة ، لأنها تشغل مساحة 2.5 جيجابايت.
استغرق البناء من خلال عامل الميناء على i59600K الخاص بي مع 16 جيجابايت حوالي 30-40 دقيقة ، وقضى الكثير من الوقت في تنزيل البيانات من المستودع.
علاوة على ذلك ، لا تختلف عملية التثبيت على Raspberry Pi عن تلك الموضحة في المقالة.
Dockerfile نفسها:
FROM debian:buster USER root RUN apt update && apt upgrade RUN dpkg --add-architecture armhf && \ apt update && apt install -y qemu-user-static RUN apt install -y python3-dev python3-numpy python-dev python-numpy RUN apt install -y libpython2-dev:armhf libpython3-dev:armhf \ libgtk-3-dev:armhf libcanberra-gtk3-dev:armhf \ libtiff-dev:armhf zlib1g-dev:armhf \ libjpeg-dev:armhf libpng-dev:armhf \ libavcodec-dev:armhf libavformat-dev:armhf \ libswscale-dev:armhf libv4l-dev:armhf \ libxvidcore-dev:armhf libx264-dev:armhf RUN apt install -y crossbuild-essential-armhf gfortran-arm-linux-gnueabihf RUN apt install -y cmake git pkg-config wget RUN mkdir opencv_all && cd opencv_all && \ wget -O opencv.tar.gz https://github.com/opencv/opencv/archive/4.1.0.tar.gz && \ tar -xf opencv.tar.gz -C /tmp && \ wget -O opencv_contrib.tar.gz https://github.com/opencv/opencv_contrib/archive/4.1.0.tar.gz && \ tar -xf opencv_contrib.tar.gz -C /tmp && \ rm *.tar.gz && \ export PKG_CONFIG_PATH=/usr/lib/arm-linux-gnueabihf/pkgconfig:/usr/share/pkgconfig && \ export PKG_CONFIG_LIBDIR=/usr/lib/arm-linux-gnueabihf/pkgconfig:/usr/share/pkgconfig && \ cd /tmp/opencv-4.1.0 && mkdir build && cd build && \ cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/opt/opencv-4.1.0 \ -D CMAKE_TOOLCHAIN_FILE=../platforms/linux/arm-gnueabi.toolchain.cmake \ -D OPENCV_EXTRA_MODULES_PATH=/tmp/opencv_contrib-4.1.0/modules \ -D OPENCV_ENABLE_NONFREE=ON \ -D ENABLE_NEON=ON \ -D ENABLE_VFPV3=ON \ -D BUILD_TESTS=OFF \ -D BUILD_DOCS=OFF \ -D PYTHON2_INCLUDE_PATH=/usr/include/python2.7 \ -D PYTHON2_LIBRARIES=/usr/lib/arm-linux-gnueabihf/libpython2.7.so \ -D PYTHON2_NUMPY_INCLUDE_DIRS=/usr/lib/python2/dist-packages/numpy/core/include \ -D PYTHON3_INCLUDE_PATH=/usr/include/python3.7m \ -D PYTHON3_LIBRARIES=/usr/lib/arm-linux-gnueabihf/libpython3.7m.so \ -D PYTHON3_NUMPY_INCLUDE_DIRS=/usr/lib/python3/dist-packages/numpy/core/include \ -D BUILD_OPENCV_PYTHON2=ON \ -D BUILD_OPENCV_PYTHON3=ON \ -D BUILD_EXAMPLES=OFF .. && \ make -j6 && make install/strip RUN cd /opt/opencv-4.1.0/lib/python3.7/dist-packages/cv2/python-3.7/ && \ cp cv2.cpython-37m-x86_64-linux-gnu.so cv2.so RUN cd /opt && tar -cjvf /root/opencv-4.1.0-armhf.tar.bz2 opencv-4.1.0 RUN git clone https://gist.github.com/sol-prog/ed383474872958081985de733eaf352d opencv_cpp_compile_settings && \ cd opencv_cpp_compile_settings && \ cp opencv.pc /root/