Mat نسبت به IplImage - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

Mat نسبت به IplImage

0 امتیاز
آیا کلاس Mat نسبت به IplImage مزیت داره ؟ چرا دیگه ازش استفاده نمیشه.
سوال شده آذر 26, 1392  بوسیله ی Hoshyar (امتیاز 65)   4 12 18
دوباره تگ گذاری شد بهمن 22, 1392 بوسیله ی BlueBlade

1 پاسخ

+1 امتیاز
 
بهترین پاسخ
نسخه های اولیه OpenCV  نسخه های قبل از نسخه 2 با C پیاده سازی شده و در آنها جهت ذخیره سازی تصویر از ساختار Iplimage استفاده می شد.
یکی از مشکلات بزرگی که در استفاده از این نسخه ها رخ می داد نشت حافظه بود در پروژه های کوچک چندان مشکل ساز نبود و در پروژه های بزرگ از جمله engine ها واقعاً دردسر بود.
در نسخه C++ بجای استفاده از ساختار IplImage می تونید از کلاس Mat استفاده کنید که دیگه نیازی به مدیریت حافظه ندارید که این مدیریت توسط shared_ptr به صورت  خودکار صورت می گیره (این تکنیک از فلگ refrence count استفاده می کنه).
یکی از مشکلاتی که با نسخه C++ دارید استفاده آنها برروی بعضی embedded ها هستش که آنها c++ رو ساپورت نمی کنند که شما بایستی از نسخه 2 به پایین تر استفاده کنید.
کلاس Mat از دو بخش تشکیل شده بخش اول header که اطلاعات ابعاد ،رنگ ،تعداد بایت ها در هر سطر و غیره در آن ذخیره میشه و قسمت بعد بخش داد ها هستش.
از آنجایی که در پردازش تصویر ما با اطلاعات حجیمی مثل تصویر سر و کار داریم کپی ها بی مورد می تونه افت کارایی در برنامه ما ایجاد کنه به همین دلیل در Mat دیگه مثل ساختار IplImage عمل نشده وقتی ما تصویر A موجود را به نسبت می دیم بخش داده ای تصویر کپی نمیشه فقط header مربوط به Mat کپی میشه که این خودش باعث افزایش کارایی برنامه میشه همون طور که در بالا هم متذکر شدم از تکنیک refrence count جهت مدیریت آن استفاده میشه .
 
در ضمن تو پست زیر رو هم مطالعه کنید:

 

پاسخ داده شده آذر 26, 1392 بوسیله ی مصطفی ساتکی (امتیاز 21,998)   24 34 75
انتخاب شد آذر 27, 1392 بوسیله ی Hoshyar
...