آموزش نصب کتابخانه OPENCV (آخرین ورژن)

0
1006
نصب کتابخانه OPENCV
نصب کتابخانه OPENCV

مطمئنا بارها شده که اسم پردازش تصویر رو شنیده باشید و شاید خیلی‌هاتون این تصور رو داشته‌باشید که کارکردن در این رشته بسیار کار سخت و پیچیده‌ای است. اما همیشه در واقعیت اونجوری که فکر می‌کنید نیست(البته با روشی که توضیح می‌دیم). اینم بگم کارکردن به‌صورت حرفه‌ای در این رشته برخلاف اسم زیبایی که داره بسیار سخت و پیچیده است. و در مقاله نمی‌خوایم دقیقا وارد اصل داستان پردازش تصویر بشیم بلکه می‌خوایم روشی رو ارائه بدیم که بتونیم به‌راحتی توی پروژه‌ها از پردازش‌تصویر استفاده‌کنیم. روشی که می‌خوایم استفاده‌کنیم، استفاده‌از کتابخانه آماده opencv است که در این قسمت می‌خوایم از همین ابتدا به‌صورت کاملا عملی شروع‌کنیم و تصمیم‌گرفتیم که این کتابخانه رو روی سیستم‌عامل رزبین نصب‌کنیم البته بگم خیلی، سیستم‌عامل فرقی نداره‌(چیزی که مهمه فرآیند نصبه). دلیل انتخاب رزبین هم این بوده که بین مهندسین الکترونیک مقبولیت بیشتری رو داره و میشه گفت کارکردن باهاش برای اول کار ساده‌تره. و همینطور از زبان‌برنامه‌نویسی Python و سخت‌افزار RaspberryPi model3B در این آموزش و آموزش‌های بعدی استفاده می‌کنیم. نکته‌ای که قبل‌از نصب مهمه و باید اطلاع‌داشته‌باشیم. اینکه کتابخانه روی چه سیستم‌عامل‌هایی کار می‌کنه. سیستم‌عامل‌هایی که از این کتابخانه پشتیبانی می‌کنند شامل: Windows, Linux, macOS, FreeBSD, NetBSD, OpenBSD و همینطور برای موبایل‌ها از سیستم‌عامل‌های زیر پشتیبانی می‌کنه: Android, iOS, Maemo,[20] BlackBerry 10

مقدمات نصب کتابخانه opencv

مرحله اول

نصب سیستم‌عاملی که مدنظرتون است، برای این‌کار به سایت RaspberryPi، قسمت Download میریم و سیستم‌عامل مربوطه رو دانلود می‌کنیم.

مرحله دوم

برای رایت‌کردن ایمیجی(فایل سیستم عامل) که دانلود کردیم می‌تونیم از نرم‌افزار‌های زیادی استفاده‌کنیم که بهترین‌هاشون Etcher , Win32DiskImage هستند.

مرحله سوم

اجرای سیستم‌عامل روی یک نمایشگر، می‌تونیم از‌طریق اتصال یک lcd به سخت‌افزار این کار رو انجام‌بدیم(روش مستقیم). البته برای راحتی‌کار می‌تونیم SSH بزنیم و بدون‌اتصال به یک نمایشگر به‌طور غیرمستقیم از‌طریق PC به‌عنوان نمایشگر استفاده‌کنیم(روش غیرمستقیم).

SSH چیست؟

SSH (اس اس اچ) مخفف عبارت «Secure Shell» (پوسته امن) است. SSH رو می‌تونیم بگیم که، پروتکل طراحی‌شده برای برقراری اتصال امن میان کاربر‌(Client) و سرور‌(Server) هست.

اجرای روش غیرمستقیم

برای استفاده‌از این روش نرم‌افزار Putty رو برای SSH پیشنهاد می‌کنیم و برای اجرای رابط گرافیکی روی نمایشگر PC از TighVNCViewer استفاده می‌کنیم. و برای جابه‌جایی فایل‌ها بین سخت‌افزار و PC نیاز‌به استفاده‌از Flash نیست بلکه می‌تونیم از نرم افزار WinSCP استفاده‌کنیم. خب پس‌از اینکه تونستیم سخت‌افزار رو به دو روشی که گفتیم‌(مستقیم و غیرمستقیم) اجرا کنیم. حالا باید در محیط CommandLine سیستم‌عامل رزبین دستورات‌زیر رو بنویسیم. تا بتونیم آخرین ورژن کتابخانه opencv رو نصب‌کنیم.

  • putty‌چیست؟ نرم‌افزاری جهت اتصال به PC و سخت‌افزار است که از این‌طریق می‌تونیم به‌صورت غیرمستقیم با محیط CommandLine سخت‌افزار ارتباط برقرار‌کنیم.
  • TighVNCViewer‌چیست؟ کاملا تعریقی مشابه با putty داره اما از این نرم‌افزار برای ارتباط گرافیکی با سخت‌افزار به‌صورت غیرمستقیم استفاده‌میشه.
  • WinSCP چیست؟ نرم‌افزاری جهت انتقال دیتا بین سخت‌افزار و PC استفاده‌میشه.

خب از اینجا به بعد کارمون میشه نصب نرم‌افزارهای جانبی و اصلی دقیقا مثل یک مهندس کامپیوتر امیدوارم که این نکته رو هم فراموش نکرده‌باشید که برای انجام این مراحل به اینترنت نیاز داریم.

مرحله اول نصب OPENCV

بازکردن فضای حافظه، برخلاف کامپیوترها با محدودیت فضای حافظه مواجه هستیم که باید فضای کل سیستم رو بازکنیم. برای این‌کار طبق دستورات‌زیر باید عمل‌کنیم.

sudo raspi-config دستور باز کردن فضای حافظه

پس‌از اجرای دستوربالا باید طبق‌شکل‌زیر عمل‌کنیم تا فضای حافظه رو بازکنیم.

 

خب پس‌ اینکه طبق شکل‌بالا عمل کردیم درنهایت گزینه Finish رو انتخاب می‌کنیم و سیستم رو ریست می‌کنیم(البته این فرایند به‌صورت خودکار اعمال میشه اما اگر به هردلیلی نشد دستور sudo reboot رو اجرا می‌کنیم) دقت‌کنید که حتما باید این فرایند انجام‌بگیره(از ما گفتن بود) حالا برای اینکه ببینیم حافظه بازشده یا نه دستور زیر رو وارد می‌کنیم.

df –h تست کردن فضای حافظه

پس‌از اینکه دستور رو وارد کردیم باید ببینیم که سایز دایرکتوری(dev/root) برابر با سایز حافظه خارجی باشه درغیراینصورت عملیات بازکردن فضای حافظه به‌درستی انجام‌نشده‌است. خب حالا چندتا نرم‌افزاری که برای این پروژه به کارمون نمی‌یاد رو هم حذف می‌کنیم چون فقط حافظه رو اشغال کردند و با پاک‌کردن این نرم‌افزار‌ها حدودا 1گیگابایت فضا خالی میشه‌(اگه پاک هم نکردید مشکلی‌نداره، یه‌وقت فکرنکنید که حتما باید این کارو انجام‌بدید).

 sudo apt-get purge wolfram-engine
sudo apt-get purge libreoffice*
sudo apt-get clean
sudo apt-get autoremove

 

مرحله دوم نصب OPENCV

ابتدا سیستم رو توسط دستورات زیر update و upgrade می‌کنیم.

sudo apt-get update
sudo apt-get upgrade

سپس ابزارهای توسعه که شامل Cmake هستند رو نصب می‌کنیم.

sudo apt-get install build-essential cmake unzip pkg-config

حالا پس‌از نصب Cmake نوبت به نصب کتابخانه‌های جانبی opencv است.

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

حال نوبت به نصب GTK میرسه که با دستور زیر نصب میشه.

sudo apt-get install libgtk-3-dev

برای کاهش هشدارهای GTK از دستور زیر استفاده می‌کنیم.

sudo apt-get install libcanberra-gtk*

برای بهینه‌سازی کتابخانه opencv از دستور زیر استفاده می‌کنیم.

sudo apt-get install libatlas-base-dev gfortran

نصب هدر‌های توسعه پایتون۳

sudo apt-get install python3-dev

حالا نوبت به نصب opencv رسیده برای اینکه نصبش کنیم ابتدا به سایت خود opencv میریم تا آخرین نسخه‌ای که منتشرشده رو دانلودکنیم. برای دانلود ابتدا با دستورزیر وارد قسمت home دایرکتوری میشیم.

~cd

و سپس ورژنی که مدنظرمون هست رو طبق دستورات‌زیر دانلود می‌کنیم. (ورژن۴ در این آموزش مدنظر ما است opencv).

دقت‌کنید که انتخاب اسم فایل کاملا دلخواه است و در اینجا اسم‌ها رو با نام‌های opencv.zip و opencv_contrib.zip انتخاب کردیم.

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

همینطوری که می‌بینید فایل ها به‌صورت فشرده هستند و باید با دستور زیر فایل‌ها رو از حالت فشرده خارج‌کنیم.

unzip opencv.zip
unzip opencv_contrib.zip

با دستور زیر می‌تونیم اسم دایرکتوری‌ها رو به اسم دلخواهی که مدنظرمونه تغییربدیم.

mv opencv-4.0.0 opencv
mv opencv_contrib-4.0.0 opencv_contrib

نکته‌ای که وجود داره اینکه می‌تونیم اسم دایرکتوری رو تغییرندیم اما باید مسیر CMake path رو چک‌کنیم. حال نوبت به تنظیم متغیر محلی پایتون۳ برای OpenCV4 رسیده که این‌کار رو با دستورات‌زیر انجام‌میدیم.

wget https://bootstrap.pypa.io/get-pip.py
sudo python3 get-pip.py

اگر با متغیرهای محلی در پایتون آشنایی ندارید توصیه می‌کنیم اینجا کلیک‌کنید. متغیرهای محلی این اجازه رو به ما میدند که ورژن‌های مختلفی از نرم‌افزار پایتون و یا… رو به‌صورت ایزوله روی سیستم اجرا‌کنیم. حالا می‌خوایم یک متغیر ایجاد‌کنیم ولی میتونید هر‌چقدر که نیاز‌داشتید برای پروژه‌های بعدیتون ایجاد‌کنید‌(‌مسیر همینه)

sudo pip install virtualenv virtualenvwrapper
sudo rm -rf ~/get-pip.py ~/.cache/pip

خب وقتش رسیده که فایل ~/.profile رو آپدیت کنیم. البته همینجوری که نمیشه آپدیت کرد نیازبه یک ادیتور متن مثل Nano یا Vi یا Vim برای این کار از دستور زیر استفاده می‌کنیم.

Sudo nano ~/.profile

بعدش خطوط زیر رو اضافه می‌کنیم که به دو روش میشه اینکار رو انجام‌داد.

روش اول:

# virtualenv and virtualenvwrapper
export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
source /usr/local/bin/virtualenvwrapper.sh

روش دوم:

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

حالا پس‌از اضافه‌کردن دستورات به ~/.profile لازمه که فایل رو به‌صورت Source دربیاریم.

source ~/.profile

و فایل opencv رو باید داخل یک متغیر محلی بریزیم که با دستور زیر این کارو انجام میدیم.

mkvirtualenv cv -p python3
workon cv

درنهایت باید به شکل‌زیر برسیم.

خروجی
خروجی

 

برای انجام محاسبات ریاضی کتابخانه، نیازبه نصب ماژول numpy است که طبق دستورزیر این ماژول رو نصب می‌کنیم.

pip install numpy

سپس دستورات‌زیر رو وارد می‌کنیم.

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 ..

اگر مراحلی که گفتیم رو به‌درستی انجام‌داده‌باشیم باید به شکل‌های زیر برسیم.

نصب موفقیت‌آمیز ماژول numpy
نصب موفقیت‌آمیز ماژول numpy

 

اگر با همچین کادری مواجه‌شدیم به این معنیه که می‌تونیم از الگوریتم‌ها استفاده‌کنیم‌(یعنی تا این مرحله کارمون به‌درستی انجام‌شده).

اجازه استفاده از الگوریتم‌ها
اجازه استفاده از الگوریتم‌ها

 

اگر عملیاتی که از قبل انجام‌داده‌بودیم داخل متغیر محلی که تعریف‌کرده‌بودیم‌(متغیر cv)ریخته‌شده‌بود و همینطور اگر interpreter هم به پایتون۳ اشاره‌داشت. میشه گفت که تا این مرحله کارمون رو به‌درستی انجام‌دادیم.

نکته اساسی:
افزایش حجم swap swap فضایی از هارده که مقدارکمی از سیستم‌عامل رو (OS) بهش اختصاص میدیم و این فضا خالی نگه‌داشته‌میشه تا درصورتیکه فضای حافظه ram کم اومد و کارسنگینی انجام می‌داد سیستم هنگ نکنه. برای افزایش حجم swap هم باید دستورات‌زیر رو وارد‌کنیم.

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

 

حالا نوبت به کامپایل opencv میرسه که این کار رو با دستور زیر انجام‌میدیم. دقت‌کنید عددی که نوشته‌شده به تعداد هسته‌های سخت‌افزار اشاره می‌کنه که با چند هسته کامپایل کنه.

make -j4

با این دستور هم opencv رو نصب می‌کنیم.

sudo make install
sudo ldconfig

دقت‌کنید که پس‌از نصب، حجم swap رو به ۱۰۰Mb باید برگردونیم. حالا نوبت به آدرس‌دهی opencv به متغیر محلیه که ایجاد کردیم. دقت‌کنید آدرس رو حتما چک‌کنید که در چه آدرسی از سیستم نصب‌میشه چون اگر آدرس رو اشتباه وارد کنیم فرایند نصب به درستی انجام نخواهد شد(لطفا به مسیر نصب دقت‌کنید).

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 ~

پس‌از انجام فرایندی که گفتیم حالا نوبت به تست opencv هست که ببینیم اصلا نصب‌شده یا نشده؟ برای این‌کار باید دستورات زیر رو اجرا کنیم.

workon cv
python

پس‌از اجرای دستور‌بالا، باید محیط IDE پایتون رو باز‌کنیم و دستورات‌زیر رو اجرا‌کنیم.

>>> import cv2
>>> cv2.__version__

اگر همه‌چیز درست باشه باید به خط زیر برسیم.

'4.0.0'

و درنهایت برای خارج‌شدن باید دستور زیر رو وارد‌کنیم.

>>> exit()

خب خسته‌نباشید اینم از نصب آخرین ورژن کتابخانه opencv که به‌راحتی برای پروژه‌های خودتون می‌تونید ازش استفاده‌کنید. تمامی دستورات رو می‌تونید از اینجا دانلود‌کنید.[download id=”undefined”] در قسمت بعد یک پروژه پردازش تصویر با این کتابخانه انجام‌خواهیم‌داد که شامل موارد‌زیر هستند:

  • اضافه‌کردن تصویر
  • شناسایی تصویر
  • استفاده‌از موتورهای شناسایی

با ما همراه باشید.

 

منبع: سیسوگ

مطلب قبلیدیپ فیک بلای جان بشریت
مطلب بعدیآموزش FPGA قسمت نهم: ساختار شرطیif (بخش اول)

پاسخ دهید

لطفا نظر خود را وارد کنید!
لطفا نام خود را در اینجا وارد کنید