شروع کار با OpenCV
نوشته شده توسط مدیر سایت چهارشنبه 26 آبان 1389 ساعت 12:03
برای شروع کار با OpenCV ابتدا باید، کتابخانه آن را دریافت کرده و نصب کنید. برای دریافت OpenCV روی لینک زیر کلیک کنید و آخرین نسخه را دانلود کنید:
پس از نصب کتابخانه، باید مسیر فایلهای آن را در ویژوال استودیو اضافه کنید. مثلا اگر آن را در مسیر E:\OpenCV2.1\ نصب کرده اید، باید مسیر E:\OpenCV2.1\include\opencv را به Include Directories و مسیر E:\OpenCV2.1\lib را به Library Directories اضافه کنید. بهتر است به پوشه lib رفته و تمام پسوندهای 210 را از کتابخانه پاک کنید تا در صورت به روز رسانی، نامگذاری فایلهای کتابخانه اشکال ایجاد نکند. مثلا cv210.lib را به cv.lib تغییر دهید. حال آماده ایم تا اولین برنامه را بنویسیم.
در اولین برنامه قصد داریم فقط یک تصویر را نمایش دهیم.
یک پروژه کنسول ایجاد کنید و خطوط زیر را در آن بنویسید:
// in the name of allah
// The first Open CV example
// Developed by http://www.P30CodeNevis.ir
// 2010-11-11
#include "stdafx.h"
// include standard OpenCV headers
#include "cv.h"
#include "highgui.h"
#ifdef _DEBUG
#pragma comment (lib, "highguid.lib")
#pragma comment (lib, "cxcored.lib")
#else
#pragma comment (lib, "cxcore.lib")
#pragma comment (lib, "highgui.lib")
#endif
//0 to use new style, 1 for old style
#define USE_OLD_STYLE 1
using namespace cv; // for new c++ style
int main( int argc, char** argv )
{
const char* imagename = argc > 1 ? argv[1] : "camera-man.jpg";
#if USE_OLD_STYLE
/////////////////////////////////////////////////////////////////
/// old C style
IplImage* img = cvLoadImage(imagename);
cvNamedWindow( "Example1", CV_WINDOW_AUTOSIZE );
cvShowImage( "Example1", img );
cvReleaseImage( &img );
#else
/////////////////////////////////////////////////////////////////
/// New C++ style (its also very similar to MATLAB style)
// Unfortunately this new style has some bugs and may produce exceptions
Mat img = imread(imagename);
namedWindow("Example1", CV_WINDOW_AUTOSIZE );
imshow("Example1", img);
//img is an instance of class Mat and will be destroyed automatically so we do not call cvReleaseImage
#endif
cvWaitKey(0);
cvDestroyWindow( "Example1" );
}
توضیح برنامه
دو فایل cxcore.lib و highgui.lib و یا نسخه های دیباگ آنها که پسوند d دارند، برای کار با تصویر و نمایش آن در پنجره لازم هستند. چند خط اول برنامه مسئول این کار هستند. متاسفانه یا خوشبختانه OpenCV در حال پوست انداختن است و قصد دارد ساختار قدیمی خودش را که با C خالص بود تغییر داده و به سمت ++C مهاجرت کند و از نسخه 2 به بعد این کار را آغاز کرده است. لذا در حال حاضر هم ناچار است توابع قدیمی را پشتیبانی کند و هم ساختار شیءگرا را در قالب فضای نام cv اضافه کرده است. در این برنامه امکان استفاده از هر دو ساختار وجود دارد، تنها کافیست مقدار USE_OLD_STYLE را بین صفر و یک عوض کنید.
تصویری که قرار است بارگذاری کنیم یا به عنوان پارامتر ارسال می شود یا باید اسمش camera-man.jpg باشد! و در مسیر پروژه قرار داشته باشد. برای بارگذاری تصویر به ساختار قدیمی از تابع cvLoadImage استفاده می کنیم که خروجی آن اشاره گری به یک struct از نوع IplImage است و در ساختار جدید از imread و خروجی آن از نوع کلاس Mat است (شبیه توابع MATLAB ). تابع cvNamedWindow یا namedWindow برای ایجاد یک پنجره ساده است و در نهایت تابع cvShowImage یا imshow برای نمایش تصویر روی پنجره می باشد.
تابع cvWaitKey با پارامتر صفر آنقدر صبر می کند تا کلیدی فشرده شود.
دقت داشته باشید در حالت استفاده از توابع ++C احتمال زیاد باخطاها و exception های عجیب و غریب روبه رو خواهید شد و برنامه به خوبی اجرا نمی شود. دلیلش در همان پوست انداختن است. به عبارتی باگ دارد!
اگر خدا بخواهد و مشتری پیدا شود، برنامه های پیشرفته تری! هم با OpenCV خواهیم نوشت.
دانلود پروژه تحت visual c++ 2010
-
|*** 2010-11-17 ساعت 22:12:20 *** امیر علی
واقعا دستتون درد نکنه! این همون چیزیه که می خواستم! ما داریم روی پروژهimage processing کار می کنیم که حتما باید با open CV باشه! خواهشا ادامه بدین!
-
|*** 2010-11-18 ساعت 17:09:38 *** jojo - مشکل دانلود
من نتونستم دانلود کنم فکر کنم به کشور گیر می داد
-
|*** 2010-11-19 ساعت 15:44:34 *** مدیر سایت
ظاهرا برای دانلود کتابخانه باید از ف-ی.ل.ت-ر ش.ک.ن استفاده کنید
-
|*** 2010-11-19 ساعت 21:23:08 *** ahmad samiee - تشکر
استاد دستتون درد نکه
کاشکی همه ی اساتید مثه شما بودن
استاد حتما ادامه بدین هر کمکی هم اگه نیاز داشتین و فکر کردین من می تونم انجام بدم در خدمتم
-
|*** 2010-11-20 ساعت 13:28:02 *** مسلم
سلام استاد
متاسفانه منم نتونستم دانلودش کنم
ولی شدیدا متقاضی آموزش این برنامه هستم
با تشکر

