Bài Viết Mới Nhất

08/04/2020

Hướng dẫn cài OpenCV 4.3.0 trên Raspberry Pi



Hôm nay chúng ta cùng cài đặt OpenCV, một thư viện mã nguồn mở hàng đầu cho thị giác máy tính (computer vision), xử lý ảnh, máy học và các tính năng tăng tốc GPU trong hoạt động thời gian thực. Chúng ta sẽ dùng thư viện này ứng dụng vào việc xử lý ảnh và nhận dạng các đối tượng (Người, vật thể ...) với Raspberry Pi và Camera CSI cho Raspberry Pi.

Tải về Wireless Network Watcher để tìm IP của Pi (cũng có thể dùng để xem IP các thiết bị khác đang kết nối wifi của bạn). 
Mật khẩu: hano.cf

Giao diện chương trình như ở hình dưới, bạn kiếm tên thiết bị Pi ở mục Device Name, nhìn tương ứng qua có địa chỉ IP của nó hiện là 192.168.100.9


Tải Putty (SSH – telnet client) bản mới nhất về
Mở Putty và nhập vào như sau 
- Hostname: nhập vào địa chỉ IP của Pi, ở bước trên đã tìm được là 192.168.100.9
- Port 22


Bấm Open. 
Màn hình terminal đến Pi sẽ hiện lên như sau nếu không có lỗi



Nhập vào thông tin đăng nhập như sau: 

- User: pi (nếu nhập sai tên đăng nhập, tắt putty và mở lại) 
- Password : raspberry
Sau khi đăng nhập thành công màn hình sẽ hiện lên như thế này


Nhập lệnh sau vào terminal:
sudo raspi-config


 Sau đó, chọn mục Advanced Options


 Tiếp theo, chọn mục Expand Filesystem


 Bấm OK


Bấm Finish


Bấm Yes


Sau khi khởi động lại hệ thống, tập tin của bạn đã được mở rộng bao gồm tất cả không gian có sẵn trên thẻ MicroSD của bạn. Bạn có thể kiểm tra bằng cách nhập lệnh
df -h


Gỡ bỏ Wolfram Engine and LibreOffice để làm trống ~1GB bộ nhớ Raspberry Pi
sudo apt-get purge wolfram-engine
sudo apt-get purge libreoffice*
sudo apt-get clean
sudo apt-get autoremove

Cập nhật các gói hiện có bằng cách nhập lần lượt 2 lệnh sau
sudo apt-get update && sudo apt-get upgrade

Cài đặt công cụ phát triển
sudo apt-get install build-essential cmake pkg-config

Cài đặt một số gói I/O hình ảnh cho phép tải các định dạng hình ảnh khác nhau như JPEG, PNG, TIFF…
sudo apt-get install libjpeg-dev libtiff5-dev libjasper-dev libpng-dev

Cài đặt gói video I/O cho phép tải các định dạng video khác nhau 
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
sudo apt-get install libxvidcore-dev libx264-dev

Cài đặt thư viện phát triển GTK (công cụ tạo giao diện đồ họa) để biên soạn module phụ của OpenCV, cho phép hiển thị hình ảnh trên màn hình và xây dựng các giao diện GUI đơn giản
sudo apt-get install libfontconfig1-dev libcairo2-dev
sudo apt-get install libgdk-pixbuf2.0-dev libpango1.0-dev
sudo apt-get install libgtk2.0-dev libgtk-3-dev

Cài đặt các gói tối ưu hóa (cải thiện các phép toán ma trận cho OpenCV) 
sudo apt-get install libatlas-base-dev gfortran


Cài đặt thư viện HDF5 datasets và Qt GUIs
sudo apt-get install libhdf5-dev libhdf5-serial-dev libhdf5-103
sudo apt-get install libqtgui4 libqtwebkit4 libqt4-test python3-pyqt5

Cài đặt python 3pip
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

Cài đặt virtualenvvirtualenvwrapper
sudo pip install virtualenv virtualenvwrapper
nano ~/.bashrc



Di chuyển con trỏ đến cuối cùng của file



Thêm vào những dòng sau
# virtualenv and virtualenvwrapper
export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
source /usr/local/bin/virtualenvwrapper.sh


Khi hoàn thành các bạn sử dụng tổ hợp phím để thoát Ctrl + X, sau đó nhấn chọn Y và Enter để lưu file

Reload lại
source ~/.bashrc

Tạo Python 3 virtual environment
mkvirtualenv cv -p python3

Tùy theo phiên bản mà một số bạn có thể mắc lỗi environment ‘/home/pi/.virtualenvs/cv’ does not contain an activate script

Để fix lỗi này cần edit lại file virtualenvwrapper.sh
sudo nano +85 /usr/local/bin/virtualenvwrapper.sh


Tìm dòng VIRTUALENVWRAPPER_ENV_BIN_DIR="usr/lib/bin" và đổi thành VIRTUALENVWRAPPER_ENV_BIN_DIR="bin"


Sau đó, tạo lại Python 3 virtual environment
mkvirtualenv cv -p python3

Cài PiCamera API để dùng Module Raspberry Pi Camera
pip install "picamera[array]"

Tải xuống OpenCV 4.x.x (phiên bản bao nhiêu tùy bạn lựa chọn). Để biết thêm về các phiên bản OpenCV hiện có, bạn truy cập vào đây 
Tính đến thời điểm này thì OpenCV 4.3.0 đang là bản mới nhất nên chúng ta sẽ tải nó về.
cd ~
wget -O opencv.zip https://github.com/opencv/opencv/archive/4.3.0.zip
unzip opencv.zip
mv opencv-4.3.0 opencv

Nếu muốn tải phiên bản OpenCV khác thì thay vào phần tô đỏ 4.3.0
Ví dụ, muốn tải phiên bản OpenCV 4.1.1 thì thay thành dòng lệnh
wget -O opencv.zip https://github.com/opencv/opencv/archive/4.1.1.zip

Cài kho lưu trữ opencv_contrib. Lưu ý: Đảm bảo phiên bản opencv và opencv_contrib của bạn giống nhau (trong trường hợp này là 4.3.0). Nếu số phiên bản không khớp nhau, có khả năng bạn sẽ gặp phải lỗi compile-time hoặc runtime errors.
wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/4.3.0.zip
unzip opencv_contrib.zip
mv opencv_contrib-4.3.0 opencv_contrib


Tăng kích thước swap space để cho phép OpenCV biên dịch với tất cả bốn lõi của Raspberry PI mà không bị treo biên dịch do vấn đề bộ nhớ
sudo nano /etc/dphys-swapfile



Các bạn thực hiện tăng kích thước swap space của mình bằng việc sửa đổi từ CONF_SWAPSIZE  = 100 thành CONF_SWAPSIZE = 2048



Khi hoàn thành các bạn sử dụng tổ hợp phím để thoát Ctrl + X, chọn Y và Enter để lưu file. 

Để kích hoạt swap space mới, hãy khởi động lại swap service
sudo /etc/init.d/dphys-swapfile stop
sudo /etc/init.d/dphys-swapfile start


Vào virtual environment cv
workon cv


Cài đặt numpy
pip install numpy

Biên dịch và cài đặt OpenCV 4.x.x cho Python 3
$ 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 ..



Giờ chúng ta có thể biên dịch chương trình một cách bình thường.
make -j4

-j4 là viết tắt của số lõi để sử dụng khi biên soạn OpenCV. Vì chúng ta đang sử dụng Raspberry Pi 3 nên sẽ tận dụng tất cả bốn lõi của bộ vi xử lý để xử lý nhanh hơn.

Cài đặt OpenCV vào hệ thống bằng lệnh
sudo make install
sudo ldconfig

Đổi kích thước swap space về ban đầu 
sudo nano /etc/dphys-swapfile
CONF_SWAPSIZE  = 100 

Khi hoàn thành các bạn sử dụng tổ hợp phím để thoát Ctrl + X, chọn Y và Enter để lưu file. Kích hoạt lại swap space
sudo /etc/init.d/dphys-swapfile stop
sudo /etc/init.d/dphys-swapfile start

Tạo sym-link
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

Kiểm tra python, virtual environment và OpenCV sau khi cài đặt
cd ~
workon cv
python
>>> import cv2
>>> cv2.__version__

Bài viết liên quan