الهه92
تازه وارد
ارسالها: 2
موضوعها: 0
تاریخ عضویت: اسفند ۱۳۹۳
تشکرها : 0
( 0 تشکر در 0 ارسال )
|
RE: آموزش openCV
(۱۶-مرداد-۱۳۹۱, ۱۶:۴۹:۴۷)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
فیلتر :CV_GAUSSIAN
فیلتر :CV_MEDIAN
Erode با مقدار NULL
Dilate با مقدار NULL
FloodFill (red)
ادامه دارد ....
با سلام من وقتی این برنامه را اجرا می کنم یک اررور دارم عکسشو براتون میذارم میشه بگید مشکل از کجاست؟
|
|