Search This Blog

Thursday, November 23, 2017

OpenCV with wxWidgets

  1. နိဒါန်း
  2. Linux
  3. Windows
  4. အကိုးအကားများ

နိဒါန်း

OpenCV ကို wxWidgets နဲ့ တွဲသုံး တဲ့ အကြောင်း ဆွေးနွေး ချင် ပါတယ်။ အဲဒီ အတွက် OpenCV နဲ့ wxWidgets တို့ကို တပ်ဆင် ထားဖို့ လိုပါ တယ်။ သူတို့ ကို platform အမျိုးမျိုး အတွက် တပ်ဆင်တဲ့ အကြောင်း တွေကို အောက်က လင့်ခ် တွေမှာ ဖတ်နိုင် ပါတယ်။

Linux

Linux နဲ့ terminal ပေါ်မှာ command ရိုက်ထည့် ပြီး build လုပ်တာ လွယ်ကူ ရိုးရှင်း ပါတယ်။ နမူနာ အနေနဲ့ wxcvsimple.cpp (online) ဆိုတဲ့ ရိုးရှင်း တဲ့ ပရိုဂရမ် လေး တစ်ခု ရေးကြည့် ပါမယ်။ ပရိုဂရမ် အစမှာ Application ရဲ့ OnInit() ဆိုတဲ့ method ထဲမှာ
wxInitAllImageHandlers();
ဆိုတာကို ထည့်ပါမယ်။ အဲဒီနောက် MyFrame ဆိုတဲ့ wxFrame ရဲ့ derived class ထဲမှာ ပုံရိပ် တွေကို ဖော်ပြဖို့ wxStaticBitmap variable တွေကို ကြေငြာ လိုက် ပါမယ်။ MyFrame ရဲ့ constructor မှာ wxStaticBitmap တွေကို ဖန်တီးဖို့ အောက်က ကုဒ် ကို သုံးနိုင် ပါတယ်။

Monday, November 20, 2017

OpenCV on Linux using g++, CMake, Qt, Code::Blocks

  1. နိဒါန်း
  2. GCC ၊ CMake တို့ဖြင့် အသုံးပြုခြင်း
  3. Qt ဖြင့် အသုံးပြုခြင်း
  4. Code::Blocks ဖြင့်အသုံးပြုခြင်း
  5. အကိုးအကားများ

နိဒါန်း

OpenCV ကို Linux တွင် တပ်ဆင် ရန် ပထမ အဆင့် အနေနှင့် အောက်ပါ packages များ စက်ထဲ တွင် ရှိရန် လိုအပ် သည် [Ope17g]။
  • GCC 4.4.x or later
  • CMake 2.6 or higher
  • Git
  • GTK+2.x or higher, including headers (libgtk2.0-dev)
  • pkg-config
  • Python 2.6 or later and Numpy 1.5 or later with developer packages (python-dev, python-numpy)
  • ffmpeg or libav development packages: libavcodec-dev, libavformat-dev, libswscale-dev
  • [optional] libtbb2 libtbb-dev
  • [optional] libdc1394 2.x
  • [optional] libjpeg-dev, libpng-dev, libtiff-dev, libjasper-dev, libdc1394-22-dev
ထို packages များအား စက်ထဲသို့ ထည့်သွင်း လိုပါက Synaptic Manager သုံး၍ သော် လည်းကောင်း၊ terminal တွင် အောက်ပါ စာရင်း များပါ command များ ရိုက်နှိပ်၍ သော် လည်းကောင်း ထည့်နိုင် သည်။

Friday, October 27, 2017

Cross-platform C++ programming with wxWidgets

  1. နိဒါန်း
  2. Windows တွင်တပ်ဆင်ခြင်း
  3. Linux တွင်တပ်ဆင်ခြင်း
  4. Mac တွင်တပ်ဆင်ခြင်း
  5. အကိုးအကားများ

နိဒါန်း

wxWidgets က Windows ၊ Linux နဲ့ Mac OSX အစ​ ရှိ​တဲ့ ပ​လက်​ဖောင်း အမျိုး​မျိုး ပေါ်​မှာ GUI applications တွေ ရေး​ဖို့ အတွက် C++ library ပါ။ သူ​နဲ့ GUI code တွေ ရေး​ပြီး​ ရင် ပ​လက်​ဖောင်း အမျိုး​မျိုး ပေါ်​မှာ ကုဒ် ကို သိပ်​ပြင်​ စရာ မ​လို​ပဲ တန်း​ပြီး compile လုပ်၊ run လုပ်​လို့​ ရ​ပါ​တယ်။

wxWidgets ​က free လည်း​ပေး open source လည်း ​ဖြစ် တဲ့ software ပါ။ ကိုယ်​ပိုင် ဆော့​ဝဲ တွေ​ ထုတ်​မယ်​ ဆို​ရင် လည်း ဘာ​မှ ကန့်​သတ်​ချက်​ တွေ မ​ရှိ​ ပါ​ဘူး [wxW98]။ အဲဒါက Qt နဲ့ အဓိက ကွာခြားချက် ပါ။ Qt က LGPLv3 လိုင်စင် ကို free ပေးထားပြီး၊ ကိုယ်ပိုင် စီးပွားရေး အတွက် သုံးမယ် ဆိုရင် ကန့်သတ်ချက် တချို့ ရှိတာကြောင့် လိုင်စင် ဝယ်ဖို့ လိုကောင်း လိုနိုင် ပါတယ် [Qt17]။

Native platform ကို တတ်နိုင် သလောက် သုံးထား တာမို့ wxWidgets သုံးလို့ ရလာတဲ့ GUI တွေဟာ သုံးတဲ့ platform နဲ့ လိုက်ဖက်ပြီး ပင်ကို အမြင် အတိုင်း တသားထဲ ကျ တာကို ခံစား ရမှာပါ [wxW12]။ Standard C++ ကိုပဲ သုံးထားပြီး Qt တို့လို အထူး extension တွေ မသုံးထား တဲ့ အတွက် ရှုပ်ထွေးမှု နည်းတာ ကလည်း ကောင်းတဲ့ အချက် တစ်ခုပါ။

wxWidgets နဲ့ ရလာတဲ့ binary application တွေဟာ သေးငယ် ပေါ့ပါး တာမို့ embedded system တွေအတွက် အထူး သင့်တော် ပါတယ်။ နောက်တစ်ခါ library အရွယ်အစား တွေ ယှဉ်ရင်လည်း ဥပမာ အနေနဲ့ Qt library ကို တပ်ဆင်ရင် \(\approx 200\) MB လောက် အရွယ် ရှိပေမယ့် wxWidgets library က \(\approx 30\) MB လောက်ပဲ ယူပါတယ်။

wxWidgets က C++ အတွက် သာ မကပဲ python, perl, php, java, lua, lisp, erlang, eiffel, C# (.NET), BASIC, ruby နဲ့ javascript အတွက် တောင်မှ bindings [wxW15a] တွေ ရှိပါတယ်။ wxWidgets က တော်တော် ပြည့်စုံ ရင့်ကျက် တဲ့ GUI toolkits ဖြစ်ပြီး၊ utility classes လည်း အများကြီး ရှိတာမို့ ကောင်းမွန် သင့်တော် တဲ့ GUI toolkits အနေနဲ့ ညွှန်းဆို ချင်ပါတယ်။

wxWidgets ကို အသုံးပြုတဲ့ သူတွေ၊ အဖွဲ့အစည်းတွေ အများကြီး ရှိပြီး အဲဒီ အထဲမှာ လူသိများ တာတွေက NASA, AMD, Xerox, နဲ့ Open Source Applications Foundation (OSAF) တို့ ဖြစ်ပါတယ်။ ထင်ရှားတဲ့ wxWidgets applications တွေက AVG AntiVirus, Audacity, Filezilla, Code::Blocks, CodeLite တို့ ဖြစ်ပါတယ်။

Wednesday, September 13, 2017

Pixy

Arduino, Raspberry Pi, BeagleBone စတာ တွေနဲ့ Computer Vision အလွယ်တကူ တွဲသုံး ချင်ရင် Pixy (http://cmucam.org/projects/cmucam5) ဆိုတဲ့ Vision System လေး သုံးရတာ လွယ်ကူ အဆင်ပြေ ပါတယ်။ ကိုယ် detect လုပ်ချင် တဲ့ အရာ ဝတ္တု တွေရဲ့ အရောင် ကို သင်ပေး ပြီးတာနဲ့ သူတို့ ကို အာရုံခံ ပေးပြီး နေရာ၊ အရွယ် စတာ တွေကို UART, SPI, I2C အစရှိတဲ့ interface တွေ နေ ပို့ ပေးနိုင် ပါတယ်။

Thursday, August 3, 2017

KiCad အားစတင်အသုံးပြုခြင်း

KiCad ဆိုတဲ့ free software လေးက PCB ဆားကစ်ဘုတ်တွေ ဒီဇိုင်း လုပ်ဖို့ တော်တော် အဆင်ပြေတယ်။ အလကားပေးထားတာရယ်၊ ကန့်သတ်မှုတွေ မရှိပဲ စိတ်ကြိုက်သုံးနိုင်တာတွေရယ်ကိုတော်တော်သဘောကျမိတယ်။ စီးပွားဖြစ် အမြောက်အများထုတ်ရင် အသုံးဝင်တဲ့ BoM ၊ Gerber ဖိုင် လိုမျိုးတွေထုတ်ဖို့၊ ဒီဇိုင်းကို 3D မြင်ကွင်းနဲ့ ကြည့်ဖို့ တွေအတွက်ပါ ကိရိယာတွေပါတယ်။ Olimex တို့လို နာမည်ကြီး development ဆားကစ်ဘုတ် ပစ္စည်းကိရိယာ တွေလုပ်ရောင်းတဲ့ ကုမ္ပဏီတွေတောင် အခုနောက်ပိုင်း KiCad ကို ပြောင်းသုံးတယ်ဆိုပါတယ် [KiCad on Wikipedia]



ကျွန်တော် ကိုယ်တိုင်လည်း ဆားကစ်ဘုတ် တချို့လုပ်ပြီး သုံးကြည့်တာ အားလုံး အဆင်ပြေတာ တွေ့ရတယ်။ ဒါနဲ့ ကိုယ်တိုင်သုံးကြည့်လို့ ရတဲ့ အတွေ့အကြုံ၊ နည်းလမ်းလေးတွေကို စုပြီး မှတ်ထားချင်တာနဲ့ ၊ သူ့ရဲ့ Getting Started guide နဲ့ပေါင်းစပ်ပြီး၊ ကောင်းမယ်ထင်တဲ့ နမူနာလေးတွေနဲ့ မြန်မာလို KiCad သုံးနည်းစာအုပ်လေး ရေးဖြစ်တယ်။ စိတ်ဝင်စားရင် အောက်ကလင့်ခ်မှာ ယူပြီး ဖတ်ကြည့်ပါဦး။

https://yan9a.github.io/KiCad/kicadmm.pdf

Tuesday, June 6, 2017

Flash content protection for LPC824

LPC824 low cost 32-bit ARM Cortex-M0 microcontroller လေးကို OM13071 LPCXpresso824-MAX Development board သုံးပြီး evaluate လုပ်လို့ရတဲ့ အတွေ့အကြုံလေးကို ပြောချင်ပါတယ်။ Board မှာ သုံးထားတဲ့ MCU အမျိုးအစားက LPC824M201JHI33 ပါ။ အရွယ်အစား က 5 x 5 x 0.85 mm ပဲရှိတဲ့ 33 pins ပါတဲ့ HVQFN package ပါ။

သူ့အတွက် MCUXpresso Integrated Development Environment (IDE) ကို download လုပ်ပြီး၊ install လုပ်ပါမယ်။ အခြား လိုအပ်တဲ့ tools တွေကိုလည်း ဒီမှာ တွေ့နိုင်ပါတယ်။ MCUXpresso ကိုဖွင့် ပြီး workspace သတ်မှတ်ပြီးတဲ့ အခါ ဘယ်ဘက်အောက်နားက Quick Start Paner ထဲက Import projects from file system ... ဆိုတာကိုနှိပ်ပြီး Browse LPC open resources ကိုနှိပ်ပြီး နမူနာ တွေကို ယူနိုင်ပါတယ်။



Wednesday, May 31, 2017

Programming serial port in C++ with wxWidgets for Windows and Linux

Seriar Port ကိုအသုံးပြုနိုင်တဲ့၊ ကျနော်ဖန်တီးထားတဲ့ C++ class library လေးတစ်ခု အကြောင်း ပြောချင်ပါတယ်။ သူက cross-platform ဖြစ်ပြီး Windows ရော၊ Linux မှာပါ သုံးနိုင်ပါတယ်။ နမူနာ အနေနဲ့ ရိုးရှင်းတဲ့ C++ console program လေးတစ်ခုကို ဖော်ပြထားပြီး၊ GUI application အနေနဲ့ wxWidgets ကိုသုံးထားတဲ့ program ကိုပါ ဖော်ပြထားပါတယ်။ သူတို့ရဲ့ source code တွေကို အောက်က လင့်ခ် မှာ တွေ့နိုင်ပါတယ်။

https://github.com/yan9a/serial


Figure. A wxWidgets GUI application using 'Serial' class with Visual Studio 2017

Saturday, April 8, 2017

ပျော်ရွှင်မှုဆိုတာ

အိုင်ဖုန်းအသစ်ရတာပျော်စရာလား?
အိုင်ဖုန်း အသစ်ရတာကို ပျော်စရာ ဟုတ်မဟုတ် စဉ်းစားမိတော့ ပျော်စရာ ဆိုတာ ဘာလဲ၊ ပျော်စရာကို ဘယ်လိုသတ်မှတ်လဲ ဆိုတာကို ရှင်းရှင်းလင်းလင်းရှိဖို့ လိုပြန်ရော။ ပျော်တယ်ဆိုတာ ကောင်းကောင်းမွန်မွန် နေရတာ ဖြစ်နိုင်သလို၊ စိတ်ခံစားမှု တစ်ခုလည်း ဖြစ်နိုင်မယ်။ အဲ့နှစ်ခုက တစ်ထပ်ထည်း ကျချင်မှလည်းကျမယ်။ ကောင်းကောင်းမွန်မွန် နေနိုင်ပေမယ့် ရွှင်လန်းအားရမှု ရှိချင်မှ ရှိမယ်လေ။ သာယာမှုတွေပြည့်နေတဲ့ ဘဝကလည်း ကောင်းမွန်မွန်နေနိုင်တာ ဟုတ်ချင်မှဟုတ်မယ် မဟုတ်လား။

ပျော်ရတဲ့အကြောင်းများ
ပျော်ရတဲ့ အကြောင်းရင်းတွေက အနည်းဆုံး သုံးခုလောက်တော့ ရှိတယ်လို့ ဆိုကြတယ်။
* ဟိဒနဇင်(hedonism) ဆိုတဲ့ သာယာကြည်နူးဖွယ် တွေပြည့်နေတဲ့ အတွေ့အကြုံ၊
* ကိုယ့်ဘဝကိုယ် ရောင့်ရဲ ကျေနပ်တာ နဲ့
* ဖွံဖြိုးရရှိမှုဆိုင်ရာ ကျေနပ်အားရတာမျိုး တွေတဲ့။
Hedonistic နည်းကတော့ သာယာဖွယ် ခံစားမှု တွေနဲ့ ပျော်စရာရှာတာ။ ဘီစီ ၄၀၀ လောက်က အာရစ္စတစ်ပတ် (Aristippus) ဆိုတဲ့ လူကြီးနဲ့ သူ့မြေးတို့ ပြောခဲ့ကြဖူးတဲ့ အယူအဆပေါ့။

Friday, March 31, 2017

မြန်မာနိုင်ငံ၏ဗဟို

မြန်မာနိုင်ငံ ရဲ့ အလယ်ဗဟို ဆိုပြီး ဖေ့ဘုတ်ပေါ် တွေ့မိတာ တခါကို တစ်မျိုး ဖြစ်နေလား ထင်မိတယ်။ ဒါနဲ့ ဂူဂယ်တို့၊ ဝီကီ တို့မှာ ရှာကြည့်တော့လည်း အဲ့ဒီ ဒေတာ ကို မတွေ့ဘူး ဖြစ်နေတယ်။ အဲ့ဒီတော့ စပ်စပ်စုစု ကိုယ့်ဟာကိုယ်ပဲ တွက်ကြည့်လိုက်တာ မြန်မာပြည် မြေပုံရဲ့ အလယ်ဗဟို (Geometric mean သို့ centroid) က လတ္တီကျု ၂၀.၈၆ ဒီဂရီ နဲ့ လောင်ဂျီကျု ၉၆.၄၈ ဒီဂရီ ဆိုပြီး ထွက်လာတယ်။ ဂူဂယ် မြေပုံမှာ ပြန်ကြည့်တော့ မန္တလေးတိုင်းထဲမှာ၊ ပင်းတယ နဲ့နီးတာကို တွေ့ရတယ်။ ဖေ့ဘုတ်မှာ တွေ့မိတာနဲ့ မတူဘူး။ တွက်တာက တော့ ဂူဂယ်မြေပုံမှာ စကရင်ရှော့ရိုက်၊ GIMP နဲ့ အဖြူအမည်း ပြောင်းပြီး၊ opencv နဲ့ centroid ရှာလိုက်တာပါပဲ။ ဂူဂယ်မြေပုံက Mercator projection သုံးထားတာမို့ အဲဒီအတွက်ပါ ထည့်တွက်ထားတယ်။

Source code: https://github.com/yan9a/Myanmar_Centroid

အသေးစိတ် ရှင်းလင်းချက်။ ။ဤစာအုပ် အခန်း ၅၊ အပိုင်း ၄



ရှေး အရင်တုန်းက မြေပုံရဲ့ ဗဟိုက ကူမဲမြို့ အရှေ့ဖက် မှိုင်းမော်ဆိုတဲ့ ရွာမှာလို့ကြားတယ်။ ဒီအောက်က ဟာကတော့ ဖေ့ဘုတ်မှာတွေ့မိတဲ့ဟာပါ။ အခုမြေပုံနဲ့ တွက်လို့ရတဲ့ အဖြေနဲ့တော့ မတူဘူး။

Real-time Face Detection



Source: https://github.com/yan9a/Real-time_Face_Detection

Document: https://yan9a.github.io/OpenCV_Projects/opencv320.pdf

Thursday, February 23, 2017

Opencv-3.2.0 on Windows 10 - 64 bit Using Visual Studio 2015

Windows အတွက် pre-built လုပ်ပြီး ဖြစ်သော လက်ရှိ နောက်ဆုံးထွက် OpenCV အခြေကျ ဗာရှင်း ကိုသုံးမည်။ ၄င်းအား
https://sourceforge.net/projects/opencvlibrary/files/opencv-win/
တွင် ယူနိုင်သည်။ ရရှိ လာသော opencv-3.2.0-vc14.exe အား ဤ နမူနာ အတွက် C:\opencv အောက်တွင် opencv320 အနေနှင့် extract လုပ်သည်။ IDE အတွက် Visual Studio 2015 ကို https://www.visualstudio.com/downloads/ မှ ရယူ ၍ install လုပ်မည်။ အောက်ပါ အဆင့် များကို Windows 10 64 bit တွင် Visual Studio 2015 နှင့် OpenCV-3.2.0 အား သုံး၍ စမ်းကြည့် ထားသည်။ အခြား ဗားရှင်းများ အတွက်လည်း ဆင်တူ ယိုးမှား နည်းလမ်း များသာ ဖြစ်သည်။

64 bit windows နှင့် Visual Studio 2015 အတွက် enviroment variable တစ်ခု အနေနှင့် OPENCV_DIR ကို သတ်မှတ် မည်။ ထို့အတွက် Command window ကို administrator အနေနှင့် run ရန် start menu ကို right click နှိပ်၍ command prompt (admin) ကို ရွေးပြီး လျင် အောက်ပါ အတိုင်း ရိုက်ထည့် နိုင်သည်။

setx -m OPENCV_DIR C:\opencv\opencv320\build\x64\vc14


Wednesday, February 22, 2017

မြန်မာဘာသာ အတွက် LaTeX Report ပုံစံ

XeLaTeX ကို အသုံးပြု၍ မြန်မာ ဘာသာဖြင့် report ရေးသားရန် နမူနာ ပုံစံ ( template) တစ်ခု ဖြစ်သည်။

https://github.com/yan9a/LaTeX_Myanmar_Language တွင် တွေ့နိုင်သည်။

မြန်မာဘာသာဖြင့် ရေးသား ထားသည် များကို အသုံးပြုရန် ယူနီကုဒ်ကို ထောက်ပံ့သော XeLaTeX ကို အသုံးပြုရန် လိုသည်။ XeLaTeX စမ်းသပ်ရန် ရိုးရှင်းသည့် နမူနာ များအား အရင် ပို့စ် အဟောင်း တခု ဖြစ်သော Myanmar (Burmese) Language with XeTeX and LuaTeX တွင် တွေ့နိုင်သည်။ မြန်မာ ဘာသာဖြင့် သုံးရန် လိုအပ်သည်မှာ burmese.sty ကို folder တစ်ခုထဲမှာ ထားပြီး report ၏အစတွင်
\usepackage{burmese}
ကို ထည့်လိုက်ရုံသာ ဖြစ်သည်။ နမူနာ အနေနှင့် အသုံးများသော LaTeX editor တစ်ခုဖြစ်သည့် TeXstudio ကိုသုံးမည်။ အသုံးပြုသည့် မြန်မာဖောင့်ကို ပြင်လိုပါက burmese.sty ဖိုင်တွင် ပြင်ရမည်။

Tuesday, February 21, 2017

Integration of Accelerometers

3-axis accelerometer တွေကို ကိုယ်ထည်အမာ တစ်ခုမှာ လိုအပ်ချက်နဲ့ ကိုက်ညီသလို တပ်ထားပါတယ်။ အဲဒီ ကိုယ်ထည်အမာ ကလည်း ရွေ့ချင်တဲ့ အဖြောင့် (linear) နဲ့ အလှည့် (angular) လှုပ်ရှားမှုတွေနဲ့ ရွေ့နေပါတယ်။ တပ်ထားတဲ့ accelerometer တွေက linear acceleration တွေကိုပဲ အာရုံခံနိုင်တဲ့ အတွက် angular ရွေ့လျားမှု တွေကို မသိဘူး ဖြစ်နေပါတယ်။

သိချင်တာ တစ်ခုက accelerometer တွေ အများကြီးက တိုင်းတာလို့ ရတဲ့ တန်ဖိုးတွေကို ပေါင်းပြီး ထပ်တူညီတဲ့ စုပေါင်း integrated equivalent accelerometer တစ်ခုအနေနဲ့ ရနိုင်မလား ဆိုတာပါပဲ။
စဉ်းစားကြည့်လိုက်တော့ ရနိုင်တယ် လို့ ထင်ပါတယ်။

Monday, January 9, 2017

Creating Dynamic Link Library (DLL) in C++ and Using it in Visual Basic .NET

Visual Basic .NET 2012 (vs11) မှာသုံးဖို့ အတွက် DLL (Dynamic Link Library) တခုကို C++ နဲ့ ဖန်တီးဖို့ နည်းလမ်း ၂ ခု ကို ဆွေးနွေးချင်ပါတယ်။

  • CLR Class Library
  • Win32 DLL