การติดตั้ง OpenCV 4.3.0 บน Raspberry Pi 4 model B
Tags: Opencv, Raspberry Pi 4 Model B, Raspberry Pi

เริ่มจากขั้นตอนตามนี้

EEPROM

พิมพ์คำสั่งต่อไปนี้

sudo rpi-eeprom-update

หากขึ้น up-to-date ให้ทำตามขั้นตอนต่อไป แต่หากขึ้นเป็น update required ให้พิมพ์คำสั่งต่อไปนี้

sudo rpi-eeprom-update -a

และทำการ reboot โดยพิมพ์

sudo reboot

ทำการติดตั้งส่วนที่จำเป็นก่อนที่จะติดตั้ง OPENCV 4.3.0 โดยพิมพ์

sudo apt-get install cmake gfortran

sudo apt-get install libjpeg-dev libtiff-dev libgif-dev

sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev

sudo apt-get install libgtk2.0-dev libcanberra-gtk*

sudo apt-get install libxvidcore-dev libx264-dev libgtk-3-dev

sudo apt-get install libtbb2 libtbb-dev libdc1394–22-dev libv4l-dev

sudo apt-get install libopenblas-dev libatlas-base-dev libblas-dev

sudo apt-get install libjasper-dev liblapack-dev libhdf5-dev

sudo apt-get install gcc-arm* protobuf-compiler

ทำการดาวห์โหลด OPENCV 4.3.0 พิมพ์

cd ~

wget -O opencv_contrib.zip wget -O opencv.zip https://github.com/opencv/opencv/archive/4.3.0.zip wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/4.3.0.zip unzip opencv.zip

unzip opencv_contrib.zip

และตามด้วย

mv opencv-4.3.0 opencv

mv opencv_contrib-4.3.0 opencv_contrib

ติดตั้ง Virtual Environment พิมพ์ทั้งหมดนี้ลงไปใน Terminal

python3 — version which python 3.7 echo “export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3.7” >> ~/.bashrc source ~/.bashrc

ตามด้วย

sudo pip3 install virtualenv

sudo pip3 install virtualenvwrapper

และ

echo “export WORKON_HOME=$HOME/.virtualenvs” >> ~/.bashrc

echo “source /usr/local/bin/virtualenvwrapper.sh” >> ~/.bashrc source ~/.bashrc

mkvirtualenv cv430

และพิมพ์

pip3 install numpy

หลังจากนั้นจะเริ่ม Build Make โดย

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 WITH_OPENMP=ON \

-D BUILD_TIFF=ON \

-D WITH_FFMPEG=ON \

-D WITH_GSTREAMER=ON \

-D WITH_TBB=ON \

-D BUILD_TBB=ON \

-D BUILD_TESTS=OFF \

-D WITH_EIGEN=OFF \

-D WITH_V4L=ON \

-D WITH_LIBV4L=ON \

-D WITH_VTK=OFF \

-D OPENCV_EXTRA_EXE_LINKER_FLAGS=-latomic \

-D OPENCV_ENABLE_NONFREE=ON \

-D INSTALL_C_EXAMPLES=OFF \

-D INSTALL_PYTHON_EXAMPLES=OFF \

-D BUILD_NEW_PYTHON_SUPPORT=ON \

-D BUILD_opencv_python3=TRUE \

-D OPENCV_GENERATE_PKGCONFIG=ON \

-D BUILD_EXAMPLES=OFF ..

ขั้นตอนการติดตั้งโดยการ Compile Source Code ใช้ Memory มาก หาก Pi มี Memory ไม่พอจะทำให้ Compile ไม่ผ่านต้องทำการ Swap ไว้ก่อน

พิมพ์คำสั่งต่อไปนี้ลง Terminal ของ Raspberry Pi 4

sudo nano /etc/dphys-swapfile

2. ตั้งค่าตามนี้

CONF_SWAPSIZE=4096

3. stop และ start swap

sudo /etc/init.d/dphys-swapfile stop

sudo /etc/init.d/dphys-swapfile start

เป็นอันเสร็จสิ้นการ Swap ใครที่มี Raspberry Pi 4 4GB สามารถข้ามขั้นตอนนี้ได้เลย

หลังจากนั้นให้พิมพ์

make -j4

เมื่อเสร็จแล้วให้พิมพ์

sudo make install

sudo ldconfig

sudo apt-get update

และกลับไปแก้ไขค่าให้เหมือนเดิมและลบไฟล์ที่ไม่ใช่แล้วทิ้งก่อนทำขั้นตอนต่อไป

sudo nano /etc/dphys-swapfile set CONF_SWAPSIZE=100

และทำการ Save (Ctrl + x , Y , Enter)

Sym-link OpenCV บน Raspberry Pi

cd ~/.virtualenvs/cv430/lib/python3.7/site-packages ln -s /usr/local/lib/python3.7/site-packages/cv2/python-3.7/cv2.cpython-37m-arm-linux-gnueabihf.so cd ~

และตรวจเช็คให้พิมพ์คำสั่ง

workon

หรือ

workon cv430

ตามด้วย

python

>>> import cv2

>>> cv2.__version__

‘4.3.0’

>>>

เป็นอันเสร็จสิ้น แต่หากพบปัญหาโดยมีข้อความขึ้นว่า “No module named cv2” ให้พิมพ์

cd ~/opencv/build/lib/python3

sudo cp cv2.cpython-37m-arm-linux-gnueabihf.so \

/usr/local/lib/python3.7/dist-packages/cv2.so

ตามด้วย

cd ~/opencv

rm -r build

ทดสอบด้วย Code ตัวอย่าง Python Opencv

import numpy as np

import cv2cap = cv2.VideoCapture(0)while(True):

# Capture frame-by-frame

#ret, frame = cap.read()

# Our operations on the frame come here

# gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

# Display the resulting frame

ret, frame = cap.read()

cv2.imshow('frame',frame)

if cv2.waitKey(1) & 0xFF == ord('q'):

break

# When everything done, release the capture

cap.release()

cv2.destroyAllWindows()

อ้างอิงแหล่งที่มา :