Optical စီးဆင်းမှုခြေရာခံခြင်းသည်ကွန်ပျူတာရူပါရုံတွင်အဓိကနည်းပညာတစ်ခုဖြစ်သည်။ ရွေ့လျားနေသောအရာဝတ်ထုများ၏အနေအထားနှင့်မြန်နှုန်းကိုခြေရာခံရန်အသုံးပြုနိုင်သည်။ ၎င်းကိုဗီဒီယိုစောင့်ကြည့်ခြင်း, အသိဉာဏ်စိစစ်မှုနှင့်အခြားအခြေအနေများတွင်ကျယ်ကျယ်ပြန့်ပြန့်အသုံးပြုသည်။ ဤဆောင်းပါးသည် optical tracking function ကိုအကောင်အထည်ဖော်ရန် Opencv စာကြည့်တိုက်နှင့်ပေါင်းစပ်ထားသော PHP ဘာသာစကားကိုမည်သို့အသုံးပြုရမည်ကိုသရုပ်ပြပါမည်။
ပထမဆုံး OpenCV စာကြည့်တိုက်ကို install လုပ်ရန်နှင့် PHP ၏ oppencv extension ကိုစနစ်တကျအလုပ်လုပ်ရန်သေချာစေပါ။ installation နှင့် configuration များအတွက် opencv နှင့် php extensions ၏တရားဝင်စာရွက်စာတမ်းများကိုဖတ်ရှုပါ။
optical စီးဆင်းမှုခြေရာခံခြင်းမပြုမီ, ဗွီဒီယိုလေ့လာမှုကို input အဖြစ်ရယူရန်လိုအပ်သည်။ Video files များကို opencv ၏ Cvcreatfilezecapure function ကို အသုံးပြု. ဖွင့်နိုင်သည်။
$ videofilepathath = 'Path_tyo_Video_file'; $ Videocapture = CvcreatefileLeecapure ($ videfilepathate);
opencv မှပေးသော CVCalcoptlalFowlk function ကို အသုံးပြု. optical စီးဆင်းမှုကိုတွက်ချက်ရန်လက်ရှိဘောင်နှင့်ယခင်ဘောင်၏ပုံရိပ်များကိုပေးရန်လိုအပ်သည်။ ဥပမာအားဖြင့်:
// ပထမ ဦး ဆုံး frame1 = cvqueryframe ($ videocapthate) ကိုဖတ်ပါ။
နေစဉ် ($ frame1! == null) {
// ဒုတိယ frame2 = cvqueerfame ($ videocapthate) ကိုဖတ်ပါ။
လျှင် ($ frame2 === null) {
ချိုး;
}
// Grayscale ပုံရိပ် $ grey1 = cvceateeimage (CVCEESize ($ frame1), IPL_DEPTEX_8U, 1);
$ Grey2 = CVCEAteimage (CVCEAteimage (CVCEESize (Frame2), IPL_DEPTHT_8U, 1);
CVCVTCOLOR ($ frame1, $ grey1, cv_bgr2gray);
CVCVTCOLOR ($ frame2, $ gray2, cv_bgr2gray);
// optical စီးဆင်းမှု $ flowwidth = cvoldsize ($ grey1) -> အကျယ်,
$ flowheight = cvindsize ($ Grey1) -> အမြင့်;
$ flowx = cvceateeimage (CVSizeimage ($ flowwidth, flowheight, $ flowheight), iPl_depthth_32f, 1);
$ flowy = cvceateeimage (CVSize ($ flowwidth, $ flowheight), IPL_DEPTHTH_32f, 1);
// optical စီးဆင်းမှုကိုတွက်ချက်ခြင်း CVCalCopticalflowlk ($ Grey1, $ grays2, cvsize (10, 10), $ flowx, $ flowx, $ flowx;
// optical စီးဆင်းမှုရလဒ်များကိုထပ်မံလေ့လာသုံးသပ်ခြင်းနှင့်ဤနေရာတွင်ယခင် frame1 = $ frame2 ကို update လုပ်ပါ။
}
// ဖြန့်ချိအရင်းအမြစ်များ CVREleasecapure ($ videocapture);အထက်ပါကုဒ်များတွင်အရောင် frame ကို cvcvtcolor function မှတစ်ဆင့် optical စီးဆင်းမှုအတွက်အပြောင်းအလဲများအတွက်ထုတ်လုပ်ရန်အတွက် cvcvtcolor function မှတဆင့် grayscale image သို့ပြောင်းလဲသွားသည်။ optical စီးဆင်းမှုရလဒ်များကို $ flowx နှင့် $ flowy များတွင်သိမ်းဆည်းထားပြီးနောက်ဆက်တွဲခွဲခြမ်းစိတ်ဖြာမှုအတွက်အသုံးပြုနိုင်သည်။
optical စီးဆင်းမှုတွက်ချက်မှုပြီးဆုံးသွားသောအခါရလဒ်များကိုရွေ့လျားနေသောအရာဝတ်ထုများ၏အနေအထားနှင့်အမြန်နှုန်းကိုဆုံးဖြတ်ခြင်းကဲ့သို့သောရလဒ်များကိုခွဲခြမ်းစိတ်ဖြာနိုင်သည်။ အောက်ပါကုဒ်သည် optical စီးဆင်းမှုကိုမည်သို့တွက်ချက်ရမည်ကိုပြသသည်။
// optical စီးဆင်းမှုအရွယ်အစား $ flowmagneime = cvceateeimage (CVSize ($ flowheight, $ flowheight), IPL_DEPTHTH_32f, iPL_DEPTHTH_32F, 1); CVCArTtolololtolar ($ flowx, $ flowy, cvcreateeMagneimage (CVSizeMefeMageMagnage), Ipl_depththeighteighte ($ flowheight), 1), 1),
CVCArsttololar function မှတဆင့်ဆိုလျှင် optical စီးဆင်းမှု၏ X နှင့် Y တို့၏အစိတ်အပိုင်းများကို Polar Coordinates များသို့ပြောင်းလဲခြင်းနှင့် pixel တစ်ခုစီ၏ optical စီးဆင်းမှုပမာဏကိုတွက်ချက်သည်။ ထို့ကြောင့် pixel တစ်ခုစီ၏ optical စီးဆင်းမှုပမာဏကိုတွက်ချက်သည်။
ဤဆောင်းပါးသည် PHP ဘာသာစကားနှင့် opencv စာကြည့်တိုက်ကိုမည်သို့အသုံးပြုရမည်ကိုသတိပြုမိစေရန်ပတ်ဝန်းကျင်ပြင်ဆင်မှု, ဤအဆင့်များကိုကျွမ်းကျင်ပြီးသည့်နောက်တွင် optical စီးဆင်းမှုနည်းပညာသည်ရုပ်ပုံပြုပြင်ခြင်း၏ထောက်လှမ်းရေးကိုတိုးတက်စေရန်ဗွီဒီယိုစောင့်ကြပ်ကြည့်ရှုခြင်းနှင့်အရာဝတ်ထုခြေရာခံခြင်းကဲ့သို့သော applications တွင်ပြောင်းလွယ်ပြင်လွယ်ရှိနိုင်သည်။