Хизматчи сўзлар
asm
|
auto
|
break
|
Case
|
catch
|
char
|
class
|
const
|
continue
|
default
|
delete
|
do
|
double
|
else
|
enum
|
extern
|
Float
|
for
|
friend
|
goto
|
if
|
inline
|
Int
|
long
|
new
|
operator
|
private
|
protected
|
public
|
register
|
return
|
short
|
signed
|
sizeof
|
Static
|
struct
|
switch
|
template
|
this
|
throw
|
Try
|
typedef
|
union
|
unsigned
|
while
|
virtual
|
Void
|
volative
|
4. Дастурий таъминотни яратиш технологияси
Қуйида Qt C++ ва OpenCV библиотекаси ёрдамида тасвирларни қайта ишлаш технологиялари билан танишамиз.
Дастлаб OpenCV ҳақида.
OpenCV – (Open Computer Vision) — компьютерли (кўриш) графика алгоритмлари ёрдамида тасвирларни қайта ишлаш учун мўлжалланган маълумотлар турлари тўплами ва сонли алгоритмларни ифодаловчи очиқ код (матн)ли компьютер графикаси библиотекаси (кутубхонаси)дир.
OpenCV юқори даражали дастурлаш тили ҳисобланган C/C++ да ёзилган. Унда асосан қуйидаги алгоритмлар мавжуд: тасвирларни очиш (намойиш қилиш), уларни қайта ишлаш, эталонлар бўйича камерани калибрлаш (текшириб тўғрилаш), оптик бузилишларни тўғрилаш, ўхшашликни аниқлаш, объект силжишини таҳлил қилиш, объект шаклини аниқлаш ва уни кузатиш, 3D-қайта тиклаш, объектни бўлаклаш, харакатни таниб олиш ва ҳ.к.
Бу библиотека ўзининг очиқлиги ҳамда ўқув ва тижорат мақсадларида бепул фойдаланиш имкониятлари мавжудлиги ҳисобига ҳозирги кунда жуда ҳам оммалашиб кетган.
OpenCV библиотекасининг асосий модуллари қуйидагилар:
cxcore — ядро. У қуйидаги маълумотлар тузилмалари ва алгоритмларини ўз ичига олади:
- кўп ўлчамли сонли массивлар устида амаллар бажариш;
- матрицали алгебра, математик функциялар, тасодифий сонлар генератори;
- XML га/дан маълумотлар тизимини ёзиш/қайта тиклаш;
- 2D графиканинг асосий функциялари.
CV — тасвирларни қайта ишлаш ва компьютер графикаси модули. Унда қуйидаги функциялар мавжуд:
- тасвирлар устида асосий амаллар (фильтрлаш, геометрик алмаштиришлар, ранг фазоларини алмаштириш ва ҳ.к.);
- тасвирни таҳлил қилиш (фарқли белгиларни танлаш, морфология, контурларни топиш, гистограммалар);
- ҳаракат таҳлили, объектни кузатиш;
- объектларни, хусусан одам юзини аниқлаш;
- камерани калибрлаш, фазовий тузилмаларни қайта тиклаш элементлари.
Highgui — тасвир ва видеони киритиш/чиқариш ҳамда фойдаланувчи интерфейсини яратиш модули. Модулнинг имкониятлари:
- камера ва видеофайллардан видеотасвирни олиш, статик тасвирларни ўқиш/ёзиш;
- оддий UI ни ташкиллаш функцияси.
Cvaux — тажрибавий функциялар. Бу модулда қуйидаги имкониятлар мавжуд:
- фазовий кўриш: стерео калибрлаш, ўз-ўзини калибрлаш;
- стерео-мосликни излаш, графларда гурухлар;
- одам юзини топиш ва тасвирлаш.
CvCam — видеони олиш (қабул қилиш). Бу модул рақамли видео-камералардан видеотасвирларни қабул қилишга имконият яратади.
Ўз навбатида юқоридаги модулларга тегишли бўлган кўплаб функция ва процедуралар ёрдамида тасвирларни қайта ишлаш имкониятлари мавжуд. Ушбу ҳисоботда OpenCVнинг функция ва процедуралари билан тўлиқ танишмаймиз. Улар билан бир қатор адабиётлар [79] ёрдамида танишиш мумкин. Бажарилган ишлар негизида фойдаланилган OpenCVнинг бир қатор функция ва процедураларини қуйида қисқача кўриб чиқамиз. Таъкидлаб ўтамиз, OpenCV функцияларидан фойдаланиш Qt C++ дастурлаш воситаси (тили)да амалга оширилди.
Mat input_img, gray_img; ─ input_img ва gray_img номли матрица эълон қилинди.
cvtColor(input_img, gray_img, CV_BGR2GRAY); ─ input_img рангли тасвирнинг кулранг (grayscale) шакли gray_img номли тасвирга (матрицага) нусхаланади.
M.create(H, W, CV_8UC); ─ H қатор ва W та устундан иборат М кулранг матрица яратилади.
resize(face_gray1, face_gray2, Size(100,200), 0, 0, INTER_CUBIC); ─ face_gray1 тасвири 100x200 ўлчамда масштабланиб, face_gray2 тасвирига нусхаланади.
Mat image = imread(“d:\\inputface.jpg”); ─ d дискдаги inputface.jpg тасвир файли image матрицага юкланади.
imwrite("c:\\natija.jpg", face_gray); ─ face_gray матрица (тасвир) хотирага, яъни c дисска natija.jpg кўринишида сақланади.
imshow("1-Yuz", face_gray1); ─ "1-Yuz" номли ойнада face_gray1 матрица тасвири намойиш этилади.
cvWaitKey(); ─ дастур ихтиёрий тугма босилгунга қадар кутиб туради.
int f = face.at(row, col); ─ face номли кулранг матрицанинг кўрсатилган координатасидаги (бу ерда row - қатор, col - устун) ранг қийматини f ўзгарувчига ўзлаштирилади.
face.at(row, col)=255; ─ face номли кулранг матрицанинг кўрсатилган координатасига 255 - оқ ранг қиймати берилади.
OpenCV ни Qt Creator га боғлаш учун проектнинг .pro қуйидаги кодлар қўшилади:
INCLUDEPATH += d:\OpenCV_24\include
LIBS += -L"d:/OpenCV_24/bin"
LIBS += -lopencv_core2410 -lopencv_highgui2410 -lopencv_imgproc2410 -lopencv_features2d2410 -lopencv_objdetect2410
Do'stlaringiz bilan baham: |