Professional Documents
Culture Documents
(Codientu - Org) File Goc 772012
(Codientu - Org) File Goc 772012
Ni dung
Chng 1. Gii thiu lp trnh h nhng
Chng 2. Lp trnh v{o ra c bn
Chng 3. Lp trnh v{o ra n}ng cao
Chng 4. C|c k thut lp trnh n}ng cao
Chng 5. Lp trnh device driver trn Linux
Chng 6. Lp trnh nn tng QT
Chng 7. Lp trnh mng trn Linux nhng
Chng 8. Lp trnh x l nh trn nn nhng
Chng 1
Gii thiu
Lp trnh h nhng
Ni dung chng 1
1.1. Gii thiu v lp trnh h nhng
1.2. Gii thiu KIT FriendlyArm micro2440
1.3. H iu h{nh nhng Linux
1.4. Mi trng lp trnh KIT FriendlyArm 2440
L do:
ARM ? > 90% th phn thit b nhng,
l{ dng vi iu khin hiu nng cao.
Embedded Linux ? M~ ngun m, kh nng can thip, hiu
s}u h thng. Nhiu OS kh|c (iOS, Android) da trn Linux
kernel
10
11
12
13
14
15
16
S phn cp h thng
17
18
19
20
21
22
23
Embedded Linux
H tr rt nhiu kin trc vi x l (c 32 bit v{ 64
bit)
Intel X86, ARM, PowerPC, MIPS, AVR32,
24
25
26
27
28
Ci t t mi trng Windows
Cng c
Phn mm HyperTerminal: kt ni vi KIT
micro2440 qua cng COM
Phn mm DNW: kt ni vi KIT micro2440 qua
cng USB
C|ch thc
Phn mm HyperTerminal (giao tip vi BIOS trn
Nor Flash qua cng rs232) truyn c|c lnh iu
khin
Phn mm DNW trao i file
Lp trnh nhng ARM-Linux
29
Ci t t mi trng Linux
Cng c:
Phn mm minicom: kt ni vi KIT micro2440
qua cng COM
Phn mm usbpush: kt ni vi KIT micro2440 qua
cng USB
C|ch thc
Phn mm minicom cho php giao tip serial,
truyn c|c lnh iu khin
Phn mm usbpush np file xung KIT
30
Demo
<Xem hng dn chi tit trong ti liu
hng dn ci t v s dng KIT
micro2440>
Lp trnh nhng ARM-Linux
31
32
33
Demo
<Xem hng dn chi tit trong ti liu
hng dn ci t v s dng KIT
micro2440>
Lp trnh nhng ARM-Linux
34
35
36
37
38
39
40
41
42
Ci t phn mm gFTP
Bc 1: Ci t phn mm gFTP (nu cha c)
G lnh: sudo apt-get install gftp
M kt ni
Lp trnh nhng ARM-Linux
43
Kt ni s dng gFTP
44
45
46
47
48
49
Cu trc Makefile
Makefile cu th{nh t c|c target, variables v{
comments
Target c cu trc nh sau:
target: dependencies
[tab] system command
target: make target
Dependencies: c|c th{nh phn ph thuc (file m~
ngun, c|c file object)
System command: c|c c}u lnh (lnh bin dch, lnh
linux)
Lp trnh nhng ARM-Linux
50
VD 1: Makefile n gin
CC=arm-linux-gcc
all: Hello.c
$(CC) g o Hello Hello.c
clear:
rm Hello
Bin dch chng trnh: make all
Xa file sinh ra trc : make clear
51
VD 2: Makefile lin kt
include
Hello.c
Display.c
Display.h
void display(int index, char* str)
52
Display.c
Compiler
Compiler
Hello.o
Display.o
Linker
Hello
53
VD 2: Makefile lin kt
CC=arm-linux-gcc
OUTPUT=Hello
all:Hello.o display.o
$(CC) -o $(OUTPUT) Hello.o display.o
Hello.o:Hello.c
$(CC) -c Hello.c
display.o:display.c
$(CC) -c display.c
54
Bc 3: quan s|t kt qu
Lp trnh nhng ARM-Linux
55
Tho lun
56
Chng 2
Lp trnh vo ra c bn
57
Mc tiu chng 2
Sau khi kt thc chng n{y, sinh vin c th
Nm c nguyn tc lp trnh giao tip v{o ra c
bn trn h iu h{nh Linux nhng
Lp trnh giao tip thit b (ghp ni GPIO) vi
driver ~ c (led, button)
Bit c|ch lp trnh giao tip GPIO m rng da trn
giao din sysfs (gpiolib)
58
Ni dung bi hc
2.1. C ch lp trnh giao tip thit b
2.2. Lp trnh iu khin led n
2.3. Lp trnh giao tip nt bm
2.4. Lp trnh giao tip GPIO m rng
59
60
User Space
Cc hm giao tip chun:
Device files
Device Drivers
open
close
read
write
ioctl
Kernel Space
Phn cng
61
62
63
64
65
66
67
Device files
Device Drivers
Phn cng
leds.c
/dev/leds
Hm giao tip:
open
close
ioctl
Mini2440_leds.c
GPIO Port
68
69
70
71
Device files
Device Drivers
Phn cng
Buttons.c
Hm giao tip:
open
close
read
/dev/buttons
Mini2440_buttons.c
GPIO Port
72
Lp trnh ghp ni nt bm
buttons_fd=open(/dev/buttons,0)
buttons_fd: file id
/dev/buttons: device file
read(buttons_fd,current_buttons,sizeof(curren
t_buttons)
c trng th|i c|c nt bm
close(buttons_fd): ng file
M~ ngun driver cho nt bm
linux2.6.32.2/drivers/char/mini2440_buttons.c
Lp trnh nhng ARM-Linux
73
74
75
76
77
78
Tho lun
79
Chng 3
80
Mc tiu chng 3
Sau khi kt thc chng n{y, sinh vin c th
Nm c chun RS232
Lp trnh giao tip chun RS232 trn kit nhng
Micro2440
Nm c chun giao tip USB
Lp trnh ghp ni USB Joystick qua cng USB
Lp trnh giao tip ADC
81
Ni dung bi hc
3.1. Gii thiu chun RS232
3.2. Lp trnh giao tip chun RS232
3.3. Gii thiu chun USB
3.4. Lp trnh giao tip USB Joystick
3.5. Lp trnh giao tip ADC
82
Mc in |p ng truyn
Chun u ni trn m|y tnh PC
Khun dng khung truyn
Tc truyn
Kch bn truyn
83
Chun RS232
Mc in |p ng truyn (Chun RS-232C)
84
Chun RS232
Chun u ni trn PC
UART
UART
Chun RS232
Chun u ni trn PC
Chn 1 (DCD-Data Carrier Detect):
ph|t hin tn hiu mang d liu
Chn 2 (RxD-Receive Data): nhn d
liu
Chn 3 (TxD-Transmit Data): truyn
d liu
Chn 4 (DTR-Data Terminal Ready):
u cui d liu sn s{ng
Ch}n 5 (Signal Ground): t ca tn
hiu
Chn 6 (DSR-Data Set Ready): d liu
sn s{ng
Chn 7 (RTS-Request To Send): yu
cu gi
Chn 8 (CTS-Clear To Send): Xa
gi
Chn 9 (RI-Ring Indicate): bo chung
86
Chun RS232
Khun dng khung truyn
PC truyn nhn d liu qua cng ni tip RS-232 thc
hin theo kiu khng ng b (Asynchronous)
Khung truyn gm 4 th{nh phn
1 Start bit (Mc logic 0): bt u mt gi tin, ng b xung
nhp clock gia DTE v{ DCE
Data (5,6,7,8 bit): d liu cn truyn
1 parity bit (chn (even), l (odd), mark, space): bit cho php
kim tra li
Stop bit (1 hoc 2 bit): kt thc mt gi tin
87
Chun RS232
Kch bn truyn
Khng c bt tay (none-handshaking): m|y thu c kh
nng c c|c k t thu trc khi m|y ph|t truyn k t
tip theo
Chun RS232
Kch bn truyn
90
Khai bo th vin
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h> // UNIX standard function
#include <fcntl.h> // File control definitions
#include <errno.h> // Error number definitions
#include <termios.h> // POSIX terminal control
#include <time.h> // time calls
91
Bc 1: M cng
S dng lnh m file
int fd = open ("/dev/ttySAC0", O_RDWR);
Fd >0 nu m file th{nh cng
Fd<0 nu m file tht bi
92
Bc 2: Thit lp tham s
S dng cu trc termios
struct termios port_settings;
93
Bc 3: c, ghi cng
c cng: s dng lnh c file
n=read(fd,&result,sizeof(result));
N: s k t c c
Result: cha kt qu
Ghi cng: s dng lnh ghi file
n=write(fd,Hello World\r",12);
N:s k t ~ ghi
Fd: file id (c c t thao t|c m file th{nh cng)
94
Bc 4: ng cng
ng cng: s dng lnh ng file
close (fd);
Fd: file ID (c c t thao t|c m file th{nh cng)
95
Demo
Lp trnh nhng ARM-Linux
96
97
98
99
100
101
102
Endpoint
Endpoint ca thit b:
Ch c thit b mi c Endpoint, Host khng c
Endpoint
Endpoint l{ b m (gi, nhn)
C|c Endpoint c |nh a ch v{ x|c nh hng
In Endpoint: b m gi
Out Endpoint: b m nhn
103
Pipes
Pipes: kt ni Endpoint ca thit b ti Host
Phi thit lp pipe trc khi mun trao i d liu
Host thit lp pipe trong qu| trnh im danh
(Enumeration)
C|c Pipe s c hy khi thit b ngt kt ni khi
bus
Tt c c|c thit b u c mt ng ng iu khin
(control pipe) mc nh s dng Endpoint 0
104
Device Classes
C|c thit b ngoi vi cng chc nng (chut, m|y in, nh
flash) c c tnh truyn nhn d liu chung -> H iu
h{nh c th cung cp driver chung cho c|c nhm, c|c nh{
sn xut thit b khng cn vit driver ring.
C|c nhm thit b ~ c nh ngha
Audio
Communication devices
Human interface (HID)
IrDA Bridge
Mass Storage
Cameras and scanners
Video
Lp trnh nhng ARM-Linux
105
106
Cc kiu truyn
Truyn iu khin: iu khin phn cng, c|c
yu cu iu khin c truyn. Chng l{m vic
vi mc u tin cao v{ vi kh nng kim so|t li
t ng. Tc truyn ln v c n 64 byte trong
mt yu cu (request) c th c truyn.
Truyn ngt: c|c thit b, cung cp mt lng d
liu nh, tun ho{n chng hn nh chut, b{n phm
u s dng kiu truyn n{y. H thng s hi theo
chu k, chng hn 10ms mt ln xem c c|c d liu
mi gi n.
Lp trnh nhng ARM-Linux
107
Cc kiu truyn
Truyn theo khi: khi c lng d liu ln cn
truyn v{ cn kim so|t li truyn nhng li khng
c yu cu thc p v thi gian truyn th d liu
thng c truyn theo khi. VD: m|y in, m|y
qut
Truyn ng thi: khi c khi lng d liu ln
vi tc d liu ~ c quy nh, v d nh card
}m thanh. Theo c|ch truyn n{y mt gi| tr tc
x|c nh c duy tr. Vic hiu chnh li khng
c thc hin v nhng li truyn l t cng
khng g}y nh hng |ng k.
Lp trnh nhng ARM-Linux
108
109
Cc nt chc
nng: 1, 2, 3, 4,
L1, L2, R1, R2,
Select, Start
110
Cu trc JOYINFO
wXpos
wXpos=0 -> nt sang tr|i c bm
wXpos=65535 -> nt sang phi c bm
wYpos
wYpos=0 -> nt ln c bm
wYpos=65535 -> nt xung c bm
111
112
Cu trc js_event
Ni dung c|c trng d liu
Time: nh~n thi gian ph|t sinh s kin
Value: gi| tr, ph thuc v{o nt chc nng hay nt
chnh hng
Nt chc nng: 0/1
Nt chnh hng: -32768 -> 32767
113
Lp trnh kt ni joystick
M file thit b:
joystick_fd = open(JOYSTICK_DEVNAME,
O_RDONLY | O_NONBLOCK);
JOYSTICK_DEVNAME: tn ca file thit b, thng
l /dev/input/js0
O_RDONLY | O_NONBLOCK: m file ch c ch
NONBLOCK
114
Lp trnh kt ni joystick
c d liu t thit b (khi c pht sinh s
kin)
bytes = read(joystick_fd, jse, sizeof(*jse));
joystick_fd: con tr file c c khi m file
jse: bin cu trc js_event
bytes: Tng s file c c, nu s n{y bng kch
thc ca cu trc js_event th qu| trnh c th{nh
cng
115
Demo
Lp trnh nhng ARM-Linux
116
Kt qu demo
C|c s kin khi khi to thit b
117
Kt qu demo
C|c s kin khi ngi dng nhn c|c nt
118
QT Joystick Demo
119
120
121
122
123
Chng 4
124
Mc tiu chng 4
Sau khi kt thc chng n{y, sinh vin c th
Nm c kh|i nim tin trnh (process), quan h
gia c|c tin trnh
Trnh b{y c c ch s dng signal giao tip
gia c|c tin trnh
Lp trnh s dng k thut a tin trnh
Trnh b{y kh|i nim lung
Lp trnh ng dng a lung
125
Ni dung
4.1. Tin trnh (process)
4.2. C ch s dng signal
4.3. Lp trnh giao tip a tin trnh
4.4. Lung (thread)
4.5. Lp trnh ng dng a lung
126
127
ls e o pid,ppid,command
Lp trnh nhng ARM-Linux
128
PID, PPID
Ly v PID: s dng hm getpid()
Ly v PPID: s dng hm getppid()
Hm getpid() v getppid() tr gi tr kiu pid_t (bn
cht l kiu int)
129
kill PID
130
To tin trnh mi
Cch 1: s dng h{m system
131
To tin trnh mi
Cch 2: s dng h{m fork v{ exec
132
133
L do gi SIGNAL
SIGHUP
SIGINT
SIGILL
SIGABRT
SIGKILL
SIGUSR1
SIGUSR2
134
Gi SIGNAL ti process
Cch 1: s dng shell command
kill [-SIGNAL_TYPE] PID
Cch 2: s dng h{m kill trong chng trnh, cho
php process n{y gi signal ti process kh|c
kill(PID, SIGNAL_TYPE)
135
136
V d
Bt v{ x l signal c gi ti mt tin trnh
(SIGTERM v SIGINT)
137
killsignal.c
138
V d: killsignal.c (tip)
139
Demo
Lp trnh nhng ARM-Linux
140
141
To lung
Truyn tham s cho lung
Nhn gi| tr tr v t lung
Tt lung
142
To lung
Khai b|o th vin: pthread.h
H{m to lung: pthread_create
thread: thread id
attr: cc thuc tnh ca lung, mc nh NULL
start_routine: hm thc thi trong lung
arg: cc tham s truyn cho lung
143
M ngun to lung
144
145
146
Tt lung
S dng h{m pthread_cancel:
147
M ngun tt lung
148
Tho lun
149
Chng 5
150
Ni dung
5.1. Gii thiu v Kernel Module
5.2. C ch x}y dng Device Driver
5.3. Tm hiu, ty chnh mt s driver ~ c
5.4. X}y dng usb device driver
151
152
Kernel Module
C|c bc thm mt kernel module v{o h thng
Vit m~ ngun: ch s dng c|c th vin c cung
cp bi kernel, khng s dng c c|c th vin
bn ngoi
Bin dch m~ ngun module
C{i t module: dng lnh
insmod Tn_Module.ko
G module: dng lnh rmmod Tn_Module
Xem c|c thng tin log: s dng System Log Viewer
153
154
155
156
157
V d: Hello Driver
158
Demo
Lp trnh nhng ARM-Linux
159
V d
V d 1: Chnh sa driver sn c
Chnh sa driver iu khin led, b sung thm hm
write iu khin trc tip tt c c|c led n trn
KIT
160
Tho lun
161
Bi s 6
Lp trnh nn tng QT
162
Mc tiu bi hc s 6
Sau khi kt thc b{i hc n{y, sinh vin c th
Nm c c|c vn c bn, c trng ca nn
tng Qt
C{i t Qt Creator (Qt SDK) trn m|y ph|t trin
(Ubuntu)
L{m quen vi lp trnh ng dng giao din ha
s dng nn tng Qt
C{i t Qt Everywhere ph|t trin ng dng cho
nn tng Arm Embedded Linux
163
Ni dung bi hc
6.1. Gii thiu QT
6.2. C{i t mi trng ph|t trin Qt
6.3. L{m quen vi lp trnh QT
6.4. C{i t Qt Everywhere (Qt Embedded)
164
165
Gii thiu QT
Qt cho php vit ng dng mt ln v{ bin dch cho
trn nhiu nn tng h iu h{nh khc nhau m khng
phi vit li m~. Tuy nhin, m~ ngun cn c bin
dch trn nn tng m{ mun ng dng c thc thi.
Lp trnh Qt theo chun C++.
166
Gii thiu QT
Qt Framework bao gm:
a cross-platform class library (Th vin c|c lp hng
i tng)
integrated development tools (C|c cng c ph|t trin
tch hp)
a cross-platform IDE. (Mi trng ph|t trin ng dng)
167
QT c s dng rng ri
168
Kin trc Qt
169
6.2. Ci t Qt SDK
C{i t Qt SDK trn m|y ph|t trin (Linux,
Windows, MacOS)
File c{i t
qt-sdk-linux-x86-opensource-2010.05.1.bin
(http://qt.nokia.com/downloads)
Thc thi file c{i t:
$ ./qt-sdk-linux-x86-opensource-2010.05.1.bin
i qu| trnh c{i t din ra th{nh cng, mc nh
th mc c{i t cha ti
$HOME/qtsdk-2010.01/qt/bin
Lp trnh nhng ARM-Linux
170
Ci t Qt SDK
Sau khi c{i t xong Qt SDK, cng c Qt Creator cho
php ph|t trin ng dng vi la chn mc nh
bin dch trn m|y tnh Linux. bin dch cho
ng dng thc thi trn KIT FriendlyArm
(Embedded Linux) cn c{i t Qt Everywhere
171
172
173
174
Cc iu khin (widgets) c bn
QLabel
QPushButton
QLineEdit
QTextEdit
QSpinBox
QComboBox
Qslider
V.v
175
176
177
C ch signals - slot
C ch event handler
X l c|c s kin (s kin tng t|c ngi dng,
s kin ca h thng)
Cho php to c|c kt ni (connections) gia s
kin (signals) vi h{m x l (slot)
C 2 c|ch to:
To t ng (wizard)
To bng tay (manual, hand-code)
178
Minh ha c ch signals/slot
To bng code (dng phng thc Qobject::connect)
179
Minh ha c ch Signals/Slot
To bng code
connect(sender, SIGNAL(signal), receiver, SLOT(slot));
180
Minh ha c ch Signals/Slot
To t ng (wizard): chut phi v{o i tng mun
x l s kin, chn Go to slot, tm slot l{ h{m x l s
kin tng ng mun dng.
V d x l s kin nt bm (QPushButton)
181
182
183
Qt Documentations
Documentation in Qt Assistant (or QtCreator)
Qts examples
Qt developer network:
http://developer.qt.nokia.com/
Qt Center Forum:
http://www.qtcentre.org
184
6.4. Ci t Qt Everywhere
Bc 1: Ci t QT Embedded (QT Everywhere)
(Xem hng dn chi tit km theo)
Bc 2: Copy cc file th vin cn thit xung KIT
3 th vin quan trng (VD: copy xung th mc
/opt/qte/lib)
libQtCore.so.4
libQtGui.so.4
libQtNetwork.so.4
185
186
187
Tho lun
188
Bi s 7
189
Mc tiu bi hc s 7
Sau khi kt thc b{i hc n{y, hc vin c th
X}y dng ng dng giao din, s dng c|c iu
khin (widgets)
Vn dng k thut qun l layout sp xp c|c
iu khin trn form
Vn dng c ch x l s kin (signal/slot)
Lp trnh socket trn nn Linux nhng
Lp trnh mng vi Qt
190
Ni dung bi hc
7.1. Lp trnh socket trn Linux nhng
7.2. Th vin lp trnh mng trn Qt
7.3. Lp trnh ng dng ChatRoom
7.4. Lp trnh ng dng gi/nhn nh qua socket
191
192
193
194
195
196
Demo
Lp trnh giao tip socket gia KIT micro 2440 v{
PC
Demo
Lp trnh nhng ARM-Linux
197
198
199
200
Tho lun
201
Chng 8
Lp trnh x l nh trn nn
nhng
202
Ni dung
8.1. Tng quan v x l nh
8.2. Gii thiu OpenCV
8.3. C|c php bin i nh c bn
203
M hnh h thng x l nh
Lu tr
Camera
Thu nhn
nh
S ha
Phn tch
nh
Sensor
Lu tr
i snh
Nhn dng
H
quyt nh
Cc bi ton x l nh
Cc k thut tin x l-mc thp
Image
Acquisition
Image
Enhancement
Image
Restoration
Image
Compression
Image
Coding
Morphological
Image Processing
Wavelet
Analysis
Knowledge Base
Lp trnh nhng ARM-Linux
X l mc cao
Image
Segmentation
Representation
& Description
Recognition &
Interpretation
Cc bi ton x l nh
Thu nhn nh, s ha nh (image aquisition)
H thng chp nh, tn hiu nh
H thng s ha nh: C|c phng ph|p ly mu,
lng t ha
Cc bi ton x l nh
Phn tch nh
Trch chn c trng (feature extraction)
Biu din, m t nh (image representation, image
description)
Ph}n lp nh (image classification)
Nhn dng nh (image recognition)
M ha, nn nh
C|c phng ph|p nn nh, c|c chun nn nh
ng dng x l nh
Hiu ng panorama
KINECT
http://opencvlibrary.sourceforge.net
Lp trnh nhng ARM-Linux
Th vin OpenCV
Ci t th vin OpenCV
Bc 1: C{i t th vin OpenCV trn m|y host
(Linux Desktop)
Bc 2: Bin dch cho, c{i t th vin OpenCV
bin dch cho c|c ng dng trn KIT
Chi tit: Xem t{i liu hng dn c{i t
Tch hp OpenCV v QT
Khai b|o trong file .pro ca d |n QT: thm c|c
dng lnh sau v{o cui file .pro
Tch hp OpenCV v QT
Khai b|o c|c th vin s c s dng: ng
dng linh hot, to file global.h cha include ti c|c
th vin ca OpenCV
c nh v hin th
Cc kiu d liu c bn trong OpenCV
cvArr
cvMat
IplImage
CvCapture
226
c nh v hin th
Hm c nh: cvLoadImage
Tham s u v{o: ng dn ti file nh
Tham s u ra: d liu nh lu theo kiu d liu
con tr ca IplImage
V d:
IplImage* img = cvLoadImage("/home/oto.jpeg" );
Kt ni Camera
Hm m file video:
H{m m webcam:
CvCapture* capture=cvCreateCameraCapture(0)
Kt ni Camera
Bc 1: m kt ni vi Camera mc nh
CvCapture* camera = cvCreateCameraCapture(0);
Bc 2: ly v tng Frame nh ca camera
IplImage* preImage=cvQueryFrame(camera);
Bc 3: gii phng i tng camera
cvReleaseCapture(&camera);
229
230
x
pixel
Original picture
f(x, y)
Digital image
I[i, j] or I[x, y]
nh s
Mt nh s thng c biu din nh mt ma
trn c|c im nh
Trong mi im nh c th c biu din bng
1 bit (nh nh ph}n)
8 bit (nh a mc x|m)
16, 24 bit (nh m{u)
nh a mc xm (Grayscale image)
nh a mc xm l nh c s chuyn dn mc xm t
trng sang en.
S dng 8 bit biu din mc xm
233
234
Chuyn nh mu -> a mc xm
Hm chuyn nh mu sang nh a mc xm:
Bc 1: To 1 nh trng (cha c d liu) nh dng nh
a mc xm
IplImage *grayimage = cvCreateImage( cvSize( colorimg>width, colorimg->height ), IPL_DEPTH_8U, 1 );
Bc 2: Chuyn i nh mu sang a mc xm
cvCvtColor( img, grayimage, CV_RGB2GRAY );
235
8.3.3. Histogram
Biu ny n gin cho chng ta bit s im
nh (pixel) trong mt nh a mc xm c mt
gi tr mc xm tng ng.
Thng s: s bins (=256 vi nh a mc xm)
237
Histogram
nh ti
238
Histogram
nh sng
239
Hm tnh Histogram
Cu trc CvHistogram: lu c|c thng tin v ph}n
b Histogram ca nh
Hm tnh Histogram
Bc 1: S dng h{m cvCreateHist khi to cu
trc CvHistogram chun b cha kt qu
Dims: s chiu ca Histogram
Sizes: s lng bins
Type: nh dng d liu (thng s dng
CV_HIST_ARRAY)
Ranges: Di c|c khong gi| tr tnh Histogram
Hm tnh Histogram
Bc 2: Tnh Histogram s dng h{m cvCalcHist
Image: nh cn tnh Histogram
Hist: lu kt qu tnh Histogram
Accumulate: ty chn tch ly, cho php tnh
Histogram t nhiu nh
Mask: x|c nh phm vi c|c pixel s c s dng
tnh Histogram, mc nh tnh to{n nh
Hm tnh Histogram
Bc 3: V ph}n b Histogram
Bc 4: Gii phng b nh s dng h{m
cvClearHist
245
Dn tng phn
246
247
Cn bng Histogram
Cng thc thc hin:
bk = (bmax bmin)
Trong bmin, bmax l nhng gi tr c chn, pi l
xc sut xut hin gi tr mc xm i trong nh ban
u, vi i [amin, amax]
248
Hm cn bng Histogram
S dng h{m cvEqualizeHist
Src: ma trn nh gc
Dst: ma trn nh sau khi ~ c}n bng Histogram
251
252
253
Kt qu
(S dng ngng cng)
Kt qu
(S dng ngng thch nghi)
254
Ph lc A Cc lnh Linux
Lnh hin th thng tin c|c file trong th mc
ls al //hin th danh s|ch vi y thng tin
Lnh thay i quyn cho mt file hay th mc
chmod
vd: chmod +x Filename //Cp thm quyn thc thi
Lnh xem danh s|ch c|c file thit b
ls al /dev
Lnh xem tt c c|c tin trnh ang chy
ps
Lp trnh nhng ARM-Linux
258
Ph lc A Cc lnh Linux
Lnh c{i t mt phn mm t kho cha ca Linux
sudo apt-get install Tn_gi_phn_mm
Xem danh s|ch c|c major id tng ng vi c|c
device driver ang active
cat /proc/devices
Tm kim file cha mt dng text bt k
grep
vd: grep r Hello .
//Tm tt c c|c file v{ hin th ra c|c dng cha t kha
//Hello trong th mc hin ti v{ c|c th mc con
259
260