α
Published on

Cài đặt OpenCV trên Ubuntu 18.04

1589 words8 min read
Authors

Hướng dẫn này sẽ giúp các bạn cài đặt OpenCV trên hệ điều hành Ubuntu 18.04. Việc cài đặt và sử dụng OpenCV trên Ubuntu sẽ hết sức dễ dàng, ít nhất là theo cá nhân mình, nó dễ dàng hơn việc cài đặt trên Windows.

Về OpenCV, đó là một thư viện mã nguồn mở hàng đầu cho thị giác máy tính, xử lý ảnh và 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.

Bước 1: Chuẩn bị môi trường:

Như tiêu đề bài viết, việc cài đặt sẽ được thực hiện trên Ubuntu 18.04 (bản Ubuntu mới nhất lúc mình viết bài này, sẽ được hỗ trợ đến tháng 4 năm 2023 nên các bạn có thể yên tâm sử dụng).

Môi trường mặc định khi cài đặt bản Ubuntu này, bạn sẽ có Python 3.6.5. Các bước tiếp theo mình sẽ hướng dẫn các bạn cài đặt và liên kết OpenCV cho bản Python này.

Dung lượng ổ cứng bạn cần có là khoảng 7GB để biên dịch và cài đặt. Sau khi cài đặt và dọn dẹp thì dung lượng của OpenCV và các gói phụ thuộc chưa đến 1GB. Các bạn có thể sử dụng ổ cứng rời trong quá trình biên dịch, tuy nhiên cần sửa lại các câu lệnh một chút.

Bước 2: Cập nhật các gói có sẵn và cài đặt các thành phần phụ thuộc:

Mở terminal (Ctrl + Alt + t) và gõ vào:

sudo apt update
sudo apt full-upgrade

Cài đặt các tool cho developer (dùng để biên dịch OpenCV):

sudo apt install build-essential cmake unzip pkg-config

Các gói hỗ trợ để làm việc với hình ảnh:

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

Các gói hỗ trợ làm việc với file video và các luồng video từ camera:

sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
sudo apt-get install libxvidcore-dev libx264-dev

Gói giao diện highgui của OpenCV hỗ trợ tạo một giao diện người dùng cơ bản để test code, các sản phẩm đang phát triển. Thành phần này phụ thuộc vào gói giao diện GTK. Lưu ý là nếu các bạn có ý định tạo những thành phần giao diện phức tạp sau khi hoàn thành các thử nghiệm trên giao diện cơ bản highgui của openCV, có thể bạn sẽ muốn sử dụng một thư viện đồ họa như QT chẳng hạn.

sudo apt-get install libgtk-3-dev

Cài đặt một số các thành phần cần có khác:

sudo apt-get install libatlas-base-dev gfortran
sudo apt-get install python3-dev
sudo apt-get install qt5-default libgtk2.0-dev libtbb-dev

Bước 3: Tải về OpenCV

Mình sẽ thực hiện tải về gói opencv 3.4.3 và phần mở rộng opencv_contrib 3.4.3. Các lệnh sẽ sử dụng có thể dùng được cho các bản OpenCV 3 mới hơn, chỉ cần thay tên phiên bản trong mã lệnh.

cd ~
wget -O opencv.zip https://github.com/opencv/opencv/archive/3.4.3.zip
wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/3.4.3.zip

Giải nén các gói đã tải:

unzip opencv.zip
unzip opencv_contrib.zip
mv opencv-3.4.3 opencv
mv opencv_contrib-3.4.3 opencv_contrib

Bước 4: Cài đặt môi trường cho Python 3

Việc cài đặt môi trường thực tế là việc cài đặt một môi trường ảo (virtual environment) để cài đặt OpenCV trong đó. Việc này sẽ giúp cô lập các môi trường thực thi cho python, tránh nhiều xung đột về môi trường có thể xảy ra. Trừ khi bạn hiểu rõ những gì bạn đang làm, nếu không mình khuyên các bạn nên cài đặt theo cách này.

wget https://bootstrap.pypa.io/get-pip.py
sudo python3 get-pip.py
sudo pip install virtualenv virtualenvwrapper
sudo rm -rf ~/get-pip.py ~/.cache/pip

Thêm các đoạn mã tạo môi trường vào cuối file ~/.bashrc:

echo -e "\n# virtualenv and virtualenvwrapper" >> ~/.bashrc
echo "export WORKON_HOME=$HOME/.virtualenvs" >> ~/.bashrc
echo "export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3" >> ~/.bashrc
echo "source /usr/local/bin/virtualenvwrapper.sh" >> ~/.bashrc
source ~/.bashrc

Tạo môi trường ảo để giữ OpenCV và các gói liên quan

mkvirtualenv cv -p python3

Lệnh trên sẽ giúp các bạn tạo một môi trường ảo tên “cv”. Bạn có thể tạo dưới bất kỳ tên nào bạn muốn. Nhưng chú ý thay đổi các lệnh ở sau.

Để sử dụng môi trường ảo vừa tạo, gõ:

workon cv

Bạn sẽ thấy phần “(cv)” được thêm vào trước mỗi dòng lệnh như hình dưới.

Cài đặt NumPy – gói cần thiết để sử dụng OpenCV với Python:

pip install numpy

Bước 5: Cấu hình và cài đặt OpenCV

Sử dụng môi trường ảo vừa tạo bằng lệnh dưới. Hãy nhớ “workon cv” mỗi lúc bạn cần sử dụng môi trường chứa OpenCV này.

workon cv

Cấu hình để cài đặt OpenCV với cmake

Hãy nhớ thay “cv” thành tên môi trường ảo vừa tạo.

cd ~/opencv/
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D INSTALL_C_EXAMPLES=OFF \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \
-D PYTHON_EXECUTABLE=~/.virtualenvs/cv/bin/python \
-D WITH_TBB=ON \
-D WITH_V4L=ON \
-D WITH_QT=ON \
-D BUILD_EXAMPLES=ON \
-D WITH_EIGEN=OFF ..

Lưu ý: Mình tắt chế độ compile với thư viện Eigen với dòng `-D WITH_EIGEN=OFF` vì thấy không cần thiết lắm và nó có thể gây ra lỗi trong việc cấu hình. Theo một trả lời trên Stack Overflow Chế độ này chỉ hữu ích nếu bạn muốn dùng thư viện Eigen kèm với OpenCV.

Bước này có thể kéo dài vài phút. Ngay sau đó bạn sẽ nhận được màn hình tương tự như hình dưới:

Hãy để ý phần thông tin về Python3 được khoanh vùng màu đỏ. Nếu bạn không có thông tin chi tiết về Python như thế này, rất có thể bạn đã thiếu các thành phần sau:

  • Chưa cài gói python3-dev
  • Chưa cài pip
  • Chưa cài numpy
  • Chưa chuyển vào môi trường ảo vừa tạo (workon cv).

Hãy xem lại các cài đặt và chạy lại lệnh cấu hình.

Biên dịch (compile) OpenCV

Tiếp theo chúng ta sẽ biên dịch OpenCV với lệnh make. Vì máy của mình có 4 Core (Intel core i5 7200u) do vậy mình sẽ biên dịch với lệnh sau (bạn có thể thay đổi tham số j tương ứng với số core bạn có). Lệnh “nproc” sẽ trả về giá trị số core của bạn.

nproc # Sau khi chạy lệnh này, bạn sẽ có giá trị trả về là số core của bạn. Hãy thay nó vào lệnh dưới.
make -j4

Việc biên dịch OpenCV sẽ mất một thời gian khá lâu. Bạn nên đi làm việc khác để tiết kiệm thời gian.

Cài đặt OpenCV

Nếu việc biên dịch diễn ra suôn sẻ, bạn sẽ nhận được màn hình tương tự thế này:

Việc tiếp theo là cài đặt OpenCV

sudo make install
sudo sh -c 'echo "/usr/local/lib" >> /etc/ld.so.conf.d/opencv.conf'
sudo ldconfig

Bạn có thể kiểm tra lại việc cài đặt:

pkg-config --modversion opencv

Kết quả sẽ hiện ra phiên bản OpenCV bạn vừa cài (3.4.3) nếu việc cài đặt thành công.

Bước 6: Liên kết OpenCV vào các gói của Python3

Trước tiên hãy tìm đường dẫn đến nơi chứa gói cv2*.so vừa biên dịch:

find /usr/local/lib/ -type f -name "cv2*.so"

Tiếp theo bạn cần đổi tên gói này thành cv2.so và liên kết vào môi trường “cv”. Nhớ thay /usr/local/lib/python3.6/site-packages/ thành đường dẫn tương tứng bạn nhận được từ kết quả của lệnh trên.

ls /usr/local/lib/python3.6/site-packages/
cd /usr/local/lib/python3.6/site-packages/
sudo mv cv2.cpython-36m-x86_64-linux-gnu.so cv2.so
cd ~/.virtualenvs/cv/lib/python3.6/site-packages/
ln -s /usr/local/lib/python3.6/site-packages/cv2.so cv2.so

Kiểm tra lại cài đặt với python

Bước 7: Clean up

Tổng quá trình biên dịch sẽ chiếm dụng của chúng ta khoảng 6-7GB bộ nhớ, dĩ nhiên là sau khi cài đặt OpenCV sẽ chiếm của bạn ít thôi. Vì thế sau khi cài đặt, kiểm tra, hãy xóa sạch “rác” tạo ra trong quá trình cài đặt nhé.

cd ~
rm opencv.zip opencv_contrib.zip
rm -rf opencv opencv_contrib

Tổng kết

Trên đây là các bước cài đặt OpenCV 3.4.3 trên Ubuntu 18.04. Nếu bạn gặp vấn đề gì / có thắc mắc gì trong quá trình cài đặt, hãy để lại comment bên dưới.