ايران ويج

نسخه‌ی کامل: آموزش openCV
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
صفحه‌ها: 1 2 3
سلام molavy2003

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

در کل بهتر برای پیدا کردن اشکال خودت الگوریتم بنویسی تا اینکه از توابع استاندارد استفاده کنب
(۱۶-مرداد-۱۳۹۱, ۱۶:۴۹:۴۷)ana_ana نوشته است: [ -> ]
(۰۱-فروردین-۱۳۹۱, ۲۳:۰۷:۴۹)h0x00i نوشته است: [ -> ]خوب در این قسمت قصد داریم به ایجاد یک trackbar به کمک OCV بپردازیم برای ایجاد یک trackbar در OCV با استیل زیر اقدام کنیم :

کد:
int cvCreateTrackbar(
const char* trackbar_name,
const char* window_name,
int* value,
int count,
CvTrackbarCallback on_change
);

همینطور که می بینید خروجی این تابع از نوع عددی int میباشد این دستور به 5 بخش تقسیم می شود که به توضیح هر بخش می پردازیم
1. نامی که برای Trackbar تعیین می کنیم
2. نام پنجره ای که Trackbar در آن به نمایش در می آید
3.متغییر از نوع int که مقدار برگشتی به ان نسبت داده می شود
4.در این قسمت ما میزان حرکت Trackbar را تعیین می کنیم که مقدار آن به value نسبت داده می شود
5.تابع برگشتی Trackbar می باشد


مثال :
در این مثال ما بر روی یک تصویر با استفاده از Trackbar فیلتر های مختلفی را اعمال می کنیم :

برنامه : از برنامه نترسید یکم زیاده و دستورها و توابع جدید توش هست ولی خیلی آسون در ادامه به شرح هر کدام می پردازیم این برنامه فقط جنبه نمایش نوع کار کرد Trackbar را داره
کد:
#include "stdafx.h"
#include "highgui.h"
#include "cv.h"
#include "cxcore.h"//only for cvReleaseImage function
int g_switch_value = 0;
int fliter = 0;
int lastfilterInt = -1;

void callback( int a ){

fliter = a;
}

int _tmain(int argc, _TCHAR* argv[])
{

const char* name = "IRANLED --> h0x00i";

IplImage* img = cvLoadImage( "iranled.jpg" );

IplImage* out = cvCreateImage( cvGetSize(img), IPL_DEPTH_8U, 3 );


cvNamedWindow( name, 1 );

cvShowImage(name, out);




// Other Variables

CvPoint seed_point = cvPoint(305,195);

CvScalar color = CV_RGB(250,0,0);


// Create trackbar

cvCreateTrackbar( "fliter", name, &g_switch_value, 5, callback );


while( 1 ) {


switch( fliter ){



case 0:




cvSmooth( img, out, CV_BLUR, 7, 7 );









break;



case 1:




cvSmooth( img, out, CV_GAUSSIAN, 7, 7 );









break;



case 2:




cvSmooth( img, out, CV_MEDIAN, 7, 7 );









break;



case 3:




cvErode( img, out, NULL, 1);









break;



case 4:




cvDilate( img, out, NULL, 1);









break;



case 5:




cvFloodFill( out, seed_point, color, cvScalarAll(5.0), cvScalarAll(5.0), NULL, 4, NULL );









break;


}


if(fliter != lastfilterInt){



cvShowImage(name, out);



lastfilterInt = fliter;


}


if( cvWaitKey( 15 ) == 27 )



break;

}


cvReleaseImage( &img );

cvReleaseImage( &out );

cvDestroyWindow( name );

return 0;
}

تصویر خروجی
:
فیلتر : CV_BLUR
[تصویر:  13322685331.jpg]
فیلتر :CV_GAUSSIAN
[تصویر:  13322685332.jpg]
فیلتر :CV_MEDIAN
[تصویر:  13322685333.jpg]
Erode با مقدار NULL
[تصویر:  13322685344.jpg]
Dilate با مقدار NULL
[تصویر:  13322685345.jpg]
FloodFill (red)
[تصویر:  13322685346.jpg]

ادامه دارد ....

با سلام من وقتی این برنامه را اجرا می کنم یک اررور دارم عکسشو براتون میذارم میشه بگید مشکل از کجاست؟
باسلام وخسته نباشید خدمت شماممنون ازاطلاعات خوب وکمکهایی که دراختیارمون میزارید شما در ردیابی اجسام متحرک هم سررشته دارید که به وسیلهopencvبرنامه اش چجوری میشه ممنونم اگه لطف کنید وکمکم کنید لاقل اینکه ازکجا پیدا کنم ..باتشکر فراوان
ممنون بابت اموزش خوب و کامل تون...زنده باشین...
صفحه‌ها: 1 2 3