Struktura
|
O‘z ichiga oladi
|
Ifodalaydi
|
CvPoint
|
int x, y
|
Tasvirdagi nuqta
|
CvPoint2D32f
|
float x, y
|
R2 dagi nuqta
|
CvPoint3D32f
|
float x, y, z
|
R3 dagi nuqta
|
CvSize
|
int width, height
|
Tasvir hajmi
|
CvRect
|
int x, y, width, height
|
Tasvir bo‘lagi (qismi)
|
CvScalar
|
double val[4]
|
RGBA qiymatlar
|
Masalan, myImg tasvirida chap yuqori burchagi (5, 10), ya’ni x=5, y=10 va o‘ng quyi burchagi (20, 30) koordinatali to‘rtburchakni oq rangda chizish uchun quyidagicha dastur kodini yozish kerak bo‘ladi:
cvRectangle( myImg, cvPoint(5,10), cvPoint(20,30), cvScalar(255,255,255) );
OpenCV da quyidagicha tasvir turlari mavjud:
Tasvir tipi (Macro)
|
Tasvir piksel tipi
|
IPL_DEPTH_8U
|
Unsigned 8-bit integer (8u)
|
IPL_DEPTH_8S
|
Signed 8-bit integer (8s)
|
IPL_DEPTH_16S
|
Signed 16-bit integer (16s)
|
PL_DEPTH_32S
|
Signed 32-bit integer (32s)
|
IPL_DEPTH_32F
|
32-bit fl oating-point single-precision (32f)
|
IPL_DEPTH_64F
|
64-bit fl oating-point double-precision (64f)
|
Quyidagi jadvalda matritsa va tasvirning asosiy operatorlari keltirilgan.
Funksiya
|
Ta’rifi
|
cvAbs
|
Massiv (matritsa) dagi barcha elementlarning absolyut qiymati
|
cvAbsDiff
|
Ikkita massiv o‘rtasidagi farqlarning absolyut qiymati
|
cvAbsDiffS
|
Massiv va skalyar o‘rtasidagi farqlarning absolyut qiymati
|
cvAdd
|
Ikkita massivni elementlari bo‘yicha qo‘shish
|
cvAddS
|
Massiv va skalyarni elementlari bo‘yicha qo‘shish
|
cvAddWeighted
|
Ikkita massivni elementlari bo‘yicha vazn (ves)li qo‘shish (alfa qorishtirish)
|
cvAvg
|
Massivdagi barcha elementlarning o‘rtacha qiymati
|
cvAvgSdv
|
Massivdagi barcha elementlarning absolyut qiymati va standart chetlashishi
|
cvCalcCovarMatrix
|
n-o‘lchovli vektor to‘plamining kovariansini hisoblash
|
cvCmp
|
Ikkita massivning barcha elementlariga tanlangan taqqoslash operatorini qo‘llash.
|
cvCmpS
|
Skalyarga nisbatan massivga tanlangan taqqoslash operatorini qo‘llash.
|
cvConvertScale
|
Qiymatning tanlovli qayta o‘lchovi orqali massiv tipini o‘zgartirish.
|
cvConvertScaleAbs
|
Tanlovli qayta o‘lchov orqali absolyut qiymatdan keyin massiv tipini o‘zgartirish.
|
cvCopy
|
Bir massivdagi elementlarni boshqasiga nusxalash.
|
cvCountNonZero
|
Massivdagi nolga teng bo‘lmagan elementlarni hisoblash.
|
cvCrossProduct
|
Uch o‘lchovli ikkita vektorni ko‘paytirish.
|
cvCvtColor
|
Massiv rang kanallarini bir rang fazosidan boshqasiga o‘zgartirish (almashtirish).
|
cvDet
|
Kvadrat matritsaning determinantini hisoblash
|
cvDiv
|
Elementlar bo‘yicha bir massivni boshqasiga bo‘lish.
|
cvDotProduct
|
Ikkita vektorni skalyar (ichki) ko‘paytirish.
|
cvEigenVV
|
Kvadrat matritsaning xos son va xos vektorlarini hisoblash
|
cvFlip
|
Tanlangan o‘q bo‘yicha massivni to‘ntarish (oynali namoyish qilish).
|
cvGEMM
|
Umumlashgan matritsa ko‘paytirish.
|
cvGetCol
|
Massivning ustun kesimidan elementlarni nusxalash
|
cvGetCols
|
Massivning turli qo‘shni ustunlaridan elementlarni nusxalash.
|
cvGetDiag
|
Diagonal bo‘yicha massiv elementlarini nusxalash.
|
cvGetDims
|
Massiv o‘lchamini qaytaradi.
|
cvGetDimSize
|
Massivning barcha o‘lchamlari hajmini qaytaradi.
|
cvGetRow
|
Massivning qator kesimidan elementlarni nusxalash
|
cvGetRows
|
Massivning turli qo‘shni qatorlaridan elementlarni nusxalash.
|
cvGetSize
|
Ikki o‘lchovli massiv hajmini olish va uni CvSize shaklida qaytarish.
|
cvGetSubRect
|
Massiv bir bo‘lagi elementlarini nusxalash.
|
cvInRange
|
Massiv elementini boshqa ikkita massiv qiymatlari ichida mavjudligini tekshirish.
|
cvInRangeS
|
Massiv elementini boshqa ikkita skalyar o‘rtasida mavjudligini tekshirish.
|
cvInvert
|
Kvadrat matritsani invertlash (barcha element qiymatlari 255 dan ayriladi).
|
cvMahalonobis
|
Ikkita vektor orasidagi Maxalonobis masofasini hisoblash.
|
cvMax
|
Ikkita massivning elementlari bo‘yicha maxsimumlar operatsiyasi.
|
cvMaxS
|
Massiv va skalyar o‘rtasidaelementlari bo‘yicha maxsimumlar operatsiyasi.
|
cvMerge
|
Bir nechta bir kanalli tasvirlarni bitta ko‘p kanalli tasvirga birlashtirish.
|
cvMin
|
Ikkita matritsada elementlar bo‘yicha minimumlar operatsiyasi
|
cvMinS
|
Massiv va skalyar o‘rtasida elementlar bo‘yicha minimumlar operatsiyasi
|
cvMinMaxLoc
|
Massivda minimum va maksimum qiymatlarni topish.
|
cvMul
|
Ikkita massivni elementlar bo‘yicha ko‘paytirish.
|
cvNot
|
Massivni har bir elementini bitli invertlash.
|
cvNorm
|
Ikkita massiv o‘rtasidagi normalangan korrelyasiyani hisoblash.
|
cvNormalize
|
Massivdagi elementlarni biror songacha nomallash.
|
cvOr
|
Ikkita massivning elementlari bo‘yicha “YOKI” (OR) bit-darajasi.
|
cvOrS
|
Massiv va skalyarning elementlari bo‘yicha “YOKI” (OR)bit-darajasi.
|
cvReduce
|
Berilgan amal bo‘yicha ikki o‘lchovli massivni vektorga aylantirmoq.
|
cvRepeat
|
Bir massiv majmuini boshqasiga qurish.
|
cvSet
|
Massivning barcha elementlariga berilgan son qiymatini o‘rnatish.
|
cvSetZero
|
Massivning barcha elementlariga 0 qiymati o‘rnatiladi (beriladi).
|
cvSetIdentity
|
Massivning barcha elementlariga diagonal bo‘yicha 1, qolganiga esa 0 qiymati beriladi.
|
cvSolve
|
CHiziqli tenglamalar sistemasini echish.
|
cvSplit
|
Ko‘p kanalli massivni turli bir kanalli massivlarga bo‘lish.
|
cvSub
|
Bir massivdan ikkinchisini elementlar bo‘yicha ayirish.
|
cvSubS
|
Skalyarni massivdan elementlar bo‘yicha ayirish.
|
cvSubRS
|
Massivni skalyardan elementlar bo‘yicha ayirish.
|
cvSum
|
Massivni barcha elementlari summasi (yig‘indisi).
|
cvSVD
|
Ikki o‘lchovli massivning yagona bo‘linish qiymatini hisoblash.
|
cvSVBkSb
|
Teskari almashtirishning yagona qiymatini hisoblash.
|
cvTrace
|
Massiv belgilarini hisoblash.
|
cvTranspose
|
Massivning barcha elementlarini diagonal bo‘yicha o‘zgartirish.
|
cvXor
|
Ikkita massiv elementlari bo‘yicha XOR (istisno YOKI) bit – darajasi.
|
cvXorS
|
Massiv va skalyar o‘rtasidagi massiv elementlari bo‘yicha XOR bit – darajasi.
|
cvZero
|
Massivning barcha elementlariga 0 qiymati beriladi.
|
3. OpenCV da chizish
Ba’zan tasvir ustida biror figurani chizish kerak bo‘lib qoladi. OpenCV da to‘g‘ri chiziq, to‘rtburchak, aylana va shu kabi geometrik figuralarni chizish funksiyalari mavjud. Ular bilan quyida tanishamiz.
To‘g‘ri chiziq:
void cvLine( CvArr* array, CvPoint pt1, CvPoint pt2, CvScalar color,
int thickness = 1, int connectivity = 8 );
Bu erda CvArr – tasvir, pt1 – chiziqning boshlanish koordinatasi, pt2 – chiziqning yakunlanish koordinatasi, color – chiziq rangi, thickness – chiziq qalinligi, connectivity – chiziq turi.
To‘g‘ri to‘rtburchak:
void cvRectangle( CvArr* array, CvPoint pt1, CvPoint pt2, CvScalar color, int thickness = 1 );
Aylana:
void cvCircle (CvArr* array, CvPoint center, int radius, CvScalar color, int thickness = 1, int connectivity = 8);
Bu erda center – aylana markazi, radius – aylana radiusi.
Ellips:
void cvEllipse( CvArr* img, CvPoint center, CvSize axes, double angle,
double start_angle, double end_angle, CvScalar color,
int thickness = 1, int line_type = 8 );
Bu erda axes – o‘q hajmi, start_angle – boshlang‘ich burchak, end_angle – oxirgi burchak.
Poligonlar:
Poligonlarni quyidagi uch xil funksiya yordamida chizish mumkin.
void cvFillPoly( CvArr* img, CvPoint** pts, int* npts, int contours, CvScalar color, int line_type = 8 );
void cvFillConvexPoly( CvArr* img, CvPoint* pts, int npts, CvScalar color, int line_type = 8 );
void cvPolyLine( CvArr* img, CvPoint** pts, int* npts, int contours, int is_closed,
CvScalar color, int thickness = 1, int line_type = 8 );
Matnlar:
void cvPutText( CvArr* img, const char* text, CvPoint origin, const CvFont* font, CvScalar color );
|