ဒီ နမူနာ ပရိုဂရမ် မှာ လုပ်လို့ ရတဲ့ အကြောင်း ကုဒ် အကြမ်း ရေးကြည့် ရုံ ဖြစ်ပြီး၊ တစ်ခုခု ထူးခြားရင် ကိုယ့်ရဲ့ အီးမေးလ် ကို လှမ်းပို့ တာ၊ အိမ်က လူတွေ ရဲ့ မျက်နှာကို မှတ်မိတာ၊ သတ်မှတ် ထားတဲ့ အချိန် အပိုင်း အခြား အလိုက် လိုသလို record လုပ်တာ စတာ တွေကို စိတ်ကူး ရှိရင် ရှိသလို ထပ်ဖြည့် နိုင် ပါတယ်။
စျေးပေါတဲ့ HC-SR505 mini PIR motion sensor လေးကို Aliexpress စတဲ့ online shop တွေ ကနေ အလွယ် တကူ မှာ သုံးနိုင် ပါတယ်။ သူ့က 3.3~V ရော၊ 5~V နဲ့ ပါ သုံးလို့ ရပြီး၊ RPi နဲ့ သုံးမှာ ဖြစ်လို့ 3.3~V ပါဝါပေး၊ sensor ရဲ့ output pin ကို RPi ရဲ့ GPIO23 နဲ့ ပုံ မှာ ပြထား သလို ဆက်နိုင် ပါတယ်။
ပုံရိပ် ထဲမှာ Body detection လုပ်ဖို့ အတွက် တော့ အရင်ပို့စ်
Real-time Face Detection
မှာ လုပ်သလို ပဲ Haar feature-based cascade classifiers ကို သုံးမှာ ဖြစ်လို့ အဲဒီ မှာ haarcascade_fullbody.xml ဆိုတဲ့ ဖိုင် နာမည် ပြောင်း လိုက်ရုံပါပဲ။ PIR sensor ဆက်ထား တဲ့ input ကို ဖတ်ပြီး၊ active ဖြစ်နေရင် PIR DETECTED ဆိုတဲ့ စာကို puttext ဖန်ရှင် သုံးပြီး အနီရောင် နဲ့ ဖော်ပြ ပါမယ်။ နမူနာ SmartCam.cpp ဆိုတဲ့ ပရိုဂရမ် လေးကို အောက်က လင့်ခ် မှာ ပြထား ပါတယ်။
https://github.com/yan9a/rpi/tree/master/SmartCam
အဲဒီ ပရိုဂရမ် မှာ computer vision နဲ့ ဆိုင်တာ တွေ အတွက် OpenCV ကို သုံးထား တာမို့ အောက်က ပို့စ် မှာ ဆွေးနွေးခဲ့ သလို OpenCV ကို RPi မှာ တပ်ဆင် ထားဖို့ လိုပါတယ်။
OpenCV on Linux using g++, CMake, Qt, Code::Blocks
Using RaspiCam with C++
USB WebCam ကို သုံး မယ် ဆိုရင် ဘာမှ ထပ်လုပ် စရာ မလို ပေမယ့် Raspberry Pi Camera Module ကို သုံးမယ် ဆိုရင် သူ့ အတွက် C++ မှာ သုံးဖို့ library တစ်ခု ထပ် တပ်ဆင် ဖို့ လိုပါတယ် [Sal17]။ raspicam-0.1.6.zip ကို download လုပ် ပြီးတဲ့ အခါ၊ ဖိုင်ကို uncompress လုပ်ပြီး၊ compile လုပ်ဖို့ အတွက် အောက်က စာရင်း မှာ ပြထားတဲ့ command တွေကို သုံးနိုင် ပါတယ်။$ unzip raspicam-0.1.6.zip $ cd raspicam-0.1.6 $ mkdir build $ cd build $ cmake ..OpenCV ရှိနေ တယ် ဆိုရင် ပုံ မှာ ပြထား သလို
-- CREATE OPENCV MODULE=1လို့ ပြနေ ပါမယ်။
အဲဒီ နောက် အောက်က အတိုင်း build လုပ်၊ install လုပ်ပြီး၊ ldconfig ကို update လုပ်လိုက် ပါမယ်။
$ make $ sudo make install $ sudo ldconfigOpenCV ရှိနေတယ် ဆိုရင် utils ဆိုတဲ့ အခန်း ထဲမှာ raspicam_cv_test ဆိုတဲ့ နမူနာ ပရိုဂရမ် ရှိနေ မှာ ဖြစ်ပြီး တပ်ဆင်မှု အဆင်ပြေ မပြေ စမ်းကြည့်ဖို့ အတွက် အောက်က အတိုင်း run ကြည့်နိုင် ပါတယ်။ ပရိုဂရမ် output နဲ့ ပုံရိပ် တွေ အဲဒီ အခန်း ထဲမှာပဲ ရလာ တာကို ပုံ မှာ ပြထား ပါတယ်။
$ cd utils $ ./raspicam_cv_test
RaspiCam ကို C++ နဲ့ သုံးဖို့ အတွက်
#includeဆိုပြီး သူ့အတွက် header ဖိုင် ကို ထည့်ဖို့ လိုပါတယ်။ Webcam အတွက် VideoCapture class ကို သုံးခဲ့ ပေမယ့် Raspberry Pi ရဲ့ camera module အတွက် တော့ RaspiCam_Cv class ကို သုံး ပါမယ်။
raspicam::RaspiCam_Cv cap;ပုံရိပ် ကို ဖမ်းယူ ဖို့ အတွက် grab နဲ့ retrieve ဆိုတဲ့ method တွေကို သုံးနိုင် ပါတယ်။ RaspiCam ကို OpenCV နဲ့ တွဲ သုံးတဲ့ ရိုးရှင်းတဲ့ နမူနာ raspicamcv.cpp ကို အောက်က လင့်ခ် မှာ ပြထား ပါတယ်။
https://github.com/yan9a/rpi/blob/master/raspicamcv/raspicamcv.cpp
Camera ရဲ့ တန်ဖိုး တွေကို set နဲ့ ပြောင်းလဲ နိုင်ပြီး၊ ပြောင်းတဲ့ နမူနာ တွေကို utils အခန်း ထဲက raspicam_cv_test.cpp ထဲမှာ တွေ့နိုင် ပါတယ်။ ပြောင်းပြီး တဲ့ အခါ release လုပ်ပြီး၊ ပြန် open လုပ်ဖို့ လိုပါတယ်။ နမူနာ ပရိုဂရမ် ကို အောက်က အတိုင်း build လုပ်ပြီး run နိုင် ပါတယ်။
$ g++ raspicamcv.cpp `pkg-config --cflags --libs opencv` -o raspicamcv \ -I/usr/local/include/ -lraspicam -lraspicam_cv $ ./raspicamcv
Build and Run SmartCam
ဗွီဒီယို တွေိကို သိမ်းတဲ့ အခါ X264 ကို သုံးရင် ဖိုင် အရွယ်အစား တော်တော် သေးငယ်တဲ့ ဗွီဒီယို ဖိုင်တွေကို ရနိုင် ပါတယ်။ ဒါ ပေမယ့် Raspberry Pi ရဲ့ CPU usage က တက်လာပြီး နှေးလေး နေတာ တွေ့နိုင် ပါတယ်။ MJPG နဲ့ ဆိုရင်တော့ ဖိုင် size ကြီးပြီး၊ တွက်ချက် လုပ်ဆောင်မှု ပို ပေါ့ပါး ပါတယ်။ Raspberry Pi camera module ကို သုံးထား ပြီး RaspiCam လိုင်ဘရီ ကို တပ်ဆင်ပြီး ရင်တော့ သူ့အတွက် lraspicam လိုင်ဘရီ ကို ထည့်ပြီး build လုပ်ဖို့ လိုပါလိမ့် မယ်။ ပရိုဂရမ် မှာ c++11 standard လိုတဲ့ အတွက် build လုပ်တဲ့ အခါ အောက်က အတိုင်း bulid လုပ်ပြီး၊ run နိုင် ပါတယ်။$ g++ SmartCam.cpp ce_io.cpp `pkg-config --cflags --libs opencv` -std=c++11 -o SmartCam \ -I/usr/local/include/ -lraspicam -lraspicam_cv $ gksudo ./SmartCam
Related Posts
အကိုးအကားများ
[Sal17] Rafael Munoz Salinas. RaspiCam: C++ API for using Raspberry camera with/without OpenCv. 2017.url: https://www.uco.es/investiga/grupos/ava/node/40.
No comments:
Post a Comment