PDA

View Full Version : درمورد ابن کد راهنماییم کنبد



mostafi1391
شنبه 18 مرداد 1393, 16:06 عصر
با سلام من دارم سی ++ رو همزمان با پردازش تصویر (اوپن سی وی) کار میکنم متاسفانه چون هنوز با سبنتاکس مشکل دارم تو بعضی جاها به مشکل بر میخورم اگه مقدوره کدی رو میذارم بعضی جاهاش برام توضیح بدین ممنون


The following code contains a declaration of the ARDrawingContext class:
class ARDrawingContext
{
public:
ARDrawingContext(const CameraCalibration& c);
bool patternPresent;
Transformation patternPose;
//! Request the redraw of the OpenGl window
void draw();
//! Set the new frame for the background
void updateBackground(const cv::Mat& frame);
private:
//! Draws the background with video
void drawCameraFrame ();



بفرما که تو خط 5--- CameraCalibration& c دقیقا معنیش چیه و چیکار میکنه؟

تو خط 7-- Transformation patternPose آیا متغییری ار نوع Transformationساخته میشه؟


تو خط 11-- Mat& frame ---- معنی مت میدونم ولی با رفررنس و فریم مشکل دارم



بعدا تو کد زیر


As we now have a separate class for storing the visualization state, we modify the
cv::setOpenGlDrawCallback call and pass an instance of ARDrawingContext
as the parameter.
The modifed callback function is as follows:
void ARDrawingContextDrawCallback(void* param)
{
ARDrawingContext * ctx = static_cast<ARDrawingContext*>(param);
if (ctx)
{
ctx->draw();
}
}



تو خط 7--- منظور از آستریک ردر انتهای static_cast<ARDrawingContext*> و (param)چیه؟
if (isPatternPresent)
{
// Set the pattern transformation
Matrix44 glMatrix = patternPose.getMat44();
glLoadMatrixf(reinterpret_cast<const
GLfloat*>(&glMatrix.data[0]));
// Render model
drawCoordinateAxis();
drawCubeModel();
}
}
خط 4-- برام توضیح بدین
تو خط 6---- بعد ار کست کردن چی شده GLfloat*>(&glMatrix.data[0]));

شرمنده این یادم رفت بود
bool CheckCoherentRotation(cv::Mat_<double>& R) {
if(fabsf(determinant(R))-1.0 > 1e-07) {
cerr<<"det(R) != +-1.0, this is not a rotation matrix"<<endl;
return false;
}
return true;

تو خط اول چه اتفاقی میفته (cv::Mat_<double>& R)

sa1378
شنبه 18 مرداد 1393, 16:23 عصر
اینا c++ هست؟
مندتا حالا همچین چیزایی ندیدم

motherboard
شنبه 18 مرداد 1393, 16:55 عصر
به نظر من بری سی پلاس پلاس رو یک دور دیگه بخونی بهتره.همه ی سوالاتی که می کنی از این میاد که سی پلاس پلاس رو خیلی ناقص بلدی.کلا با گرامر کد مشکل داری.چه بهتر که بری سی پلاس پلاس رو بخونی.

اینا C++‎ هست؟
مندتا حالا همچین چیزایی ندیدم
اره جانم.این کد سی پلاس پلاس هست.به نظر من هم شما هم برو یک بار دیگه سی پلاس پلاس رو بخون.جواب همه ی این ها رو شما و و اون دوست عزیز در کتاب مربوط به سی پلاس پلاس می گیرید.:لبخند:

rahnema1
شنبه 18 مرداد 1393, 18:13 عصر
خط 5 تابع سازنده کلاس ARDrawingContext هست که پارامتر ورودی اون رفرنس ثابت به یک متغیر هست. در واقع اینجا ما پاس بوسیله رفرنس داریم که در تابعهای معمولی هم انجام می دهیم. خاصیت پاس بوسیله رفرنس آرگومان اینه که مثلا اگه متغیر از نوع CameraCalibration یک متغیر با حجم زیاد باشه دیگه متغیر داخل تابع کپی نمیشه ( با هزینه هاش) و روی همون متغیری که می فرستیم کار انجام میشه اما وقتی const را به اون اضافه می کنیم علاوه بر اینکه می گیم همون متغیر باشه، ثانیا روی اون متغیر تغییری نباید انجام بشه
در خط 7 ما یک متغیر با نوع Transformation اعلان می کنیم درست مثل اینکه بنویسیم int patternPose

خط 11 هم دقیقا مانند خط 5 آمدیم آرگومان یک تابع را با رفرنس پاس کردیم


در مثال دوم در خط 7 یک تبدیل بین اشاره گر از نوع void به اشاره گری از نوع ARDrawingContext میشه بنابراین* ARDrawingContext یعنی اشاره گری به یک ARDrawingContext بنابراین نوع param از* void به * ARDrawingContext تغییر پیدا می کنه

مثال سوم:
در خط چهارم که خیلی واضحه کجاش مشکل دارین؟
در خط 6 هم ممکنه محتوای داده ماتریس glMatrix.data آرایه ای از نوع بایت باشه با این کار می گیم این قسمت از حافظه را به عنوان آرایه ای از نوع GLfloat در نظر بگیر و سپس این آرایه را به عنوان آرگومان تابع glLoadMatrixf وارد کن

در مثال آخر هم دقیقا می گیم یک mat از نوع دابل را می خواهیم وارد تابع کنیم اما پاس با رفرنس انجام میشه

motherboard
شنبه 18 مرداد 1393, 20:08 عصر
در خط چهارم که خیلی واضحه کجاش مشکل دارین؟
جناب rahnema1 (http://barnamenevis.org/member.php?305905-rahnema1) ایشون با گرامر زبان مشکل دارند.البته خیلی ممنون از تشریحی که کردید.البته که من خود نیز استفاده کردم.ایشون همونطور که خودشون گفتند در حال یادگیری هستند ولی خب از سوالاتشون مشخصه که هنوز گرامر سی پلاس پلاس براشون جا نیفتاده:

با سلام من دارم سی ++ رو همزمان با پردازش تصویر (اوپن سی وی) کار میکنم

rahnema1
شنبه 18 مرداد 1393, 22:04 عصر
جناب rahnema1 (http://barnamenevis.org/member.php?305905-rahnema1) ایشون با گرامر زبان مشکل دارند.البته خیلی ممنون از تشریحی که کردید.البته که من خود نیز استفاده کردم.ایشون همونطور که خودشون گفتند در حال یادگیری هستند ولی خب از سوالاتشون مشخصه که هنوز گرامر سی پلاس پلاس براشون جا نیفتاده:

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