آموزش نصب OpenCV 3 با Python 3 بر روی بر روی سیتم‌عامل ubuntu 17.10

در این نوشته یاد می‌گیریم که چطور OpenCV رو روی اوبونتو نصب کنیم

[این نوشته ترجمه و ایده گرفته از آموزش‌های وب‌سایت adrian هست.]

برای خود من نصب OpenCV کمی ترسناکه، معمولا توی آموزش‌های OpenCV یک عالمه چیز رو ردیف کردن و گفتن نصب کنید بدون این که توضیح بدن چرا! اما آدرین [وبسایت بالا] خیلی خوب و دقیق توضیح داده هر چیزی رو چرا نصب می‌کنیم، من ترجمه‌ی آزادی از نوشته‌های اون در مورد آموزش نصب OpenCV رو با چاشنی حذف و اضافه اینجا می‌گذارم.

قبل از هرچزی بگم که اوبونتو من 17.10 و نسخه‌ی پایتونم 3.6.3 است (توی ترمینال بزنید Payton3 تا بتونید نسخه‌ی پایتون۳ خودتون رو ببینید.)

 

گام اول- نصب چیزهایی که OpenCV به اون‌ها احتیاج داره:

اول از همه تریمنالتون رو باز کنید ( ctr + alt +t) و پکیج‌های apt-getرو با دوتا دستور زیر به‌روز کنید:

sudo apt-get update
sudo apt-get upgrade

خوب بیاید چندتا ابزار توسعه (developer tools) رو که لازم داریم نصب کنیم:

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

آدرین توضیح داده که به احتمال زیاد پکیج pkg-configروی سیستم ما از قبل نصب باشه اما برای این که مطمئن باشیم اون رو توی دستور apt-getبالا می‌نویسیم، ما از cmakeبرای تنظیم اتوماتیک نصب OpenCV استفاده خواهیم.

OpenCV یک کتابخونه‌ی بینایی ماشین و پردازش تصویر هست و بنابراین نیاز داره تا بتونه فرمت‌ها مختلف تصویر مثل JPEG, PNG, TIFFو … رو از حافظه بخونه، برای این کار OpenCV میاد و از کتابخونه های دیگه‌ی image I/Oاستفاده می‌کنه که در واقع فراید خوندن و دیکد رو آسون می‌کنن، اونها رو نصب می‌کنیم:

sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
sudo apt update
sudo apt-get install libjpeg-dev libtiff5-dev libjasper-dev libpng-dev

تا اینجاییم بهتره ابزارهای لازم برای بارگذاری ویدئو  و دسترسی به دوربین(ویکم و …) رو هم نصب کنیم:

sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
sudo apt-get install libxvidcore-dev libx264-dev

OpenCV همراه خودش یک سری ابزار ایجاد GUI داره که این ابزارها بسیار ساده هستن. ابزارهایی مثل نمایش تصویر روی صفحه (cv2.imshow)، صبرکنه تا دکمه‌ی ضبط رو بزنیم (cv2.waitKey)، حرکات موس رو دنبال کنه (cv2.setMouseCallback) و چیزهای ساده ای مثل sliders و trackbars بسازیم. ما نمی‌تونیم با خود OpenCV رابط کاربری‌های خیلی پیشرفته‌ای بسازیم و بیشتر به درد دیباگ کردن کدمون و ساخت یک GUI ساده می‌خورن.

highgui ماژولیه که برای ساخت GUI استفاده می‌شود. این ماژول در کتابخونه‌ی GTKهست پس بیاید GTKرو نصب کنیم:

sudo apt-get install libgtk-3-dev

یک سری کتابخونه رو نصب می‌کنیم که به بهینه سازی برخی توابع داخل OpenCV [مثل انجام عملیات ماتریسی] کمک می‌کنن:

sudo apt-get install libatlas-base-dev gfortran

هدرهای توسعه و کتابخانه‌هایی استاتیک رو برای نسخه‌ی Pythonمون نصب می‌کنیم (من برای هر دو نسخه‌ی پایتون 2.7 و 3.6 نصب کردم):

sudo apt-get install python2.7-dev python3.6-dev

 

گام دوم- نصب سورس OpenCV:

اول از این آدرس چک می‌کنیم آخرین نسخه‌ی OpenCV کدومه، الان که من دارم این آموزش رو می‌نویسم آخرین نسخه‌ی پایداری که اومده 3.3.1 هست. با دستورات زیر آخرین نسخه رو دانلود و unzip می‌کنیم:

cd ~
wget -O opencv.zip https://github.com/Itseez/opencv/archive/3.3.1.zip
unzip opencv.zip

خوب حالا  مخزن opencv_contrib (OpenCV’s extra modules) رو هم از این آدرس دانلود می‌کنیم [به نسخه‌ای که دانلود می‌کنید دقت کنید با چیزی که اون بالا دانلود کردیم یکی باشه]:

wget -O opencv_contrib.zip https://github.com/Itseez/opencv_contrib/archive/3.3.1.zip
unzip opencv_contrib.zip

چرا contrib repoرو دانلود کردیم؟ چون در نسخه‌ی OpenCV 3+پکیج‌هایی مثل SIFT و SURF به contribمنتقل شدن و ما برای این که نصب کاملی (full install)  از OpenCV داشته باشیم این مخزن رو هم دانلود می‌کنیم.

 

گام سوم- راه اندازی محیط Python 3:

اولین گام اینه که پکیج منیجر Python (همون pip) رو نصب کنیم:

cd ~
wget https://bootstrap.pypa.io/get-pip.py
sudo python get-pip.py

آدرین توصیه کرده که میحط‌های توسعه‌ی پایتون virtualenv و virtualenvwrapper رو هم نصب کنیم، چرا؟ چون ممکنه برای مثال در پروژه‌‌‌ی x به ورژن 1.0 و در پروژه‌ی Y به نسخه‌‌ی 2.3 یک کتابخونه احتیاج داشته باشیم و با استفاده از این محیط‌ها به سادگی می تونیم این مشکل رو حل کنیم، این محیط‌های مجازی بهمون کمک می‌کنه که Python سیستممون رو به صورت منظم، مرتب و رایگان از «درهم و برهمی» دور نگه داریم!

sudo -H pip3 install virtualenv virtualenvwrapper

بیایم و چیزهایی که دانلود کردیم و الان دیگه لازم نداریم رو پاک کنیم:

sudo rm -rf ~/get-pip.py ~/.cache/pip

باید virtualenvو virtualenvwrapperرو به ~/.bashrcاضافه کنیم، با ادیتور دلخواهمون فایل ~/.bashrc رو ویرایش می‌کنیم و خط‌های زیر رو به انتهای اون اضافه میکنیم:

# virtualenv and virtualenvwrapper
export VIRTUALENVWRAPPER_PYTHON=`which python`
export VIRTUALENVWRAPPER_VIRTUALENV=`which virtualenv`
source `which virtualenvwrapper.sh`

و حالا که تغییرات رو انجام دادیم باید ~/.bashrc رو مجددا راه اندازی کنیم، دستور زیر:

source ~/.bashrc

وقتشه محیط مجازی پایتونیم رو ایجاد کنیم، ما با استفاده از mkvirtualenvاین کار رو انجام می‌دهیم:

mkvirtualenv cv -p python3

در دستور بالا ما اسم محیط مجازیمون رو گذاشتم «cv» (شما هرچیزی که دوست دارید بگذارید و تا آخر کار بهش وفادار بمونید)، چک کنیم ببینیم آیا محیط مجازیمون ایجاد شده؟:

workon cv

به اون (cv) که قبل از mh-salari اضافه شده دقت کنید، برای شما هم باید یک (cv) قبل از نام کاربریتون اضافه شده باشه، این نشون می‌ده که توی محیط مجازی‌ای که درست کردیم هستیم.

NumPy رو نصب کنیم:

اول مطمعن بشید که توی محیط (cv) که درست کردیم هستید [از این به بعد همه‌ی دستورات رو در محیط (cv) وارد می‌کنیم مگر اینکه خلافش رو بگیم!] حالا دستور زیر رو وارد کنید:

pip install numpy

 

گام چهارم- تنظیم و نصب OpenCV بر روی Ubuntu 17.10:

با استفاده از CMakeمیایم و buildمون رو راه اندازی و تنظیم می‌کنیم [به عدد 3.3.1 دقت کنید و مطابق با نسخه‌ای که در مراحل قبل دانلود کردید اون‌ها رو تغییر بدید]:

 

cd ~/opencv-3.3.1/
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE \
  -D CMAKE_INSTALL_PREFIX=/usr/local \
  -D INSTALL_PYTHON_EXAMPLES=ON \
  -D INSTALL_C_EXAMPLES=OFF \
  -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-3.3.1/modules \
  -D PYTHON_EXECUTABLE=~/.virtualenvs/cv/bin/python \
  -D BUILD_EXAMPLES=ON ..

مطمعن شید که قسمت Python 3 شما مثل من باشه:

خوب حالا با دستور زیر کار رو ادامه می‌دهیم:

make -j8

j8 یعنی ما از ۸ تا از هسته‌های پردازنده برای کامپایل استفاده می‌کنیم (سیستم من CPUش ۸ هسته‌ای هست، شما بسته به سیستم خودتون این عدد رو انتخاب کنید).

استفاده از چندتا هسته می تونه سرعت رو بالا ببره اما اگر به مشکل خوردید شاید به خاطر همین استفاده از چندتا هسته بوده، اگر با دستور بالا به مشکل خوردید با دستور make clean فایل های نیمه کاره رو پاک می‌کنیم و مجددا makeمی‌کنیم احتمالا مشکل رفع شه. :

make clean
make

باید چنین چیزی رو ببینید:

و حالا وقتشه که واقعا OpenCVرو نصب کنیم!:D

sudo make install
sudo ldconfig

 

گام آخر – اتمام مراحل نصب:

بعد از این که دستور قبلی کارش تموم شد OpenCV باید در آدرس زیر نصب شده باشه، بیاید و بررسی کنیم ببینم درسته یا نه:

ls -l /usr/local/lib/python3.6/site-packages/

باید چنین خروجی‌ای داشته باشید:

total 4632
-rw-r--r-- 1 root staff 4740216 Jan 19 16:34 cv2.cpython-36m-x86_64-linux-gnu.so

باید اسم فایل cv2.cpython-36m-x86_64-linux-gnu.so رو به cv2.so تغییر بدیم (چرا؟ چون قبلا cv2.soنامگذای می‌شده و توی نسخه‌های جدید مدل نامگذای عوض شده، ولی ما پایبند به سنت‌ها هستم،نه؟) :

cd /usr/local/lib/python3.6/site-packages/
sudo mv cv2.cpython-36m-x86_64-linux-gnu.so cv2.so

وقشته sym-link کنیم بین OpenCV bindingsمون و virtual environment for Python 3.6:

cd ~/.virtualenvs/cv/lib/python3.6/site-packages/
ln -s /usr/local/lib/python3.6/site-packages/cv2.so cv2.so

واقعا نصب شد؟!

یک ترمیال جدید باز کنید و دستورات تصویر زیر رو وارد کنید، اگر cv2‌ به درستی import شد کار تمومه!

خوب تبریک می‌گم، می‌تونیم فایل‌هایی که دانلود کردیم رو پاک کنیم:

cd ~
rm -rf opencv-3.3.1 opencv_contrib-3.3.1 opencv.zip opencv_contrib.zip

نویسنده: محمد حسین سالاری.

موارد مشابه

۴ دیدگاه

  1. سلام
    ممنون از سايت خوبتون
    من قبلا cv2 رو روي پايتون ٣ نصب كردم
    امروز موردي پيش اومد كه مجبور شدم با sudo pip install opencv-contrib-python
    اون رو اپديت كنم
    ولي الان هر كاري ميكنم ديگه cv2روي پايتون ٣ import نميشه .
    خاهشا كمك كنين ??

    1. سلام:)
      با این دستور می‌شه لیست کامل پکیج‌های نصب شده پایتون رو دید، چک کنید OpenCV رو هنوز داریم یا نه.
      pip3 freeze
      بعد برای پایتون ۳ باید با دستور pip3 کار می‌کردی، و برای آپدیت با فلگ مشخص می‌کرد می‌خوای آپدریت کنی، یعنی این دستور به جای دستورخودت:
      sudo pip3 install –upgrade opencv-contrib-python

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *