หัวข้อ: Cross Compile OpenCV บน Ubuntu 18.04.4 เพื่อใช้บน Pi4 เริ่มหัวข้อโดย: cluangar ที่ เมษายน 06, 2020, 08:42:25 AM และแล้วมาถึงจุดที่ต้อง Compile CpenCV เพื่อใช้งาน Feature xfeatures2d เนื่องด้วย Featrue นี้ใน OpenCV version ใหม่ๆจะถูกจัดออกไปอยู่หมวด NoFree ใช้เพื่อการค้าไม่ได้ แต่สามารถใช้เพื่อการศึกษาวิจัยได้ แถมใครเคย compile โดยตรงบน Pi คงทราบกันดีว่ารอกันหายห่วงแถมถ้าไม่ใช้ Active Cooling ช่วยระบายความร้อน Pi มี Overheat
สามารถทำตามขั้นตอนจาก https://solarianprogrammer.com/2019/08/07/cross-compile-opencv-raspberry-pi-zero-raspbian/ หรือ https://solarianprogrammer.com/2018/12/18/cross-compile-opencv-raspberry-pi-raspbian/ หัวข้อ: Re: Cross Compile OpenCV บน Ubuntu 18.04.4 เพื่อใช้บน Pi4 เริ่มหัวข้อโดย: cluangar ที่ เมษายน 06, 2020, 08:49:47 AM เริ่มต้นหาเครื่อง PC แรงมากๆ เพราะการ Compile นี้จะใช้ Emulate CPU x86 ทำงานเป็น ARM CPU แบบเดียวกับที่ใช้งานบน Raspberry Pi ในตัวอย่างใช้เครื่อง Dual CPU Xeon E5-2620v3 ทำงานบน VMware โดย set vCPU จำนวน 16 Cores และ Memory 8GB ใช้เวลาในการ Compile ราว 1 ชม. เศษ
เริ่มแรกเตรียม เตรียมการจำลองโดยการใช้ QEMu ตาม Step ดังนี้ 1 sudo apt install qemu-user-static debootstrap 2 mkdir raspbian 3 sudo debootstrap --no-check-gpg --foreign --arch=armhf buster ~/raspbian http://archive.raspbian.org/raspbian 4 sudo cp /usr/bin/qemu-arm-static ~/raspbian/usr/bin 5 sudo chroot ~/raspbian /debootstrap/debootstrap --second-stage 6 sudo chroot ~/raspbian apt update 7 sudo chroot ~/raspbian apt upgrade หัวข้อ: Re: Cross Compile OpenCV บน Ubuntu 18.04.4 เพื่อใช้บน Pi4 เริ่มหัวข้อโดย: cluangar ที่ เมษายน 06, 2020, 08:51:32 AM เมื่อเตรียมการ พร้อมแล้วได้เวลาเข้าใช้งาน Emu ผ่านคำสั่ง
sudo chroot ~/raspbian และถ้าต้องการออกจากการใช้งาน Emu ใช้คำสั่ง exit หัวข้อ: Re: Cross Compile OpenCV บน Ubuntu 18.04.4 เพื่อใช้บน Pi4 เริ่มหัวข้อโดย: cluangar ที่ เมษายน 06, 2020, 09:00:00 AM Step ต่อไป download Lib ที่จำเป็นสำหรับการ Cross Compile พบปัญหา download Lib ไม่ได้ จำเป็นต้องเปลี่ยน Link สำหรับ download ใหม่ดังนี้
sudo nano /etc/opt/sources.list ลบหรือ # Linkเดิมออก แล้วใช้ Link นี้แทน deb http://raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi จากนั้นทำการติดตั้ง Lib เพื่อเตรียม Compile ต่อไป apt install build-essential gfortran apt install cmake git pkg-config wget apt install python-dev python-numpy python3-dev python3-numpy apt install libtiff-dev zlib1g-dev apt install libjpeg-dev libpng-dev apt install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev apt install libxvidcore-dev libx264-dev แถมด้วย Lib ที่จำเป็นเพิ่มเติม apt install libgtk2.0-dev pkg-config หัวข้อ: Re: Cross Compile OpenCV บน Ubuntu 18.04.4 เพื่อใช้บน Pi4 เริ่มหัวข้อโดย: cluangar ที่ เมษายน 06, 2020, 09:04:10 AM Step Download OpenCV 4.2.0
1 mkdir opencv_all && cd opencv_all 2 wget -O opencv.tar.gz https://github.com/opencv/opencv/archive/4.2.0.tar.gz 3 tar xf opencv.tar.gz 4 wget -O opencv_contrib.tar.gz https://github.com/opencv/opencv_contrib/archive/4.2.0.tar.gz 5 tar xf opencv_contrib.tar.gz 6 rm *.tar.gz Step สร้าง Folder OpenCV และเข้า folder build เพื่อเตรียม Config ก่อน Compile 1 cd opencv-4.2.0 2 mkdir build && cd build หัวข้อ: Re: Cross Compile OpenCV บน Ubuntu 18.04.4 เพื่อใช้บน Pi4 เริ่มหัวข้อโดย: cluangar ที่ เมษายน 06, 2020, 09:05:01 AM Run คำสั่ง cmake เพื่อสร้าง Config
cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/opt/opencv-4.2.0 \ -D OPENCV_EXTRA_MODULES_PATH=/opencv_all/opencv_contrib-4.2.0/modules \ -D OPENCV_ENABLE_NONFREE=ON \ -D BUILD_TESTS=OFF \ -D BUILD_DOCS=OFF \ -D BUILD_OPENCV_PYTHON2=ON \ -D BUILD_OPENCV_PYTHON3=ON \ -D BUILD_EXAMPLES=OFF .. หัวข้อ: Re: Cross Compile OpenCV บน Ubuntu 18.04.4 เพื่อใช้บน Pi4 เริ่มหัวข้อโดย: cluangar ที่ เมษายน 06, 2020, 09:10:30 AM หลังจากเตรียม Config ผ่าน ได้เวลา Compile ด้วยคำสั่ง (เปลี่ยนตัวเลขหลัง j ได้ตามจำนวน Cores CPU)
make -j1ุ6 หลังจากจบการ Compile ถึงเวลาติดตั้ง OpenCV ที่ Compile เสร็จแล้ว ใช้คำสั่ง make install/strip โดยจะติดตั้งลงที่ /opt/opencv-4.2.0 ตามที่ set ไว้ใน config จากนี้จะเป็น step การเก็บ OpenCV ที่ Compile แล้วเพื่อนำไปใช้งานที่ Pi cd /opt/opencv-4.2.0/lib/python3.7/dist-packages/cv2/python-3.7/ cp cv2.cpython-37m-arm-linux-gnueabihf.so cv2.so cd /opt tar -cjvf /opencv_all/opencv-4.2.0-pi.tar.bz2 opencv-4.2.0 หัวข้อ: Re: Cross Compile OpenCV บน Ubuntu 18.04.4 เพื่อใช้บน Pi4 เริ่มหัวข้อโดย: cluangar ที่ เมษายน 06, 2020, 09:14:44 AM ต่อไปนี้เป็น Step ที่ต้องทำบน Pi เพื่อใช้งาน OpenCV ที่ Compile เสร็จแล้วมาใช้ เริ่มด้วย เพิ่ม Lib Path ลงใน shell
1 echo 'export LD_LIBRARY_PATH=/opt/opencv-4.2.0/lib:$LD_LIBRARY_PATH' >> .bashrc 2 source .bashrc สร้าง symoblic links เพื่อใช้งาน OpenCV 1 sudo ln -s /opt/opencv-4.2.0/lib/python2.7/dist-packages/cv2 /usr/lib/python2.7/dist-packages/cv2 2 sudo ln -s /opt/opencv-4.2.0/lib/python3.7/dist-packages/cv2 /usr/lib/python3/dist-packages/cv2 ส่วนใครใช้ virtual envs ต้องสร้าง Symbolic Link เพิ่มตามสะดวก ในตัวอย่างนี้ใช้ virtual envs [cv] sudo ln -s /opt/opencv-4.2.0/lib/python3.7/dist-packages/cv2 /home/pi/.virtualenvs/cv/lib/python3.7/site-packages/cv2 หัวข้อ: Re: Cross Compile OpenCV บน Ubuntu 18.04.4 เพื่อใช้บน Pi4 เริ่มหัวข้อโดย: cluangar ที่ เมษายน 06, 2020, 09:29:34 AM ทดลองใช้งาน OpenCV
หัวข้อ: Re: Cross Compile OpenCV บน Ubuntu 18.04.4 เพื่อใช้บน Pi4 เริ่มหัวข้อโดย: cluangar ที่ เมษายน 08, 2020, 12:51:14 PM และแล้วกลับมา install module เพิ่มเนื่องจากต้องการ ดึงความสามารถของ GPU บน Pi ออกมาใช้งาน ให้ install module เหล่านี้เพิ่มเข้าไป ดังนี้
apt install liblapack-dev apt install libgtk-3-dev apt install python3-pip apt install libtbb2 libtbb-dev libdc1394-22-dev apt install v4l-utils apt install libjasper-dev libopenblas-dev libatlas-base-dev libblas-dev apt install gcc-arm* apt install protobuf-compiler apt install ocl-icd-opencl-dev ocl-icd-dev opencl-headers clinfo หัวข้อ: Re: Cross Compile OpenCV บน Ubuntu 18.04.4 เพื่อใช้บน Pi4 เริ่มหัวข้อโดย: cluangar ที่ เมษายน 08, 2020, 04:37:28 PM ปรับแก้ไข config เดิมก่อน compile ดังนี้
- เข้าไปที่ build folder แล้วลบ file CMakeCache.txt ปัจจุบันทิ้ - สร้าง Config file ขึ้นมาใหม่ก่อน rune compile ดังนี้ cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/opt/opencv-4.2.0 \ -D OPENCV_EXTRA_MODULES_PATH=/opencv_all/opencv_contrib-4.2.0/modules \ -D ENABLE_NEON=ON \ -D ENABLE_VFPV3=ON \ -D WITH_OPENMP=ON \ -D WITH_VULKAN=ON \ -D WITH_OPENCL_SVM=ON \ -D OPENCV_ENABLE_NONFREE=ON \ -D BUILD_TESTS=OFF \ -D BUILD_DOCS=OFF \ -D BUILD_OPENCV_PYTHON2=ON \ -D BUILD_OPENCV_PYTHON3=ON \ -D BUILD_EXAMPLES=OFF .. |