Upload
trumtrung
View
248
Download
8
Embed Size (px)
Citation preview
RASPBERRY PI WITH CAMERA TUTORIAL
Sinh viên tìm hiểu:
1/ Nguyễn Đức Trung - 10520353
2/ Trần Thanh Liêm - 10520364
Mục lục:
I. Giới thiệu tổng quan. ............................................................................................................................ 2
II. Đặc điểm và tính chất. .......................................................................................................................... 4
III. Lắp đặt. ............................................................................................................................................. 6
IV. Làm việc với camera........................................................................................................................ 10
1) Các lệnh thông số hình ảnh: ............................................................................................................ 10
2) Các lệnh thông số xem trước: ......................................................................................................... 11
V. Quay video và chụp ảnh. ..................................................................................................................... 11
1) Quay phim: ...................................................................................................................................... 11
2) Chụp ảnh: ........................................................................................................................................ 12
VI. Xử lý ảnh cơ bản. ............................................................................................................................ 12
VII. Tài liệu tham khảo: .......................................................................................................................... 14
Raspberry Pi with Camera Tutorial
2
I. Giới thiệu tổng quan.
Trước khi xuất hiện camera, điều duy nhất bạn có thể làm để thêm khả năng
nhận biết hình ảnh, quay phim, chụp hình cho RPi là sử dụng 1 webcam cắm
vào cổng USB. Với các webcam Logotech tích hợp sẵn định dạng xuất
mjpeg sẽ giúp Raspberry xử lý nhanh hơn. Nhưng các webcam Logitech lại
có giá thành khá cao, nhất là các webcam có độ phân giải lớn.
Raspberry Pi camera được tích hợp camera 5 Megapixel có độ nhạy sáng
cao, có thể chụp tốt ở nhiều điều kiện ánh sáng khác nhau, cả trong nhà và
ngoài trời. Điểm đặc biệt mà camera mang lại đó là chụp hình độ nét cao
trong lúc quay phim.
Bạn không tốn thêm cổng USB nào cho camera vì camera được gắn chắc
chắn vào socket CSI (gần cổng LAN vớiRaspberry Pi model B). Điều này
giúp hạn chế tình trạng nghẽn băng thông cho chip xử lý USB trên mạch
Raspberry Pi with Camera Tutorial
3
Raspberry. Chiều dài cáp nối camera đã được tính toán cẩn thận khi vừa đạt
được độ dài cần thiết trong khi vẫn đảm bảo tốc độ truyền hình ảnh từ
module về RPi.
Raspberry Pi camera module đã gắn vào
Với Raspberry pi camera board bạn sẽ làm được gì?
Bạn có thể dùng camera và RPi để thiết lập hệ thống phát hiện chuyển động.
Hệ thống này hoạt động bằng cách sử dụng hình ảnh từ camera kết hợp với
chương trình motion xử lý hình ảnh và đưa ra lệnh điều khiển nếu phát hiện
thấy có chuyển động.
Camera cũng đặc biệt hữu ích với các bạn yêu thích làm phim, bạn có thể sử
dụng để quay những góc quay khó hoặc những cảnh quay độc mà chỉ với
máy quay gọn nhẹ nhất mới làm được. Ngoài ra, bạn có thể sử dụng camera
để quay các đoạn phim time-lapse (ghép nhiều hình lại với nhau) đang được
rất nhiều người dùng trên thế giới thực hiện.
Raspberry Pi with Camera Tutorial
4
Camera module được gắn hoàn chỉnh với RPi
Trước khi có thể sử dụng được raspberry pi camera board, bạn cần phải thiết
lập cấu hình hệ thống và kích hoạt chức năng camera trên RPi. II. Đặc điểm và tính chất.
Đây là một module camera CMOS 5MP với ống kính có khả năng chụp ảnh
cũng nhưng quay video với độ nét cao. Nó có thể chụp ảnh với độ phân giải
2592x1944, trong khi video được hổ trợ có thể xem được 1080p với 30FPS,
720P với 60 FPS, và 640x480 với 60FPS hoặc 90 FPS.
Raspberry Pi with Camera Tutorial
5
Kích thước của module camera chỉ có 25mm x 20mm x 9mm và chỉ nặng có
3grams. Điều này giúp nó trở thành thiết bị lý tưởng cho các projec như
camera an ninh bí mật, và thậm chí nó còn là camera trên board cho các xe
thám hiểm RC. Module này được hỗ trợ ở phiên bản mới nhất của Raspbian,
hệ điều hành chính của Raspberry Pi.
1.4 µm X 1.4 µm pixel with OmniBSI technology for high performance
(high sensitivity, low crosstalk, low noise)
Optical size of 1/4"
Automatic image control functions:
Automatic exposure control (AEC)
Automatic white balance (AWB)
Automatic band filter (ABF)
Automatic 50/60 Hz luminace detection
Automatic black level calibration (ABLC)
Raspberry Pi with Camera Tutorial
6
Programmable controls for frame rate , AEC/AGC 16-zone
size/position/weight control, mirror and flip, cropping, windowing, and
panning
Digital video port (DVP) parallel output interface
32 bytes of embedded one-time programmable (OTP) memory III. Lắp đặt.
Trước khi lắp đặt module camera, bản phải cần làm trước vài thứ với Pi, bắt
đầu với việc phải đảm bảo rằng hệ điều hành trên Pi của bạn đã được cập
nhật phiên bản mới nhất, việc này khá đơn giản, bạn chỉ cần đảm bảo Pi của
mình đang kết nối với internet, sau đó vào console và chạy các lệnh sau đây:
sudo apt-get update
việc này sẽ mất vài phút để hoàn thành. Khi đã hoàn thành chúng ta cần phải
chạy update bằng cách dùng lệnh sau:
sudo apt-get upgrade –y
Raspberry Pi with Camera Tutorial
7
ở bước này bạn cần phải điền password của người dùng root và việc cập nhật
sẽ mất một khoản thời gian để hoàn thành. Một khi nó đã hoàn tất chúng ta
chuyển sang việc chuẩn bị chạy module camera đã lắp đặt vào Pi.
Lệnh đầu tiên chúng ta cần chạy sẽ cài đặt gói git-core.
sudo apt-get install git-core -y
Raspberry Pi with Camera Tutorial
8
Sau đó chúng ta cần download bản “rpi-update”, việc này sẽ được
thực thi bằng lệnh sau:
sudo wget https://raw.github.com/Hexxeh/rpi-update/master/rpi-
update -O /usr/bin/rpi-update
Raspberry Pi with Camera Tutorial
9
Khi việc này hoàn tất chúng ta phải thay đổi các quyền trong bản “rpi-
update”, để thực hiện đều này chúng ta chỉ cần chạy một lệnh đơn giản như
sau:
sudo chmod +x /usr/bin/rpi-update
Mọi việc đã gần như hoàn tất. Giờ ta cần phải update cấu hình file
boot bằng các thêm các dòng sau ở phía dưới của file bằng lệnh:
sudo nano /boot/config.txt
thêm vào các dòng sau:
start_file=start_x.elf
fixup_file=fixup_x.dat Bạn cũng sẽ phải chắc rằng bộ nhớ GPU được cấp phát 128MP bằng dòng
lệnh: gpu_mem=128
Lưu lại và vẫn giữ nguyên tên file như ban đầu.
Raspberry Pi with Camera Tutorial
10
Sau đó dùng lệnh bên dưới và chọn lựa chọn thứ 5 để kích hoạt camera
module.
sudo raspi-config. IV. Làm việc với camera.
Sau đây là các lệnh điều khiển các chức năng cơ bản của module camera.
Usage: raspivid [options] 1) Các lệnh thông số hình ảnh:
-?, --help : This help information
-w, --width : Set image width . Default 1920
-h, --height : Set image height . Default 1080
-b, --bitrate : Set bitrate. Use bits per second (e.g. 10MBits/s would be
-b 10000000)
-o, --output : Output filename (to write to stdout, use '-o -')
-v, --verbose : Output verbose information during run
-t, --timeout : Time (in ms) to capture for. If not specified, set to 5s.
Zero to disable
-d, --demo : Run a demo mode (cycle through range of camera
options, no capture)
Raspberry Pi with Camera Tutorial
11
-fps, --framerate : Specify the frames per second to record
-e, --penc : Display preview image *after* encoding (shows
compression artifacts)
-g, --intra : Specify the intra refresh period (key frame rate/GoP size)
-sh, --sharpness : Set image sharpness (-100 to 100)
-co, --contrast : Set image contrast (-100 to 100)
-br, --brightness : Set image brightness (0 to 100)
-sa, --saturation : Set image saturation (-100 to 100)
-ISO, --ISO : Set capture ISO
-vs, --vstab : Turn on video stablisation
-ev, --ev : Set EV compensation
-ex, --exposure : Set exposure mode (see Notes)
-awb, --awb : Set AWB mode (see Notes)
-ifx, --imxfx : Set image effect (see Notes)
-cfx, --colfx : Set colour effect (U:V)
-mm, --metering : Set metering mode (see Notes)
-rot, --rotation : Set image rotation (0-359)
-hf, --hflip : Set horizontal flip
-vf, --vflip : Set vertical flip
2) Các lệnh thông số xem trước:
-p, --preview : Preview window settings
-f, --fullscreen : Fullscreen preview mode
-op, --opacity : Preview window opacity (0-255)
-n, --nopreview : Do not display a preview window
V. Quay video và chụp ảnh.
1) Quay phim:
Để quay phim và chụp ảnh bình thường với module camera, chúng ta phải
dùng terminal.
Trước tiên chúng ta phải đảm bảo rằng mọi thứ đang hoạt động, với module
camera đã được kết nối, ta sử dụng lệnh:
raspivid –d
lệnh này sẽ load một bản demo mà bạn có thể thấy trong cửa sổ terminal.
Nếu không có gì xảy ra và bạn bị báo lỗi hãy dùng lệnh raspi-config như
Raspberry Pi with Camera Tutorial
12
theo hướng dẫn ở các phần trước và phải chắc chắn rằng camera đã được
bật.
raspivid -w 1920 -h 1080 -fps 30 -t 30000 -o video.h264
raspivid – khở tạo camera và thiết lập chế độ video.
-w 1920 - h 1080 – độ phân giải của video.
-fps 30 – khung hình trên giây là 30.
-t 30000 – thiết lập thời gian tối đa cho video.
-o video.h264 – tên file xuất ra.
2) Chụp ảnh:
raspistill -o picture,jpg
raspistill – khởi tạo camera và thiết lập chế độ chụp ảnh.
-o picture.jpg – file xuất ra.
raspicam -tl 1000 -o file%d.jpg
cứ một giây sẽ chụp 1 ảnh, chỉ dừng lại khi ta nhấn “Ctrl-C”.
raspicam -ifx negative -o negative_image.jpg
lệnh này sẽ chụp hình ở chế độ ”negative”.
Raspicam
có đây đủ các hiệu ứng hình ảnh khi chụp ảnh.
Raspivid
Có đầy đủ các hiệu ứng hình ảnh khi quay video.
VI. Xử lý ảnh cơ bản.
Ở đây chúng ta sử dụng ngôn ngữ python.
Trước tiên ta phải thêm vào thư viện xử lý ảnh: from imgproc import *
Module imgproc cung cấp cho chúng ta một số chức năng cơ bản để sử dụng
webcam, truy cập dữ liệu là hình ảnh, và hiển thị hình ảnh lên màng hình.
Tiếp theo chúng ta sẽ bắt đầu bằng việc mở camera . Thêm vào ngay dưới
lệnh import: my_camera = Camera(320, 240)
Lệnh trên sẽ mở camera và thiết lập kích thước của ảnh là 320 x 240. my_image = my_camera.grabImage() Lấy một ảnh từ camera và lưu trữ nó.
# open a view setting the view to the size of the captured
image
my_view = Viewer(my_image.width, my_image.height, "Basic image
processing")
Raspberry Pi with Camera Tutorial
13
# display the image on the screen
my_view.displayImage(my_image)
# wait for 5 seconds, so we can see the changes
waitTime(5000) Hiển thị hình ảnh lên màng hình.
Code hoàn chỉnh sẽ là: from imgproc import *
# open the webcam
my_camera = Camera(320, 240)
# grab an image from the camera
my_image = my_camera.grabImage()
# open a view, setting the view to the size of the captured
image
my_view = Viewer(my_image.width, my_image.height, "Basic image
processing")
# display the image on the screen
my_view.displayImage(my_image)
# wait for 5 seconds, so we can see the image
waitTime(5000) Lưu lại thành một file có tên Basic.py.
Sau đó chạy các lệnh trên bằng lệnh sau trên terminal: python basic.py
Dữ liệu hình ảnh là một mảng hai chiều các điểm ảnh, một điểm ảnh là
tuple của 3 giá trị: liên quan đến 3 mày cơ bản là đỏ, xanh lá và xanh dương.
Bạn có thể truy cập vào các điểm ảnh bằng cách xử lý hình ảnh như một mảng, # get the value of the pixel at x position 120 and y position
64 in the image
pixel = my_image[120, 64]
# pixel is now a tuple of the red, green and blue of the
requested pixel
# An alternative method
red, green, blue = my_image[120, 64]
# red, green and blue now contain the intensity of the red,
green and blue
# channels respectively
Để thiết lập một điểm ảnh, bạn phải chỉ định vị trí của một bộ 3 tuple, hay
cẩn thận vì bạn chỉ có thể thiết lập giá từ 0 đến 255. # Set the value of pixel at x position 120 and y position 64
# to an orange colour
my_image[120, 64] = 255, 128, 0
Giờ chúng ta sẽ lấy màu đỏ là màu chủ đạo trong ảnh và chuyển nó sang
màu xanh: # iterate over ever pixel in the image by iterating over each
row and each column
Raspberry Pi with Camera Tutorial
14
for x in range(0, my_image.width):
for y in range(0, my_image.height):
# get the value of the current pixel
red, green, blue = my_image[x, y]
# check if the red intensity is greater than the green
if red > green:
# check if red is also more intense than blue
if red > blue:
# this pixel is predominantly red
# let's set it to blue
my_image[x, y] = 0, 0, 255
Lưu các đoạn code này vào file bên trên và chạy chúng cùng lúc.
VII. Tài liệu tham khảo:
http://www.tweaktown.com/guides/5617/raspberry-pi-camera-
module-review-and-tutorial-guide/index5.html
https://www.cl.cam.ac.uk/projects/raspberrypi/tutorials/robot/image_p
rocessing/