محاسبه میزان عملکرد کد توسط OpenCV و بهبود بخشیدن آن

با سلام.

   در پردازش تصویر با تعداد بسیار زیادی عملیات های مختلف ریاضی و منطقی سر و کار داریم، به همین دلیل خیلی مهم است که کد نوشته شده تا حد امکان پهینه باشد. بهینه بودن کد تنها به تجربه و الگوریتم های برنامه نویس مرتبط نیست؛ بلکه از آن مهم تر به میزان بهینه بودن توابع از پیش آماده شده هم بستگی دارد.

   در کتابخانه ها و پکیج های جعبه افزار OpenCV، همه نوع تابعی (چه بهینه شده و چه بهینه نشده) موجود است. به همین علت این جعبه افزار روشی را در اختیار کاربران خود قرار می دهد تا بتوانند از توابع بهینه ای که در کتابخانه های این جعبه افزار وجود دارد استفاده کنند.

   پیش از بررسی این موضوع خوب است ابتدا میزان عملکرد کدی که خودمان نوشتیم را به دست بیاوریم. جعبه افزار OpenCV، تابعی به نام cv2.getTickCount دارد که تعداد حلقه های کلاک را بر می گرداند. همچنین تابع cv2.getTickFrequency، نیز فرکانس حلقه های کلاک را برمی گرداند. بنابراین برای محاسبه مدت زمانی که طول می کشد تا کد اجرا شود کافیست تعداد حلقه های کلاکی که برای اجرای کد مصرفی شده است را بر فرکانس حلقه های کلاک تقسیم نماییم.

   اجازه بدهید با یک مثال موضوع را پایان بدهیم. فرض کنید می خواهیم بر روی یک عکس فیلتر بلور را اعمال کنیم و سپس مدت زمانی که طول می کشد تا کد به طور کامل اجرا شود را بدست بیاوریم (توجه داشته باشبد که نتبجه می تواند متفاوت باشد و بسته به سخت افزار رایانه شما دارد).

   خب و اما می رسیم به بهینه کردن توابع و کد. اکثر توابع OpenCV بهینه شده هستند ولی برای اطمینان از فعال بودن توابع بهینه می توان از دستور ()cv2.useOptimized استفاده نمود. پس از تایپ این دستور و فشردن کلید Enter در صورتی که مقدار True برگردانده شود، یعنی توابع همگی بهینه شده هستند. برای فعال و غیرفعال کردن حالت بهینه می توان از دستور ()cv2.setUseOptimized استفاده کرد. در صورتی که مقدار ارگومان آن را True بگذارید، حالت بهینه فعال و اگر False بگذارید حالت بهینه خاموش می شود.

   هر آنچه که تا اینجا گفته شد جدا از توانایی های کاربر و برنامه نویس بود. ولی کدنویسی یک برنامه نویس و الگوریتم هایی که به کار می گیرد نیز در سرعت اجرای کد تاثیر خواهد گذاشت. عدم استفاده از حلقه های طولانی و یا تو در تو تا حد امکان و عدم ایجاد کپی اضافه از آرایه ها از جمله تکنیک های مفید برای بهبود کدنویسی هستند.

موفق باشید.

mehdi sehati

در این سایت پروژه و آموزش های انواع ماژول ها و میکروکنترلر ها و نحوه ارتباط سخت افزار با نرم افزار (برنامه نویسی اندروید برای گوشی و برنامه نویسی سی شارپ برای کامپیوتر) و برنامه نویسی پایتون و رسبری پای و ماژول های وای فای قرار میگیرد همچنین دوستان برای توضیحات بیشتر و سفارش پروژه میتوانند به آی دی تلگرام بنده مراجعه کنند

مطالب مرتبط

Subscribe
Notify of
guest

0 نظرات
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x