• Tasvir tipi (Macro) Tasvir piksel tipi
  • Funksiya Ta’rifi
  • 3. OpenCV da chizish
  • Struktura O‘z ichiga oladi




    Download 6,2 Mb.
    bet22/25
    Sana18.05.2024
    Hajmi6,2 Mb.
    #241708
    1   ...   17   18   19   20   21   22   23   24   25
    Bog'liq
    Lokal binar obrazlar

    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 );



    Download 6,2 Mb.
    1   ...   17   18   19   20   21   22   23   24   25




    Download 6,2 Mb.