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
Kiểm tra phiên bản Raspbian hiện tại bằng cách nhập lệnh
$ cat /etc/*-release
Nếu kết quả trả về thế này nghĩa là bạn đang dùng Raspbian Stretch
PRETTY_NAME="Raspbian GNU/Linux 9 (stretch)
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
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
Khởi động lại Pi sau khi cập nhật phần mềm
$ sudo reboot
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 libpng12-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 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 python 3 và numpy
$ sudo apt-get install python3 python3-setuptools python3-dev -y
$ wget https://bootstrap.pypa.io/get-pip.py
$ sudo python3 get-pip.py
$ sudo pip3 install numpy
Tải xuống OpenCV 3.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 3.4.10 đ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/3.4.10.zip
$ unzip opencv.zip
Nếu muốn tải phiên bản OpenCV khác thì thay vào phần tô đỏ 3.4.10
Ví dụ, muốn tải phiên bản OpenCV 3.4.0 thì thay thành dòng lệnh
$ wget -O opencv.zip https://github.com/opencv/opencv/archive/3.4.0.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à 3.4.10). 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/3.4.10.zip
$ unzip opencv_contrib.zip
Biên dịch và cài đặt OpenCV 3.x.x cho Python 3
$ cd opencv-3.4.10
$ mkdir build
$ cd build
$ cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D BUILD_opencv_java=OFF \
-D BUILD_opencv_python2=OFF \
-D BUILD_opencv_python3=ON \
-D PYTHON_DEFAULT_EXECUTABLE=$(which python3) \
-D INSTALL_C_EXAMPLES=OFF \ -D INSTALL_PYTHON_EXAMPLES=ON \
-D BUILD_EXAMPLES=ON\
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-3.4.10/modules \
-D WITH_CUDA=OFF \
-D BUILD_TESTS=OFF \
-D BUILD_TESTS=OFF \
-D BUILD_PERF_TESTS= OFF ..
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 = 1024
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
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
Kiểm tra python và OpenCV sau khi cài đặt
$ python3
>>> import cv2
>>> cv2.__version__
Đổi kích thước swap space về ban đầu
$ sudo nano /etc/dphys-swapfile
CONF_SWAPSIZE = 100
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.
Cuối cùng, kích hoạt swap space mới
$ sudo /etc/init.d/dphys-swapfile stop
$ sudo /etc/init.d/dphys-swapfile start