Wednesday, February 24, 2016

CÀI ĐẶT RASPBERRY PI - BÀI 4: Cài đặt Python-OpenCV sử dụng lệnh terminal

Nguồn : codientu.org



1. Cài đặt Python OpenCV 
Sau khi cấp nguồn, hệ thống sẽ tự động boot vào hệ điều hành wheezy đang có trong thẻ nhớ, mặc định bạn đăng nhập hệ thống sử dụng username và password: pi/raspberry. Tiếp theo, bạn chạy giao diện LXDE được cài sẵn bằng lệnh: startx


rpi-desktop.

Đây là giao diện LXDE mặc định. (24/11/2013: Cái màn hình của mình cùi quá nên ko muốn chụp hình lại, copy tạm giao diện lượm được trên google.)

Chúng ta sẽ bắt đầu tiến hành cài đặt Python-OpenCV bằng terminal.
Đầu tiên mở LXTerminal lên. (Chính là phần mềm cuối cùng trong danh sách mà bạn có thể nhìn thầy ở desktop trên kia.)

everydaylinuxuser1.
(Ảnh minh họa, ảnh thật cũng giống thế. :D )

Wheezy sử dụng hệ thống quản lý phần mềm APT, đầu tiên bạn cần đó là cập nhật dữ liệu repository, đại loại bạn có thể hiểu là cập nhật danh sách các ứng dụng.

Để cập nhật, bạn chạy lệnh:

Mã:
sudo apt-get update
Hệ thống sẽ tự động cập nhật danh sách các ứng dụng mới nhất.

Tiếp theo, bạn cài đặt Opencv:

Mã:
sudo apt-get install python-opencv
Hệ thống sẽ thông báo cho bạn dung lượng cần có để cài đặt gói opencv này, nhấn Y + Enter để đồng ý và chờ đợi quá trình cài đặt hoàn tất.

2. Viết một chương trình đơn giản để hiển thị hình ảnh từ webcam 
Bây giờ chúng ta sẽ viết một chương trình hiển thị hình ảnh từ webcam lên trên màn hình sử dụng OpenCV và lập trình bằng Python. Wheezy mặc định đã được cài đặt sẵn Python, bạn cũng có thể thấy một số ứng dụng python, thậm chí là cả game.

Nếu bạn đã làm việc với IDLE, bạn có thể viết chương trình trực tiếp từ đó, không thì bạn có thể tạo một file face.py trên máy tính, soạn chương trình sau và copy vào usb, sau đó copy lại vào Desktop của LXDE.

Đây là đoạn mã Python:

Mã:
import cv

cv.NamedWindow("w1", cv.CV_WINDOW_AUTOSIZE)
camera_index = 0
capture = cv.CaptureFromCAM(camera_index)

def repeat():
  global capture
  global camera_index
  frame = cv.QueryFrame(capture)
  cv.ShowImage("w1", frame)
  c = cv.WaitKey(10)
  if(c=="n"): #in "n" key is pressed while the popup window is in focus
    camera_index += 1 #try the next camera index
    capture = cv.CaptureFromCAM(camera_index)
    if not capture:
      camera_index = 0
      capture = cv.CaptureFromCAM(camera_index)

while True:
  repeat()
Mình lưu đoạn mã này vào file face.py trên Desktop. Để chạy file này, bạn cần cd đến Desktop (trên LXTerminal):

Mã:
cd Desktop
Cắm webcam, sau đó gọi Python chạy chương trình trên:

Mã:
python face.py
Nếu hình ảnh không hiển thị, bạn nhấn phím "n" để chương trình tìm webcam device tiếp theo, mình sẽ nói thêm về phần device này trong tut sau.

Rất đơn giản, như vậy chúng ta đã có thể hiển thị được hình ảnh từ webcam lên. Một số chú ý cần quan tâm đó là:

- Không phải webcam nào Wheezy cũng có thể nhận được driver cho nó, thực tế thì mình chưa gặp cái nào không nhận được, nhưng theo mình nên chọn những loại webcam cũ, độ phân giải thấp một chút.
Danh sách các webcam hỗ trợ bạn có thể xem ở đây:
Linux UVC driver
- Nếu bạn copy đoạn code python qua usb, khi cắp usb vào Raspberry Pi, có thể có hiện tượng khởi động lại. Mình cũng chưa rõ nguyên nhân là do nguồn hay hệ điều hành. Hiện tượng này không xảy ra đối với bàn phím, webcam và chuột.
- Bạn cần có một bộ nguồn usb khoảng 700mA tới 1000mA để đảm bảo hệ thống chạy ổn định.


No comments:

Post a Comment