مطمئنا بارها شده که اسم پردازش تصویر رو شنیده باشید و شاید خیلیهاتون این تصور رو داشته باشید که کار کردن در این رشته بسیار کار سخت و پیچیدهای است. اما همیشه در واقعیت اونجوری که فکر میکنید نیست (البته با روشی که توضیح میدیم). اینم بگم کار کردن به صورت حرفهای در این رشته برخلاف اسم زیبایی که داره بسیار سخت و پیچیده است. و در مقاله نمیخوایم دقیقا وارد اصل داستان پردازش تصویر بشیم بلکه میخوایم روشی رو ارائه بدیم که بتونیم به راحتی توی پروژهها از پردازش تصویر استفاده کنیم. روشی که میخوایم استفاده کنیم، استفاده از کتابخانه آماده opencv است که در این قسمت میخوایم از همین ابتدا به صورت کاملا عملی شروع کنیم و تصمیم گرفتیم که این کتابخانه رو روی سیستم عامل رزبین نصب کنیم البته بگم خیلی، سیستم عامل فرقی نداره ( چیزی که مهمه فرآیند نصبه). دلیل انتخاب رزبین هم این بوده که بین مهندسین الکترونیک مقبولیت بیشتری رو داره و میشه گفت کارکردن باهاش برای اول کار سادهتره. و همینطور از زبان برنامهنویسی Python و سخت افزار RaspberryPi model3B در این آموزش و آموزشهای بعدی استفاده میکنیم. نکتهای که قبل از نصب مهمه و باید اطلاع داشته باشیم. اینکه کتابخانه روی چه سیسم عاملهایی کار میکنه. سیستم عاملهایی که از این کتابخانه پشتیبانی می کنند شامل: Windows, Linux, macOS, FreeBSD, NetBSD, OpenBSD و همینطور برای موبایلها از سیستم عاملهای زیر پشتیبانی میکنه: Android, iOS, Maemo,[20] BlackBerry 10 putty چیست؟ نرم افزاری جهت اتصال به PC و سخت افزار است که از این طریق میتونیم به صورت غیرمستقیم با محیط CommandLine سخت افزار ارتباط برقرار کنیم. TighVNCViewer چیست؟ کاملا تعریقی مشابه با putty داره اما از این نرم افزار برای ارتباط گرافیکی با سخت افزار به صورت غیرمستقیم استفاده میشه. WinSCP چیست؟ نرم افزاری جهت انتقال دیتا بین سخت افزار و PC استفاده میشه. خب از اینجا به بعد کارمون میشه نصب نرم افزار های جانبی و اصلی دقیقا مثل یک مهندس کامپیوتر امیدوارم که این نکته رو هم فراموش نکرده باشید که برای انجام این مراحل به اینترنت نیاز داریم.
پس از اجرای دستور بالا باید طبق شکل زیر عمل کنیم تا فضای حافظه رو باز کنیم.
خب پس اینکه طبق شکل بالا عمل کردیم در نهایت گزینه Finish رو انتخاب میکنیم و سیستم رو ریست میکنیم (البته این فرایند به صورت خودکار اعمال میشه اما اگر به هر دلیلی نشد دستور sudo reboot رو اجرا میکنیم) دقت کنید که حتما باید این فرایند انجام بگیره (از ما گفتن بود) حالا برای اینکه ببینیم حافظه باز شده یا نه دستور زیر رو وارد میکنیم.
پس از اینکه دستور رو وارد کردیم باید ببینیم که سایز دایرکتوری (dev/root) برابر با سایز حافظه خارجی باشه در غیر اینصورت عملیات باز کردن فضای حافظه به درستی انجام نشده است. خب حالا چندتا نرم افزاری که برای این پروژه به کارمون نمییاد رو هم حذف میکنیم چون فقط حافظه رو اشغال کردند و با پاک کردن این نرمافزارها حدودا 1گیگابایت فضا خالی میشه (اگه پاک هم نکردید مشکلی نداره، یه وقت فکر نکنید که حتما باید این کارو انجام بدید).
سپس ابزار های توسعه که شامل Cmake هستند رو نصب میکنیم.
حالا پس از نصب Cmake نوبت به نصب کتابخانههای جانبی opencv است.
حال نوبت به نصب GTK میرسه که با دستور زیر نصب میشه.
برای کاهش هشدارهای GTK از دستور زیر استفاده میکنیم.
برای بهینه سازی کتابخانه opencv از دستور زیر استفاده میکنیم.
نصب هدرهای توسعه پایتون 3
حالا نوبت به نصب opencv رسیده برای اینکه نصبش کنیم ابتدا به سایت خود opencv میریم تا آخرین نسخه ای که منتشر شده رو دانلود کنیم. برای دانلود ابتدا با دستور زیر وارد قسمت home دایرکتوری میشیم.
دقت کنید که انتخاب اسم فایل کاملا دلخواه است و در اینجا اسم ها رو با نام های opencv.zip و opencv_contrib.zip انتخاب کردیم.
همینطوری که میبینید فایل ها به صورت فشرده هستند و باید با دستور زیر فایلها رو از حالت فشرده خارج کنیم.
با دستور زیر میتونیم اسم دایرکتوریها رو به اسم دلخواهی که مدنظرمونه تغییر بدیم.
نکته ای که وجود داره اینکه میتونیم اسم دایرکتوری رو تغییر ندیم اما باید مسیر CMake path رو چک کنیم. حال نوبت به تنظیم متغیر محلی پایتون 3 برای OpenCV4 رسیده که این کار رو با دستورات زیر انجام میدیم.
اگر با متغییر های محلی در پایتون آشنایی ندارید توصیه میکنیم اینجا کلیک کنید. متغیرهای محلی این اجازه رو به ما میدند که ورژن های مختلفی از نرم افزار پایتون و یا … رو به صورت ایزوله روی سیستم اجرا کنیم. حالا میخوایم یک متغیر ایجاد کنیم ولی میتونید هر چقدر که نیاز داشتید برای پروژه های بعدیتون ایجاد کنید ( مسیر همینه)
خب وقتش رسیده که فایل ~/.profile رو آپدیت کنیم. البته همینجوری که نمیشه آپدیت کرد نیاز به یک ادیتور متن مثل Nano یا Vi یا Vim برای این کار از دستور زیر استفاده میکنیم.
بعدش خطوط زیر رو اضافه میکنیم که به دو روش میشه اینکار رو انجام داد. روش اول:
روش دوم:
حالا پس از اضافه کردن دستورات به ~/.profile لازمه که فایل رو به صورت Source در بیاریم.
و فایل opencv رو باید داخل یک متغیر محلی بریزیم که با دستور زیر این کارو انجام میدیم.
در نهایت باید به شکل زیر برسیم.
برای انجام محاسبات ریاضی کتابخانه، نیاز به نصب ماژول numpy است که طبق دستور زیر این ماژول رو نصب میکنیم.
سپس دستورات زیر رو وارد میکنیم.
اگر مراحلی که گفتیم رو به درستی انجام داده باشیم باید به شکل های زیر برسیم.
اگر با همچین کادری مواجه شدیم به این معنیه که میتونیم از الگوریتمها استفاده کنیم ( یعنی تا این مرحله کارمون به درستی انجام شده).
اگر عملیاتی که از قبل انجام داده بودیم داخل متغیر محلی که تعریف کرده بودیم (متغیر cv) ریخته شده بود و همینطور اگر interpreter هم به پایتون 3 اشاره داشت. میشه گفت که تا این مرحله کارمون رو به درستی انجام دادیم. نکته اساسی:
حالا نوبت به کامپایل opencv میرسه که این کار رو با دستور زیر انجام میدیم. دقت کنید عددی که نوشته شده به تعداد هسته های سخت افزار اشاره میکنه که با چند هسته کامپایل کنه.
با این دستور هم opencv رو نصب میکنیم.
دقت کنید که پس از نصب، حجم swap رو به 100Mb باید برگردونیم. حالا نوبت به آدرس دهی opencv به متغیر محلیه که ایجاد کردیم. دقت کنید آدرس رو حتما چک کنید که در چه آدرسی از سیستم نصب میشه چون اگر آدرس رو اشتباه وارد کنیم فرایند نصب به درستی انجام نخواهد شد (لطفا به مسیر نصب دقت کنید).
پس از انجام فرایندی که گفتیم حالا نوبت به تست opencv هست که ببینیم اصلا نصب شده یا نشده؟ برای این کار باید دستورات زیر رو اجرا کنیم.
پس از اجرای دستور بالا، باید محیط IDE پایتون رو باز کنیم و دستورات زیر رو اجرا کنیم.
اگر همه چیز درست باشه باید به خط زیر برسیم.
و در نهایت برای خارج شدن باید دستور زیر رو وارد کنیم.
خب خسته نباشید اینم از نصب آخرین ورژن کتابخانه opencv که به راحتی برای پروژه های خودتون میتونید ازش استفاده کنید. تمامی دستورات رو میتونید از اینجا دانلود کنید.[download id=”undefined”] در قسمت بعد یک پروژه پردازش تصویر با این کتابخانه انجام خواهیم داد که شامل موارد زیر هستند با سیسوگ همراه باشید.
مقدمات نصب کتابخانه opencv
مرحله اول
نصب سیستم عاملی که مدنظرتون است، برای این کار به سایت RaspberryPi، قسمت Download میریم و سیستمعامل مربوطه رو دانلود میکنیم.مرحله دوم
برای رایت کردن ایمیجی(فایل سیستم عامل) که دانلود کردیم میتونیم از نرم افزارهای زیادی استفاده کنیم که بهترینهاشون Etcher , Win32DiskImage هستند.مرحله سوم
اجرای سیستمعامل روی یک نمایشگر، میتونیم از طریق اتصال یک lcd به سخت افزار این کار رو انجام بدیم (روش مستقیم). البته برای راحتی کار میتونیم SSH بزنیم و بدون اتصال به یک نمایشگر به طور غیرمستقیم از طریق PC به عنوان نمایشگر استفاده کنیم (روش غیرمستقیم). SSH چیست؟ SSH (اس اس اچ) مخفف عبارت «Secure Shell» (پوسته امن) است. SSH رو میتونیم بگیم که، پروتکل طراحی شده برای برقراری اتصال امن میان کاربر (Client) و سرور (Server) هست.اجرای روش غیرمستقیم
برای استفاده از این روش نرم افزار Putty رو برای SSH پیشنهاد میکنیم و برای اجرای رابط گرافیکی روی نمایشگر PC از TighVNCViewer استفاده میکنیم. و برای جابهجایی فایلها بین سختافزار و PC نیاز به استفاده از Flash نیست بلکه میتونیم از نرم افزار WinSCP استفاده کنیم. خب پس از اینکه تونستیم سختافزار رو به دو روشی که گفتیم (مستقیم و غیرمستقیم) اجرا کنیم. حالا باید در محیط CommandLine سیستم عامل رزبین دستورات زیر رو بنویسیم. تا بتونیم آخرین ورژن کتابخانه opencv رو نصب کنیم.
مرحله اول نصب OPENCV
باز کردن فضای حافظه، برخلاف کامپیوترها با محدودیت فضای حافظه مواجه هستیم که باید فضای کل سیستم رو باز کنیم. برای این کار طبق دستورات زیر باید عمل کنیم.
1 | sudo raspi-config دستور باز کردن فضای حافظه |
1 | df –h تست کردن فضای حافظه |
1 2 3 4 | sudo apt-get purge wolfram-engine sudo apt-get purge libreoffice* sudo apt-get clean sudo apt-get autoremove |
مرحله دوم نصب OPENCV
ابتدا سیستم رو توسط دستورات زیر update و upgrade میکنیم.1 2 | sudo apt-get update sudo apt-get upgrade |
1 | sudo apt-get install build-essential cmake unzip pkg-config |
1 2 3 | sudo apt-get install libjpeg-dev libpng-dev libtiff-dev sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev sudo apt-get install libxvidcore-dev libx264-dev |
1 | sudo apt-get install libgtk-3-dev |
1 | sudo apt-get install libcanberra-gtk* |
1 | sudo apt-get install libatlas-base-dev gfortran |
1 | sudo apt-get install python3-dev |
1 | ~cd |
و سپس ورژنی که مدنظرمون هست رو طبق دستورات زیر دانلود میکنیم. (ورژن 4 در این آموزش مدنظر ما است opencv).
1 2 | wget -O opencv.zip https://github.com/opencv/opencv/archive/4.0.0.zip wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/4.0.0.zip |
1 2 | unzip opencv.zip unzip opencv_contrib.zip |
1 2 | mv opencv-4.0.0 opencv mv opencv_contrib-4.0.0 opencv_contrib |
1 2 | wget https://bootstrap.pypa.io/get-pip.py sudo python3 get-pip.py |
1 2 | sudo pip install virtualenv virtualenvwrapper sudo rm -rf ~/get-pip.py ~/.cache/pip |
1 | Sudo nano ~/.profile |
1 2 3 4 | # virtualenv and virtualenvwrapper export WORKON_HOME=$HOME/.virtualenvs export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3 source /usr/local/bin/virtualenvwrapper.sh |
1 2 3 4 | echo -e "\n# virtualenv and virtualenvwrapper" >> ~/.profile echo "export WORKON_HOME=$HOME/.virtualenvs" >> ~/.profile echo "export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3" >> ~/.profile echo "source /usr/local/bin/virtualenvwrapper.sh" >> ~/.profile |
1 | source ~/.profile |
1 | mkvirtualenv cv -p python3 |
1 | workon cv |
1 | pip install numpy |
1 2 3 4 5 6 7 8 9 10 11 12 13 | cd ~/opencv mkdir build cd build cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local \ -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \ -D ENABLE_NEON=ON \ -D ENABLE_VFPV3=ON \ -D BUILD_TESTS=OFF \ -D OPENCV_ENABLE_NONFREE=ON \ -D INSTALL_PYTHON_EXAMPLES=OFF \ -D BUILD_EXAMPLES=OFF .. |
افزایش حجم swap swap فضایی از هارده که مقدار کمی از سیستم عامل رو (OS) بهش اختصاص میدیم و این فضا خالی نگه داشته میشه تا در صورتی که فضای حافظه ram کم اومد و کار سنگینی انجام میداد سیستم هنگ نکنه. برای افزایش حجم swap هم باید دستورات زیر رو وارد کنیم.
1 2 3 4 5 6 7 8 9 | sudo nano /etc/dphys-swapfile # CONF_SWAPSIZE=100 CONF_SWAPSIZE=2048 افزایش حجم swap برای کار کردن با 4 هسته سخت افزار sudo /etc/init.d/dphys-swapfile stop sudo /etc/init.d/dphys-swapfile start ریست swap |
1 | make -j4 |
1 2 | sudo make install sudo ldconfig |
1 2 3 | cd ~/.virtualenvs/cv/lib/python3.5/site-packages/ ln -s /usr/local/python/cv2/python-3.5/cv2.cpython-35m-arm-linux-gnueabihf.so cv2.so cd ~ |
1 2 | workon cv python |
1 2 | >>> import cv2 >>> cv2.__version__ |
1 | '4.0.0' |
1 | >>> exit() |
- اضافه کردن تصویر
- شناسایی تصویر
- استفاده از موتورهای شناسایی
سلام و درود ممنون بایت اموزش خوبتان مشکلی دارم در مرحله build ایا باید کل دستوارت زیر را در nano قرار ده مستقما وارد نماییمم یا فقط 100 را به 2048 تغییر دهم و دستورات مابقی را در خود ترمینال باید
سلام
ببخشید که این بخش خوب توضیح داده نشده
توی قسمت نانو فقط باید 100 به 2048 تغییر کنه و باقی دستورات رو باید در ترمینال وارد کنید.