آموزش رسبری پای قسمت چهارم(راه اندازی دوربین ov5647 و نصب کتابخانه open cv به زبان c و پایتون)
به نام خدا و با سلام خدمت هموطنان گرامی
در این آموزش قصد دارم تجربیاتمو در خصوص راه اندازی دوربین و نصب کتابخونه opencv با شما به اشتراک بزارم.
در این اموزش من دوربین ov5647 استفاده کردم البته با وب کم هم میتونید به رسبری متصل بشید که اونم میگم خدمتتون.
مرحله اول :
پس از تهیه دوربین اون رو به صورت شکل زیر به رسبری پای متصل کنید :
لطفا به کانکتور دوربین و جهت فلت دوربین دقت کنید(اشتباهی دوربین رو به کانکتور lcd متصل نکنید)
پیشنهاد میکنم این آموزش رو هم حتما ببینید : آموزش ایجاد فایل پایتون در رسبری پای و بخش gpio
قبل از شروع مراحل اصلی رسبری پای رو آپدیت کنید :
1 2 3 |
sudo apt-get update sudo apt-get upgrade sudo rpi-update |
مرحله ۲ :نحوه نصب کتابخونه opencv:
قبل از این که کامند های راه اندازی روربین به زبان c رو بگم یه نکته رو باید بگم و اون اینه که باید این C Compiler Identification Is GNU 4.9.2 روی رسبری نصب باشه وگرنه بین راه موقع بیلد کردن با خطا ی کامند نات فاند مواجه میشید…
که برای نصبش هم حتما بخش کامپایل و پروژه به زبان سی و سی پلاس پلاس رو در آموزش قبل ببینید و تا پیشنیاز های کامپایل پروژه به زبان سی روی رسبریتون نصب بشه وهم قبلش کتابخونه opencv رو نصب کنید:
اول از همه camera رو در رسبری مانند شکل زیر فعال کنید و رسبری رو ریبوت کنید!!
پس از بالا اومدن رسبری کامند زیر رو وارد کنید و اینتر بزنید و اگر سوالی پرسید y رو زده و اینتر کنید و صبر کنید تا نصب بشه :
1 |
sudo apt-get install python-numpy python-scipy python-matplotlib python-pandas python-nose |
نحوه نصب کتابخونه opencv:
اول از همه باید پیشنیازهای opencv رو نصب کنید :
حالا بعده اینکه دانلود کردید و کارایی که گفتم رو انجام دادید باید برید سراغ ترمینال رسبری پای و کامند های زیر رو به ترتیب وارد کنید:
1 2 3 4 5 6 7 8 9 10 11 12 |
sudo apt-get install synaptic sudo apt-get install build-essential cmake pkg-config sudo apt-get install default-jdk ant sudo apt-get install libgtkglext1-dev sudo apt-get install bison sudo apt-get install qt4-dev-tools libqt4-dev libqt4-core libqt4-gui sudo apt-get install v4l-utils sudo apt-get install qtcreator |
هر جا ازتون سوال پرسید y و اینتر رو بزنید…
یکم زمان میبره(یکم که نه خیلی 🙄 ) نصبشون بنابراین صبر کنید ” البته میتونید تا زمانی که اون فایل زیپ اوپن سی وی دانلود بشه شما تا اینجا کاراتون رو انجام بدید)…
—حالا باید کتابخونه opencv رو دانلود و نصب کنید حدود ۷۰ مگابایت هستش میتونید مستقیم از ترمینال با کامند زیر دانلود کنید
wget https://sourceforge.net/projects/opencvlibrary/files/opencv-unix/3.2.0/opencv-3.2.0.zip/download
اما چون فیلتره این کار امکان پذیر نیست...!!!!!!
حالا کاری که من بهتون پیشنهاد میکنم استفاده از ف*ی*ل*ت*ر*ش*ک*ن هستش؛ به این صورت در محیط ویندوز میتونید از هات اسپات شیلد استفاده کنید و فایل رو دانلود کنید و پس از دانلود بریزید رو فلش و فایل رو با فلش به رسبری پای انتقال بدید و سپس در شاخه اصلی(home\pi) یه پوشه به اسم opencv_regular بسازید و فایل زیپ کتابخونه رو در پوشه opencv_regular کپی کنید.که من لینک دانلود فایل رو براتون قرار میدم شما اخرین ورژن رو دانلود کنید(ورژن ما ۳٫۲٫۰ ) :
https://sourceforge.net/projects/opencvlibrary/files/opencv-unix/
حالا نوبت به کامپایل کتابخونه opencv میرسه که با کامند های زیر این کارو انجام بدید :
اول باید اون رو از حالت زیپ خارج کنید با کامند های زیر انجام میدیدم ضمن اینکه اینجا ما از ورژن ۳٫۲٫۰ این کتابخونه استفاده کردیم.
1 2 3 4 5 6 7 8 |
cd opencv_regular unzip opencv-3.2.0.zip cd opencv-3.2.0 mkdir build cd build cmake -D CMAKE_BUILD_TYPE=RELEASE -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_QT=ON -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_OPENGL=ON -D WITH_V4L=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_TBB=ON .. make |
در کامند های بالا بعده اینکه دستور make رو زدین کلی طول میکشه( حدود ۵ ساعت) تا کتابخونه بیلد شه
نکته : اگر در اجرای هر دستوری در ترمینال به شما ارور پرمیژن هارو داد قبله دستور sudo اضافه کنید
“اگر تحت هر شرایطی این ورژن برای شما بیلد نشد ورژن های دیگرو تست کنید بالاخره درست میشه سر این مطلب و نصب این کتابخونه نابود شدم 😡 ”
پس از اینکه عملیات بیلد تموم شد کامند های زیر را به ترتیب وارد کنید :
1 2 |
sudo make install sudo nano /etc/ld.so.conf.d/opencv.conf |
پس از وارد کردن کامند دوم یه فایل باز میشه که باید کد زیر رو در اون تایپ کنید و در نهایتctrl+x بزنید و سپس y و در اخر اینتر رو بزنید تا برگردید به محیط ترمینال و کامند زیر رو وارد کنید:
1 2 |
sudo ldconfig sudo nano /etc/bash.bashrc |
پس از وارد کردن کامند دوم یه فایل باز میشه که برید به ته مطلب و نوشته زیر رو باید در اون کپی کنید :
1 |
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig |
و سپس ctrl+x و y و اینتر رو که بزنید وارد محیط ترمینال میشید
و حالا دستور زیر رو تایپ کنید و اینتر کنید :
1 |
export PKG_CONFIG_PATH |
تا اینجا اگر کار بدون خطا دنبال شده میشه گفت opencv نصب و بیلد شده حالا باید یه سمپلی یه نمونه کد اجرا کنید ببنید کار میکنه…
که دستورات زیر رو به ترتیب تایپ کنید :
1 2 3 4 |
cd .. cd samples/cpp ls `sudo g++ -o facedetect facedetect.cpp `pkg-config opencv --cflags --libs |
توجه : به علامت
دقت کنید این سینگل کوتیشن نیستا!!!!!!!!!!
در اینجا سمپل بدون اررو کامپایل میشه…
و برای اجرای سمپل فیس دیتکت هم کد زیر رو بکوبید تو ترمینال 😉
1 |
./facedetect |
، اگر تنظیمات دوربین اوکی و نصب باشه چهرتون شناسایی خواهد شد اگرم گفت دوربین بالا نمیاد در ادامه اموزش ( مرحله ۳ در خدمت شما هستم تا دوربینو راه بندازیم)
اگر خطا داد که کمرا دیدنت ورک و… کد زیر رو تو ترمینال بزنید و دوباره کامپایل کنید و اجرا کنید:
1 |
sudo modprobe bcm2835-v4l2 |
من تو سمپلهای اوپن سی وی سمپل فیس دیتکت رو اجرا کردم(بعده یه هفته سروکله زدن )و بالاخره اجرا شد هر چی هم بود گذاشتم تا استفاده کنید،موفق باشید)
این فیلم اموزشی رو هم در اپارات ببینید که خیلی کمکتون میکنه…
برای نصب opencv از این منبع و این منبع هم میتونید استفاده کنید …
مرحله ۳ : نصب کتابخانه و گرفتن عکس توسط دوربین و ذخیره آن به زبان سی
برای نصب کتابخانه ابتدا باید آن را از این لینک دانلود کنید و در پوشه download قرار دهید ما در اینجا از ورژن
raspicam-0.1.6.zip
استفاده کرده ایم.
پکیج cmake را با دستور زیر نصب کنید :
1 |
sudo apt-get install build-essential cmake pkg-config |
پس از اینکه فایل زیپ را دانلود کردید و در پوشه دانلود قرار گرفت ترمینال را باز کنید و کامند های زیر را به ترتیب تایپ کنید:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
cd /home/pi/Downloads/ unzip raspicam-0.1.6.zip cd raspicam-0.1.6 mkdir build cd build sudo cmake .. sudo make sudo make install sudo ldconfig **** cd sudo mkdir camera cd camera sudo nano simpletest_raspicam.cpp **** #include <unistd.h> #include <ctime> #include <fstream> #include <iostream> #include <raspicam/raspicam.h> using namespace std; int main ( int argc,char **argv ) { raspicam::RaspiCam Camera; //Cmaera object //Open camera cout<<"Opening Camera..."<<endl; if ( !Camera.open()) {cerr<<"Error opening camera"<<endl;return -1;} //wait a while until camera stabilizes cout<<"Sleeping for 3 secs"<<endl; sleep(3); //capture Camera.grab(); //allocate memory unsigned char *data=new unsigned char[ Camera.getImageTypeSize ( raspicam::RASPICAM_FORMAT_RGB )]; //extract the image in rgb format Camera.retrieve ( data,raspicam::RASPICAM_FORMAT_RGB );//get camera image //save std::ofstream outFile ( "raspicam_image.jpg",std::ios::binary ); outFile<<"P6\n"<<Camera.getWidth() <<" "<<Camera.getHeight() <<" 255\n"; outFile.write ( ( char* ) data, Camera.getImageTypeSize ( raspicam::RASPICAM_FORMAT_RGB ) ); cout<<"Image saved at raspicam_image.jpg"<<endl; //free resrources delete data; return 0; } **** Ctrl+x>>y>>Enter **** sudo nano CMakeLists.txt **** cmake_minimum_required (VERSION 2.8) SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} /usr/local/lib/cmake/) project (raspicam_test) find_package(raspicam REQUIRED) add_executable (simpletest_raspicam simpletest_raspicam.cpp) target_link_libraries (simpletest_raspicam ${raspicam_LIBS}) **** Ctrl+x>>y>>Enter **** sudo mkdir build cd build sudo cmake .. sudo make **** sudo ./simpletest_raspicam |
بعده اینکه خط آخر رو وارد کردید دوربین پس از گذشت زمان ۳ ثانیه عکس رو میگیره و در پوشه camera و بعد در پوشه build ذخیره میکنه میتونید برید و ببینید اگر ترمینال رو نبندید برای گرفتن دوباره عکس میتونید دوباره خط آخر رو بزنید تا عکس جدید جایگزین عکس قبلی بشه…
اگر میبینید که عکس رنگ های واقعی نداره یا … برید به ادامه مطلب و raspistill رو اجرا کنید … درست میشه…
برای دیدن آموزش تصویری این مبحث در آپارات به این لینک مراجعه کنید…
- راه اندازی وبکم با رسبری پای و گرفتن عکس و فیلم توسط نرم افزار
ابتدا با تایپ کامند زیر نرم افزار رو نصب کنید البته قبلش میتونید یه lsusb بزنید تا ببینید ایا وب کم شناسایی میشه یا نه…
1 |
sudo apt-get install guvcview |
- راه اندازی دوربین و گرفتن عکس و فیلم به زبان پایتون
همونطور که میدونید دوربین رسبری پای باید ENABLE باشه
ابتدا با کامند زیر کتابخونه رو نصب کنید
1 |
sudo apt-get install python-picamera python3-picamera |
- گرفتن عکس به زبان پایتون
یه فایل تکست ایجاد کنید و اون رو باپسوند py. ذخیره کنید و سپس کد زیر رو کپی کنید و و کد رو ران کنید(اموزششو تو پست های قبل اموزش رسبری پای دادم)
1 2 3 4 5 6 7 |
import time import picamera with picamera.PiCamera() as camera: camera.start_preview() time.sleep(0) camera.capture('/home/pi/Desktop/image.jpg') camera.stop_preview() |
۲٫گرفتن فیلم به زبان پایتون
1 2 3 4 5 6 7 8 |
import time import picamera with picamera.PiCamera() as camera: camera.start_preview() camera.start_recording('/home/pi/Desktop/video.h264') time.sleep(30) camera.stop_recording() camera.stop_preview() |
- راه اندازی دوربین و گرفتن عکس و فیلم با ابزار raspistill
- نحوه گرفتن عکس در رسبری پای
یکی از ابزارهای کامند لاین برای گرفتن عکس raspistill می باشد، برای استفاده از این ابزار در خط فرمان دستور را به ترتیب زیر وارد کنید:
1 |
raspistill -o img.jpg |
با اجرای این دستور دوربین روشن شده و یک عکس در شاخه ای که دستور در آن وارد شده به نام img.jpg ذخیره می شود.
ابزار raspistill سوئیچ های زیادی دارد که در زیر تعدادی از آنها را معرفی می کنم.
اگر بخواهید به عکس گرفته شده طول و عرض اضافه کنید با سوئیچ h و w طول و عرض عکس را مشخص کنید:
1 |
raspistill -h 600 -w 800 -o img.jpg |
کیفیت عکس را می توانید با سوئیچ q تعیین کنید که مقداری بین ۰ تا ۱۰۰ میگیرد:
1 |
raspistill -q 70 -o img.jpg |
در مثال های بالا تمامی عکس ها پس از ۵ ثانیه گرفته می شوند اما می توانید این زمان را با سوئیچ t تغییر دهید و مقدار دلخواه خود را قرار دهید. این سوئیچ مقدار را به میلیثانیه دریافت می کند:
1 |
raspistill -t 1000 -o img.jpg |
در تمامی دستورات بالا پس از اجرای دستور تصویر دوربین روی مانیتور به نمایش در آمده و پس از گرفتن عکس پنجره بسته می شود. اگر تمایل دارید که مراحل گرفتن عکس به صورت خودکار و بدون به نمایش در آمدن پنجره صورت گیرد می توانید از سوئیچ n استفاده کنید.
1 |
raspistill -n -t 10000 -o img.jpg |
این ابزار توانایی های خیلی بیشتری دارد که نسبت به نیاز خود میتوانید از آنها استفاده کنید.
۲٫نحوه گرفتن فیلم در رسبری پای
برای فیلم برداری میتوانید از ابزار raspivid استفاده کنید. دستور زیر یک فیلم ۵ ثانیه ای می گیرد:
1 |
raspivid -o video.h264 |
برای تنظیم زمان از سوئیچ t استفاده کنید که مقدار را به میلی ثانیه دریافت می کند. اگه تمایل داشته باشید که دوربین دائما روشن باشد کافیست مقدار t را ۰ تنظیم کنید.
1 |
raspivid -t 1000 -o video.h264 |
اگر تصویر شما برعکس بود نسبت به کابل دوربین، میتوانید توسط سوئیچ های hf- یا vf- آن را ۱۸۰ درچه چرخش دهنید.
سوالی بود در قسمت نظرات بپرسید!!!!!
شاد و سربلند باشید….
با سلام و تشکر از مطلب بسیار خوبی که گذاشتید انصافا خیلی دنبالش بودم مدتیه یه سوال داشتم من میخواستم دوربین رو پس از زدن یک کلید برای چند ثانیه فعال کنم که تصویر آنلاین همزمان فرستاده بشه به یه رزبری دیگه از طریق wifi(تو فاصله کم و بدون نیاز به روتر) و طرف رزبری گیرنده اون رو نشون بده همچنین صدا هم ارتباط دوطرفه برقرار کنن به نظرتون شدنیه ؟
سلام.خواهش میکنم.از دوربین های ارتباط سریال استفاده کنید به راحتی امکان پذیر هستش