Professional Documents
Culture Documents
GV: Phm Ngc Hng B mn K thut My tnh Vin CNTT&TT- H BKHN email: hungpn@soict.hut.edu.vn
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
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
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,
Khng h tr c|c vi iu khin hiu nng thp H tr c kin trc c v{ khng c khi qun l b nh (MMU) C|c h thng c th dng chung toolchains, bootloader v{ kernel, c|c th{nh phn kh|c phi ring bit v{ tng thch vi tng h thng
Lp trnh nhng ARM-Linux
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
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
38
40
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
Bc 2: Bin dch v{ c{i t gdb client trn m|y HOST Bc 3: Bin dch v{ c{i t gdb server trn m|y TARGET (Chi tit xem trong ti liu hng dn ci t mi trng pht trin ng dng)
Lp trnh nhng ARM-Linux
45
46
47
48
Cu trc Makefile
Makefile cu th{nh t c|c target, variables v{ comments Target c cu trc nh sau:
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
Hello.c
include
Display.c
Display.h
void display(int index, char* str)
52
Compiler
Compiler
Hello.o Linker
Display.o
Hello
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
Device Drivers
61
63
65
66
67
Device files
/dev/leds
Device Drivers
Mini2440_leds.c
Phn cng
GPIO Port
68
70
71
Device files
/dev/buttons
Device Drivers
Mini2440_buttons.c
Phn cng
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
74
75
76
77
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
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;
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
Kim tra li: thm c|c m~ kim tra li v{o gi tin cho php ph|t hin li v{ yu cu truyn li gi tin Cung cp ngun in cho tt c c|c thit b
Lp trnh nhng ARM-Linux
100
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
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
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
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
Bo cho chng trnh khi thot khi terminal Khi ngi dng nhn Ctrl + C tt chng trnh Khi chng trnh chy lnh khng hp l Khi chng trnh nhn c lnh abort Khi chng trnh nhn c lnh kill (ng chng trnh)
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
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
M ngun to lung
144
Truyn d liu cho lung khi to lung qua tham s arg Chng trnh con thc thi lung nhn tham s v v x l
Lp trnh nhng ARM-Linux
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));
Trong : sender, receiver l{ con tr Qobjects, signal v{ slot l{ c|c tn h{m khng c tham s.
Cc macro SIGNAL() v SLOT() bin i tham s thnh string. VD: ng b gia 2 iu khin slider v{ spinBox
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
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
Stream sockets: Da trn giao thc TCP (Tranmission Control Protocol), l{ giao thc hng lung (stream oriented). Datagram sockets: Da trn giao thc UDP (User Datagram Protocol), l{ giao thc hng thng ip (message oriented)
Lp trnh nhng ARM-Linux
194
195
Bin dch v{ chy 2 chng trnh n{y (trn cng mt m|y local host, hoc 2 m|y ring bit kt ni mng)
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
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
S ha
H quyt nh
Cc bi ton x l nh
Cc k thut tin x l-mc thp
Image Enhancement Image Restoration
X l mc cao
Image Segmentation
Image Acquisition
Image Compression
Image Coding
Wavelet Analysis
Knowledge Base
Lp trnh nhng ARM-Linux
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)
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
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
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