Webboard on Worldsen / VMThai.com

คอมพิวเตอร์ => เรื่องทั่วไปของคอมพิวเตอร์ => ข้อความที่เริ่มโดย: cluangar ที่ เมษายน 06, 2020, 08:42:25 AM



หัวข้อ: 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 ..