Computer Vision

Cài đặt OpenCV 3 cho Python và một số lưu ý khi sử dụng

CÀI ĐẶT OPENCV 3 CHO PYTHON

Có hai cách để cài đặt OpenCV 3 cho Python:

  1. Cài đặt từ Source Package của OpenCV 3 (có thể download Source Package từ opencv.org hoặc github) bằng cách sử dụng Cmake và make tools. Cách này tuy khá phức tạp nhưng cung cấp đầy đủ thư viện, interfaces cho các ngôn ngữ như C++, Python, Java. Ngoài ra, Source Package luôn chứa phiên bản mới nhất của OpenCV;
  2. Cài đặt Binary Package từ repository PyPI (Python Package Index) của Python. Cách này cực kỳ đơn giản, tuy nhiên nó chỉ cung cấp interface cho Python và thường không phải là phiên bản OpenCV mới nhất.

Trong bài viết này chúng ta sẽ thực hiện theo cách 2, cài đặt Binary Package từ PyPI:

+ Nếu có một package opencv-python đã được cài đặt từ trước, chúng ta cần uninstall package đó trước khi cài đặt một package mới:
$ python -m pip uninstall opencv-python

+ Cài đặt OpenCV 3:
$ python -m pip install opencv-python

+ Cài đặt các Contribution modules của OpenCV 3:
$ python -m pip install opencv-contrib-python


MỘT SỐ LƯU Ý

Trong đồ họa máy tính, hình ảnh được biểu diễn như một lưới các điểm ảnh (pixels), hệ tọa độ thường dùng có dạng như sau:

axis

Trong đó, gốc tọa độ (0, 0) là điểm ảnh (pixel) trên cùng bên trái của image.

Thông thường, độ kích thước của ảnh sẽ được biểu diễn ở dạng width x height, ví dụ: 320×240, 640×480. Tuy nhiên, trong openCV image được biểu diễn ở dạng matrix (row x column) để dễ dàng cho việc tính toán. Do đó, để truy cập vào từng pixel của image, chúng ta cần tham số rowcolumn của pixel đó, ví dụ: sử dụng image[5, 4] để truy cập vào pixel có tọa độ (4, 5).

point

Để thao tác trên một vùng gồm nhiều điểm ảnh, ta sử dụng array slicing như sau image[start_row:end_row, start_column:end_column], ví dụ: image[50:100, 100:200] là một ma trận điểm ảnh có kích thước 50×100 (row 50…99, column 100…199).

Khi truy cập vào từng pixel, chúng ta sẽ nhận được các thông số màu (B, G, R) của pixel đó. Chú ý là openCV sử dụng hệ màu BGR thay vì RGB như chúng ta đã quen thuộc.

Trong OpenCV, giá trị của phép cộng, trừ 2 số uint8 (cv2.add() và cv2.subtract()) sẽ được giới hạn trong khoảng [0, 255]. Tuy nhiên đối với Numpy, giá trị của phép cộng, trừ 2 số uint8 sẽ được “wrap around”.

Example:

>>> import cv2
>>> import numpy as np
>>> a = np.uint8([100])
>>> b = np.uint8([200])
>>> a+b
array([44], dtype=uint8)
>>> cv2.add(a, b)
array([[255]], dtype=uint8)

 

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s