آموزش نصب OpenCV در ویژوال استودیو

آموزش نصب OpenCV در ویژوال استودیو

5/5 - امتیاز کاربران

کتابخانه‌ی OpenCV (مخفف Open Computer Vision) از پرکاربردترین کتابخانه ها برای پردازش تصویر، بینایی استریو و یادگیری ماشینی است. در این کتابخانه ماژولهای متعددی از کار با تصاویر و ویدیو گرفته تا انواع طبقه بندهای هوشمند مثل شبکه عصبی و SVM وجود دارد و باتوجه به نوع توسعه آن که با همکاری برنامه نویسان از سراسر جهان اتفاق می افتد، روز به روز امکانات تازه ای به آن اضافه می شود.

این کتابخانه برای اکثر سیستم عاملها مثل ویندوز، لینوکس و اندروید در دسترس است. با توجه به اینکه OpenCV نسخه نصبی ندارد، غالبا برنامه نویسان در ابتدای کار، به مشکل می خورند. در آموزش زیر، طی چند گام، فرایند نصب یا پیکربندی OpenCV به منظور استفاده در ویژوال سی را توضیح میدهیم.

 

نحوه پیکربندی OpenCV برای استفاده در Visual Studio

  1. دانلود نسخه مورد نظر از بخش دانلود OpenCVOpenCV - اپن سی وی

    • در حال حاضر آخرین نسخه، OpenCV 3.4 است که در آدرس فوق تنها نسخه ۶۴ بیتی آن برای ویژوال استودیو ۲۰۱۵ و ۲۰۱۷ وجود دارد. برای استفاده از نسخه ۳۲ بیتی یا ویژوال استودیوی ۲۰۱۰ باید خودتان سورس OpenCV را دوباره کامپایل کنید. نحوه کامپایل آن در این ویدیو آمده که با تغییر کامپایلر می توانید برای پیکربندی مورد نظر خودتان کامپایل کنید.
    • نسخه OpenVC 3.3 همراه با ماژولهای اضافی مثل SIFT و SURF و Face Detection برای دو حالت ۶۴ و ۳۲ بیتی توسط شرکت شهاب تهیه شده که در این آدرس قابل دانلود است: (دانلود OpenCV 3.3)
  2. بازگشایی فایلها در یک مسیر مناسب مثلا C:\OpenCV
    • دقت کنید که فایلی که دانلود کرده اید عملا یک فایل زیپ است و نه فایل نصبی، لذا باید آن را در جای مناسبی که حداقل یک گیگابایت فضا داشته باشد، Extract کنید.
  3. پیکربندی متغیرهای محیطی ویندوز
    • برای اینکه ناچار نباشیم فایلهای dll مرتبط با OpenCV را هر بار کنار پروژه مان کپی کنیم، کافیست یک بار مسیر این فایلها را به PATH ویندوز اضافه کنیم. برای این منظور دکمه Win+PauseBreak را فشار دهید یا روی My Computer کلیک راست کرده و Properties را انتخاب کنید. سپس روی دکمه Advanced System Settings کلیک کرده و در پنجره جدید، گزینه Environment Variables را انتخاب کنید:
    • My Computer Properties
      Advanced System Settings Windows 10
      system Properties
      Environment Variables Windows 10
    • در پنجره متغیرهای محیطی، متغیر Path را بیابید و دکمه Edit را بزنید. در پنجره جدید اگر ویندوز ۱۰ داشته باشید چیزی شبیه زیر می بینید که باید مسیر فایلهای باینری را در انتهای آن اضافه کنید. اگر هم ویندوز قدیمی تر دارید، انتهای جعبه متنی باز شده، یک نقطه ویرگول (;) بزنید و سپس آدرس مذکور را اضافه کنید. مسیر فایلهای باینری برای ویژوال استودیو ۲۰۱۵ و نسخه ۶۴ بیتی شبیه این است: C:\OpenCV3.1\build\x64\vc14\bin
      Set OpenCV 3.1 Path x64
    • دقت کنید که نسخه ۳٫۰ OpenCV و بالاتر، برای خلاف نسخه های قبلی فایلهای باینری ۳۲ بیتی (x86) را به طور پیش فرض ندارد و اگر سیستم عامل شما ۳۲ بیتی است باید خودتان سورس این کتابخانه را به صورت ۳۲ بیتی کامپایل کنید یا از نسخه ی ۲٫۴٫۱۳ استفاده کنید که باینریهای ۳۲ بیتی را هم دارند. راه سوم هم استفاده از فایلهایی است که ما تهیه کرده ایم + .
  4. پیکربندی ویژوال استودیو برای OpenCV
  • برای اینکه همیشه بتوانیم از OpenCV استفاده کنیم، کافیست یک بار پروفایل مربوط به Microsoft.Cpp.x64.user را تغییر دهیم. از این پس هر پروژه ای بسازیم، مسیرهای OpenCV را می شناسد. http://shahaab-co.ir/opencv-installation-for-visual-studio
  • برای این کار ابتدا باید یک پروژه کنسول ++C بسازیم: برای ایجاد پروژه جدید از منوی فایل گزینه ی New Project را انتخاب کنید، از قسمت نوع پروژه، Visual C++ و سپس Win32 را انتخاب کنید. از سمت راست، گزینه ی Win32 Console Application را انتخاب کرده و در قسمت Name، نام مناسبی برای پروژه انتخاب کنید:
    Visual Studio New Project
  • در ادامه تنظیمات پیش فرض را بپذیرید و Finish را بزنید:
    Visual C++ Console Application - Wizard
  • اکنون برای اینکه قادر به کامپایل و اجرای برنامه‌های مبتنی بر OpenCV باشیم باید به VC++ بگوییم، کجا کتابخانه OpenCV را پیدا کند. از آن جا که احتمالا پروژه های OpenCV متعددی را در آینده خواهید ساخت، بهترین گزینه تعیین مسیرهای لازم در برگه‌ی مشخصات کاربر است به طوری که نیاز نباشد برای هر پروژه جدید دوباره مسیر کتابخانه را تعیین کنیم. برگه ی مشخصه یک فایل XML  هست که محیط پروژه شما را توصیف می کند. برای انجام این کار از منوی View گزینه Property Manager را انتخاب کنید (اگر در منوی View دیده نمی شود، زیرمنوی Other Windows را نگاه کنید).
  • سکوی برنامه را از نوار ابزار ویژوال استودیو روی x64 تنظیم کنید:
    x64 Platform - 64 بیتی
  • در پنجره Property Manager (دقت کنید که با Property Pages و Properties Window اشتباه نشود) روی پوشه Debug یا Release کلیک کرده و برگه مشخصات Microsoft.Cpp.x64.user را انتخاب کرده و دوبار کلیک کنید.
    Property Manager
  • در برگه مشخصات باز شده، مسیر فایلهای سرآیه و فایلهای library کتابخانه OpenCV را مشخص کنید. مثلا اگر در پوشه C:\OpenCV3.1 کتابخانه را نصب کرده باشید، مسیرهای زیر باید به مسیرهای پیش فرض اضافه شوند (دقت کنید که مسیرهای پیش فرض را اشتباها پاک نکنید که هیچ پروژه شما کامپایل نخواهد شد):
    نصب کتابخانه OpenCV
  • تنظیمات تمام شد. به منظور سهولت بیشتر در استفاده از کتابخانه، به مسیر include رفته و از پوشه OpenCV2، فایل opencv.hpp را کپی کرده و در پوشه include جایگذاری کنید:
    OpenCV.hpp
  • کامپایل اولین پروژه OpenCV
    • در ادامه کد زیر را در فایل اصلی پروژه مثلا در اینجا « LoadImage.cpp » بنویسید و با زدن دکمه‌ی F7 کامپایل کنید. اگر مراحل قبل را درست انجام داده باشید، باید بدون خطا کامپایل شود. در صورتیکه خطایی مشاهده کردید مراحل قبل را بازبینی کنید و کد را هم دوباره چک کنید که اشتباه املایی نداشته باشد. فقط به جای ۳۴۰، باید نسخه نصب شده خودتان را استفاده کنید مثلا برای ۳٫۳ می شود ۳۳۰٫٫٫
      #include "stdafx.h"
      // include standard OpenCV headers
      #include <opencv.hpp>
      
      #ifdef _DEBUG
         #pragma comment (lib, "opencv_world340d.lib")
      #else
         #pragma comment (lib, "opencv_world340.lib")
      #endif
      
      int main( int argc, char** argv ) 
      {
         const char* imagename = argc > ۱ ? argv[۱] : "..\\camera-man.jpg";
         // read the image
         cv::Mat img = cv::imread(imagename);	
         // create image window named "camera man"
         cv::namedWindow("camera man");
         // show the image on window
         cv::imshow("camera man", img);
         // wait for a key 
         cv::waitKey(۰);
      }
      
    • دقت کنید که این برنامه تصویری که از طریق خط فرمان به برنامه ارسال شده است و یا تصویر camera-man.jpg که در یک پوشه بالاتر از مسیر پروژه قرار دارد را باز کرده و نشان خواهد داد. اگر می خواهید تصویر دیگری نشان داده شود، آدرس تصویر را اصلاح کنید. اکنون F5 را برای اجرای برنامه بزنید. خروجی برنامه باید شبیه شکل زیر باشد:
      open cv example tutorial - باز کردن عکس در OpenCV
شاید به این مقاله هم علاقه داشته باشی
آشنایی با کتابخانه ی تنسورفلو

سایر عناوین مرتبط با این مقاله:

راهنمای نصب OpenCV

طریقه نصب OpenCV در ویندوز

نحوه استفاده از OpenCV در ویژوال استودیو

آی پلاک

نرم افزار پلاک خوان با قابلیت ثبت لحظه ای پلاک خودرو ها، جستجو و گزارشگیری و کنترل هوشمند راهبند و گیت

دوربین پلاک خوان
SH-D1232R

دوربین پلاک خوان تحت شبکه
مناسب برای جاده ها و پارکینگ

دوربین پلاک خوان
SH-D1531P

دوربین پلاک خوان تحت شبکه
مناسب برای پارکینگ ها

دوربین پلاک خوان
SH-CP1130101-M

دوربین پلاک خوان تحت شبکه
مناسب برای جاده ها و پارکینگ

60 پاسخ

  1. #ifdef _DEBUG
    #pragma comment (lib, “opencv_world340d.lib”)
    #else
    #pragma comment (lib, “opencv_world340.lib”)
    #endif

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

  2. سلام
    اگر بخواهم OpenCV – ۴٫۱٫۲ on visual studio 2012 را نصب کنم چه کاری باید انجام دهم ؟ سیستم عامل ویندوز ۷ ، ۳۲ بیتی است

  3. سلام
    چطور میتونم با استفاده از کتابخانه opencv
    در C# استفاده کنم
    میخواستم با استفاده از این کتابخانه از دوبین ip camera تصویر زنده دریافت کنم

  4. با سلام

    ضمن تشکر از این آموزش من مراحل فوق را انجام دادم و بعد از دیباگ این فایل باز شد:

    gfluidimgproc_func.simd.hpp

    که این فایل در این مسیر قرار دارد:

    D:\opencv\sources\modules\gapi\src\backends\fluid

    و در این فایل باز شده در خط ۸۷۹ آن در ویژوال استودیو این پیغام خطا ظاهر شد:

    Unhandled exception at 0x000007FEAE9C3AE2 (opencv_world411d.dll) in cvtest.exe: 0xC000001D: Illegal Instruction. occurred

    لطفا راهنمایی بفرمایید چیکار کنم؟
    ورژن opencv4.1.1 و ویژوال استودیو ۲۰۱۹ و همه تنظیمات برای ۶۴ بیت انجام دادم.

    با تشکر

  5. سلام – ویندوز من ۷، ۳۲ بیتی و ویژوال استودیو ۲۰۱۵ را نصب کردم. فایل های ۳۲ بیتی شما را دانلود کردم و طبق روالی که گفته شده آدرس ها را تنظیم کردم در متغیرهای محیطی و ویژوال استدیو. در اجرای برنامه در ویژوال استدیو با هفت خطای مشابه زیر مواجه میشم:

    LNK2019 unresolved external symbol “private: char * __thiscall cv::String::allocate(unsigned int)” (?allocate@String@cv@@AAEPADI@Z) referenced in function “public: __thiscall cv::String::String(char const *)” (??0String@cv@@QAE@PBD@Z) ipp1 E:\Programming\Image Processing Projects\ipp1\ipp1\ipp1.obj ۱

    LNK2019 unresolved external symbol “class cv::Mat __cdecl cv::imread(class cv::String const &,int)” (?imread@cv@@YA?AVMat@1@ABVString@1@H@Z) referenced in function _main ipp1 E:\Programming\Image Processing Projects\ipp1\ipp1\ipp1.obj ۱

    قبل از استفاده از فایل های شما از opencv 3.4 و cmake هم استفاده کردم و باز همین خطاها را می داد. ممنون میشم راهنمایی کنید.

    کد برنامه:

    #include “stdafx.h”
    #include
    #include
    #include
    #include

    using namespace std;
    using namespace cv;

    int main()
    {
    Mat image1;
    image1 = cv::imread(“E:\Programming\Image Processing Projects\images\blur11.jpg”);
    if (image1.empty())
    {
    cout << ("This is empty");
    }
    imshow("",image1);
    return 0;
    }

    1. سلام
      خطاهایی که با lnk شروع می شوند خطای لینک هستند و به این دلیل است که شما فایلهای lib را به پروژه معرفی نکرده اید. کدهای زیر را قبل از main اضافه کنید:

      #ifdef _DEBUG
      #pragma comment (lib, "opencv_world340d.lib")
      #else
      #pragma comment (lib, "opencv_world340.lib")
      #endif

      1. سپاس فراوان – آدرس lib را در Microsoft.Cpp.win32.user قرار داده بودم. این کدهایی که گفتید را جای دیگری باید وارد میکردم؟ (در مراحل آموزش تون نبود؟) . و اینکه برای همه پروژه ها می شه این مورد رفع کرد که در هر پروژه نخواهی وارد کنی؟ باز هم سپاس

  6. سلام ، من طبق روند بالا پیش رفتم ولی موقع debug ارور زیر رو بهم میده
    Exception thrown at 0x000007FEFCB0BDED in OPENCV01.exe: Microsoft C++ exception: cv::Exception at memory location 0x000000000015F588.
    Unhandled exception at 0x000007FEFCB0BDED in OPENCV01.exe: Microsoft C++ exception: cv::Exception at memory location 0x000000000015F588.

    ممنون میشم راهنماییم کنید.

    1. سلام
      خط به خط دیباگ کنید، ممکن است مسیر تصویری که در برنامه داده اید، اشتباه باشد و به دلیل عدم موفقیت در باز کردن تصویر با چنین خطاهایی مواجه شوید.

  7. سلام . ممنون از مطلب خیلی خوبتان ولی آیا فقط در c++ قابل استفاده است ؟ اگر بخواهیم در پایتون خود ویژوال استودیو از opencv استفاده کنیم باید چکار کنیم ؟
    ممنون از سایت خوبتان

    1. سلام
      در پایتون هم قابل استفاده است. نصب آن هم راحتتر است. کافیست با pip کتابخانه opencv را نصب کنید.
      توی ویژوال استودیو، یک پروژه جدید پایتون تعریف کنید و با استفاده از مثالهای موجود در اینترنت، کد بنویسید.

  8. سلام open cv را به روشی که توضیح دادین نصب کردم. در حالت release مشکلی وجود ندارد ولیکن در حالت debug به تعدادی از dllها مثل MSVCP140D.dll و یا CONCRT140D.dll و … دسترسی ندارد و برنامه اجرا نمی‌گردد.

  9. سلام

    من فایل opencv 3.3 نسخه ۶۴ بیتی رو اکسترکت کردم، اما داخلش فولدر build نداشت. چطور باید این فولدر رو ایجاد کرد؟

    ممنون

  10. سلام
    من نسخه ۳٫۳ کامپایل شده توسط شما را از ساییتتان دانلود کردم و طبق روش شما نصب کردم، الان می خوام یک Face detection انجام بدم. طبق جست و جوهایی که کردم مثل اینکه می بایست در کدم haarcascade_frontalface_alt.xml را load کنم ولی کدم خطا می دهد و نمی توانم.
    آیا امکانش هست راهنمایی ام کنید.

  11. سلام

    من از روش شما استفاده کردم ولی متاسفانه زمانی که میخوام از دستورات cuda استفاده کنم پیام میده که کتابخونه cuda وجود نداره و تعداد دستگاه های cuda رو هم صفر میده. خودم build میونم باز مشکل داره توی زمان build کردن پروژه cmake توی ویزوال استودیو. چی کار کنم ؟!

    ممنون

  12. با عرض سلام و خسته نباشید به خدمت شما
    اینجانب پس از اجرای برنامه با خطای زیر مواجه میشوم. ممنون میشم راهنمایی کنید. با تشکر
    LINK 1104 cannot open file ‘opencv_core320d.lib
    این فایل در کجا قرار دارد؟ تا مسیر آن اضافه نماییم؟

  13. با عرض سلام و خسته نباشید به خدمت شما
    اینجانب پس از اجرای برنامه با خطای زیر مواجه میشوم. ممنون میشم راهنمایی کنید. با تشکر
    LINK 1104 cannot open file ‘opencv_core320d.lib
    قابل ذکر است که این خطا را برای تمامی کتابخانه ها با حذف کتابخانه قبلی می دهد

  14. سلام. وقت بخیر. بابت اموزشتون ممنون. لطفا، منبع و یا سایتی در مورد اموزش (پیشرفته) ساخت رابط کاربری در ویژوال استدیو معرفی کنید.

    1. سلام
      منبع آموزشی برای رابط کاربری در ویژوال سی خیلی کم است. شاید کتاب Ivor Horton برای آموزشهای مقدماتی و متوسط خوب باشد. لیکن برای آموزشهای پیشرفته منبع خوب سراغ ندارم

  15. با سلام برای اینکه opencv 3 به بالا رو استفاده کرد باید ویژوال استدیو ۶۴ بیتی داشت . پروسسور و سیستم عامل من ۶۴ بیتی هستش و ویندوز ۱۰ بیلد ۱۷۰۳ آخرین آپدیت هم روی سیستم نصب کردم . ولی زمانی که میخوام ویژوال استدیو ۲۰۱۵ رو نصب کنم به صورت default 32 بیتی یا همان x86 رو به صورت آدرس پیش فرض برای نصب نشون میده !! چندین بار ویندوز رو عوض کردم و نسخه های مختلف ویژوال استدیو رو هم دانلود کردم ولی مشکلم حل نشد . ممنون میشم راهنماییم کنید . ممنونم.

    1. سلام
      مهم نیست که ویژوال استودیو ۳۲ بیتی نصب شود یا ۶۴ بیتی. مهم این است که هنگام نصب، کامپایلر ۶۴ بیتی را هم تیک بزنید و هنگام کامپایل پروژه از قسمت Project Configuration گزینه x64 را انتخاب کنید.

  16. با سلام ممنون از راهنماییتون من فایل های dllرا بهpathویندوز اضافه کردم وپس از کامپایل اروری دریافت نمیکنم ولی پس از buildپنجه ای باز میشود و این ارور را میدهد:
    the problem can’t start because MSVCP120D.dll is missing from your computer. try reinstalling the program to fix this problem

    ممنون از راهنماییتان

  17. مشکل قبلی حل شد الان این ارور را میگیرم:

    the problem can’t start because opencv_core2413d.dll is missing from your computer. try reinstalling the program to fix this problem

    1. سلام
      احتمالا پسوند lib در عبارت خطا هست نه obj
      که اگر این طور است، مسیر فایلهای lib را به مسیرهای Visual Studio اضافه نکرده اید. این قسمت مطلب بالا را دوباره بخوانید و چک کنید:

      در برگه مشخصات باز شده، مسیر فایلهای سرآیه و فایلهای library کتابخانه OpenCV را مشخص کنید. مثلا اگر در پوشه C:\OpenCV3.1 کتابخانه را نصب کرده باشید، مسیرهای زیر باید به مسیرهای پیش فرض اضافه شوند (دقت کنید که مسیرهای پیش فرض را اشتباها پاک نکنید که هیچ پروژه شما کامپایل نخواهد شد):

  18. سلام
    برنامه ای ک اینجا نوشتین برای من خطای اینو میده؟؟؟
    the problem can’t start because opencv_core2413d.dll is missing from your computer. try reinstalling the program to fix this problem.

    1. سلام احتمالا شما از نسخه دیگری از OpenCV استفاده می کنید. در متن بالا گفته ام که:

      در صورتیکه خطایی مشاهده کردید مراحل قبل را بازبینی کنید و کد را هم دوباره چک کنید که اشتباه املایی نداشته باشد. فقط به جای ۲۴۱۳، باید نسخه نصب شده خودتان را استفاده کنید مثلا برای ۳.۲ می شود ۳۲۰

  19. سلام- عزیز من همه این کارها رو کردم ۱۷ تا خطا میده موقع کمپایل کردن.
    cannot open source file”opencv/core.hpp”
    و ۱۶ خطا مشابه همین برای فایل های دیگر
    نمیدونم اصلا برنامه معمولی هم که به زبان c می نویسم کلی خطا میده

  20. سلام ممنون بابت توضیحات
    میخواستم بدونم روش بالا فقط برای ورژن خاصی از visual studio هست؟ یعنی برای نسخه ی ۲۰۱۵ هم میشه ازش استفاده کرد؟

  21. سلام ارور زیر را می دهد
    Severity Code Description Project File Line Suppression State
    Error C4996 ‘fopen’: This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. testmhk e:\opencv\opencv\build\include\opencv2\flann\logger.h ۶۶

    1. سلام
      برای رفع مشکل باید به تنظیمات پروژه بروید و عبارت زیر را در بخش C/C++ –> Preprocessor –> Preprocessor Definition اضافه کنید:
      _CRT_SECURE_NO_WARNINGS

    1. خط مربوط به pragma comment را باید با نسخه OpenCV خودتان اصلاح کنید. مثلا اگر نسخه ۳.۲ را نصب کرده اید به جای ۲۴۵ باید بگذارید ۳۲۰

    2. سلام باید در زبانه Linker
      قسمت Input فایل های Lib مورد نیاز رو وارد کنید باید توجه داشته باشید که کتابخانه با توجه به با کامپایلر مورد نظر پیکربندی شده وسپس با مد و معماری مناسب کامپایل شود تا Lib ها DLL های مورد نیاز ایجاد شوند سپس فایل های Lib رو وارد کرد و DLL های موجود را در کنال فایل اجرایی برنامه کپی کنید

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

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

دانلود دمو رایگان آی پلاک

به دنبال پلاک خوان هستید؟