OpenCV là một thư viện xử lý ảnh viết bằng C/C++, có thể nói là chuẩn mực để ai mới nhập môn xử lý ảnh cũng phải học và dùng đến. OpenCV có thể chạy trên nhiều hệ điều hành Win, Mac, Linux và kiến trúc vi xử lý khác nhau: Intel, ARM...
Có 2 cách để cài đặt OpenCV lên một hệ điều hành:
- Tải mã nguồn về rồi tự build. Cách này chúng ta có thể bật, tắt tuỳ chọn để thêm bớt các chức năng phụ
- Tải bản binary về: đơn giản, dễ cho người mới bắt đầu
Trước tiên tôi trình bày cách 2, tải bản binary về.
Bước 1: Hãy cài đặt Home Brew . HomeBrew là trình quản lý, cài đặt thêm các gói phần mềm mã nguồn mở lên MacOSX tương tự như apt-get trong Ubuntu, Debian
Bước 2: Mở terminal gõ lệnh brew info opencv để biết phiên bản opencv sẽ cài lên máy
$ brew info opencv
opencv: stable 4.1.0 (bottled)
Open source computer vision library
https://opencv.org/
...
From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/opencv.rb
==> Dependencies
Build: cmake ✔, pkg-config ✔
Required: eigen ✔, ffmpeg ✔, glog ✔, harfbuzz ✔, jpeg ✔, libpng ✔, libtiff ✔, numpy ✔, openexr ✔, python ✔, python@2 ✔, tbb ✔
Bước 3: Gõ lệnh brew install opencv
Sau bước 3 chúng ta sẽ cài đặt thư viện Python sử dụng OpenCV có tên là opencv-python. Để lập trình opencv trong Python cần chuẩn bị:
- Python 3.7.x
- Tạo Virtual Environment để có thể cài các gói package phiên bản khác nhau cho các dự án lập trình độc lập
- Kích hoạt Virtual Environment
Bước 4: Cài đặt opencv-python
Nếu bạn lập trình desktop cần xem kết quả opencv xử lý thì
pip install opencv-python
pip install opencv-contrib-python
Nếu opencv xử lý âm thầm trên server không cần hiển thị giao diện thì cài
pip install opencv-python-headless
pip install opencv-contrib-python-headless
Bước 5: Kiểm tra opencv-python đã chạy ổn chưa bằng tạo một file Python chuyển đổi ảnh RGB sang màu xám
import cv2
print("OpenCV version:")
print(cv2.__version__)
img = cv2.imread("ferrario.jpg")
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
cv2.imshow("Over the Clouds", img)
cv2.imshow("Over the Clouds - gray", gray)
cv2.waitKey(0)
cv2.destroyAllWindows()
Nhược điểm của cách cài binary biên dịch sẵn là nó không đóng gói sẵn một số thuật toán thương mại hoá. Thử chạy đoạn lệnh Python này, bạn sẽ thấy lỗi
This algorithm is patented and is excluded in this configuration; Set OPENCV_ENABLE_NONFREE CMake option and rebuild the library...
import cv2
import matplotlib.pyplot as plt
img_fname = 'ferrario1.jpg' # assuming this is where you
# downloaded the above image
# load image
img = cv2.imread(img_fname)
if img is None:
raise ValueError('{} is not a file'.format(img_fname))
# convert to grayscale
img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# instantiate SURF
surf = cv2.xfeatures2d.SURF_create(7000)
# compute keypoints
keypoints = surf.detect(img_gray, None)
# plot keypoints
img_keypoints = cv2.drawKeypoints(img, keypoints, img, flags=cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)
img_keypoints_rgb = cv2.cvtColor(img_keypoints, cv2.COLOR_BGR2RGB)
plt.imshow(img_keypoints_rgb)
plt.show()
Bình luận