OpenCV و پردازش تصویر در پایتون

ابزار OpenCV چیست؟کتابخانه ی OpenCV یا همان Open Computer Vision Library مجموعه ای از کتابخانه‌های برنامه‌نویسی پردازش تصویر و یادگیری ماشین است. این مجموعه بیشتر بر پردازش تصویر بی درنگ (به انگلیسی: Real Time) تمرکز دارد. در ابتدا توسط اینتل ساخته و پشتیبانی می‌شد و هم اکنون توسط Willow Garage و Itseez پشتیبانی می‌گردد. استفاده از آن با پروانه فری بی‌اس‌دی آزاد است. اوپن سی وی کتاب‌خانه‌ای چندسکویی است و توسط سیستم عامل های ویندوز، لینوکس، مک اواس، آی او اِس و اندروید پشتیبانی می‌شود. همچنین دارای رابط برنامه نویسی به زبان های سی، سی++، پایتون، جاوا و متلب می‌باشد.اگر علاقه دارید، پست OpenCV چیست را نیز بخوانید.کاربردهای OpenCVفیلتر تصویرسیستم تشخیص صورتتشخیص حرکتتعامل انسان و رایانه ( HCI )رباتیک موبایلدرک حرکتشناسایی شیتقسیم‌بندی و تشخیصچشم انداز عمق استریو : ادراک عمق از ۲ دوربینساختار از حرکت ( SFM )ردیابی حرکتواقعیت افزودهبرای پشتیبیانی از برخی زمینه‌های بالا، OpenCV یک کتاب‌خانه یادگیری ماشینی را در بردارد شامل:الگوریتم متایادگیری درخت تصمیم گیریدرختان افزایش گرادیانالگوریتم امید ریاضی-بیشینه کردنالگوریتم نزدیکترین همسایهدسته‌بندی کننده نایو بیزشبکه عصبی مصنوعیجنگل تصادفیماشین بردار پشتیبانی(SVM)اگر علاقه دارید، آموزش پردازش تصویر و بینایی کامپیوتر در مکتب خانه را ببینید.زبان‌های برنامه‌نویسیOpenCV به زبان سی++ نوشته شده و بنیاد رابط برنامه نویسی آن به زبان سی++ است. رابط برنامه نویسی کاملی نیز برای پایتون، جاوا و متلب/اوکتاو دارد. ای‌پی‌آی این زبان‌ها در اسناد برخط OpenCV یافت می‌شود. همچنین پوشش‌هایی (به انگلیسی: Wrapper) برای زبان‌هایی همچون سی#، Ch و روبی برای تشویق پذیرش مخاطبان گسترده‌تر طراحی شدند.یک رابط جی‌پی‌یو کودا-پایه از سپتامبر ۲۰۱۰ در حال پیشرفت است.یک رابط OpenCL-پایه از اکتبر ۲۰۱۲ در حال گسترش است.پشتیبیانی سیستم‌عاملOpenCV روی ویندوز، اندروید، ماامو، فری‌بی‌اس‌دی، اوپن‌بی‌اس‌دی، آی‌اواس، بلک‌بری۱۰، لینوکس و اواس‌ده اجرا می‌شود[۳]. کاربران می‌توانند نسخه رسمی آن را از سورس‌فورج یا آخرین نسخه آن را از GitHub دریافت نمایند.منبعOpenCV چیست ؟ OpenCV یک کتابخانه ی متن بازبرای بینایی کامپیوتر است.این کتابخانه به زبان C و C++ نوشته شده است و تحت لینوکس و ویندوز و مکینتاش قابل اجراست.همچنین، برای واسط هایی چون Matlab,Ruby,Python وغیره ، توسعه های فعالی دارد.هدف از طراحی OpenCV ، پردازش کارا به خصوص برای کاربرد های بی درنگ است. OpenCV می تواند با پردازنده های چند هسته ای نیز کار کند.در صورتی که تمایل دارید از بهینه سازی خودکار بیشتری روی معماری های اینتل بهره ببرید، می توانید کتابخانه های (IPP (Integrated Performance Primmitive اینتل که شامل روتین های بهینه شده سطح پایین در بسیاری از زمینه های الگوریتمی هستند را خریداری کنید. OpenCV به صورت خودکار IPP مناسب را در زمان اجرا در صورتی که کتابخانه نصب باشد، به کار می گیرد.یکی از اهداف OpenCV فراهم کردن یک زیربنای بینایی کامپیوتر با کاربری ساده است،به طوری که افراد بتوانند برنامه های بینایی نسبتا پیچیده خود را با سرعت بسازند.کتابخانه OpenCV شامل بیش از ۵۰۰ تابع پیرامون موضوعات مختلف بینایی ، از بررسی محصول کارخانه گرفته تا تصویر برداری پزشکی،امنیت، واسط کاربر،تنظیم دوربین،رباتیک و بینایی دو چشمی است.از آنجا که همواره قرابت زیادی بین بینایی کامپیوتر و یادگیری ماشین وجود داشته است، OpenCV شامل یک کتابخانه یادگیری ماشین همه منظوره MLL(Machine Learning Library) نیز هست.این زیر کتابخانه ، روی مباحث تشخیص الگوی آماری و دسته بندی تمرکز دارد.چه کسانی از OpenCV استفاده می کنند؟ بسیاری از دانشمندان علوم رایانه و برنامه نویسان برنامه های کاربردی، از برخی نقش های بینایی کامپوتر آگاهند.اما تعداد کمی از همه کاربردهای بینایی کامپیوتر اطلاع دارند.برای مثال،خیلی ها ازکاربرد آنها در نظارت تصویری آگاهی دارند.همچنین، بسیاری نیز از افزایش استفاده آن برای تصاویر و ویدیو در وب باخبرند. اما شمار اندکی ، کاربرد های بینایی ماشین در واسط های بازی را دیده اند.هنوز تعداد کمی درک می کنند که تصاویر فضایی و تصاویرنقشه خیابان ها(مثلا در(Google’ s Street View ، استفاده زیادی در از روش های تنظیم دوربین وتکنیک های چسباندن تصویر می کنند.برخی افراد از کاربرد های آن در کنترل امنیت، وسایل نقلیه بدون سرنشین، یا تحلیل های پزشکی اگاهند.اما تعداد کمی می دانند که بینایی ماشین تا چه حد در تولید می تواند استفاده شود.به طور کلی در تولید انبوه و خ.دکار هر چیزی ، بایستی در نقاطی از خط تولید، محصول را با استفاده از تکنیک های بینایی ماشین مورد بازرسی قرار داد.مجوز متن باز بودن OpenCV به گونه ای است که شما می توانید یک محصول تجاری را با استفاده از OpenCV تولید کنید.اما هیچ اجباری برای متن باز بودن محصول شما وجود ندارد.به موجب این مجوز ها، کتابخانه های OpenCV جامعه کاربران زیادی را شامل می شود. از زمان انتشار نسخه ی آلفا در ژانویه ۱۹۹۹ ، OpenCV در بسیاری از کاربرد ها، محصولات و تلاش های تحقیقاتی مورد استفاده قرار گرفته است.این کاربردها شامل چسباندن تصاویرماهواره ای و نقشه های وب به یکدیگر، تنظیم تصویر اسکن شده، کاهش نویز تصاویر پزشکی، تحلیل شی در سامانه های تشخیص اختلال و امنیت، نظارت خودکار و سامانه های امنیت، سامانه های بازرسی صنعتی، تنظیم دوربینف کاربرد های نظامی و وسیایل نقلیه هوایی، زمینی وزیرآبی بدون سرنشین است.حتی از آن می توانید در تشخیص موزیک و صوت نیز استفاده کرد به این روش که از تکنیک های تشخیص بینایی برای تصاویر طیف نگار صدا استفاده شود. OpenCV یک جز کلیدی سامانه بینایی ربات دانشگاه استنفورد، بنام استنلی بود که در مسابقات بزرگ ربات صحرایی برنده دو میلیون دلار جایزه از دارپا شد.آشنایی کلی با OpenCV ؟مقدمهیکی از مشکلات توسعه دهندگان نرم افزار های بصری انجام محاسبات مختلف بر روی تصاویر است. به دلیل حجم بالای اطلاعات، پردازش آنها نیاز به برنامه نویسی بهینه دارد. شرکت Intel پروژه ای را با نام OpenCV آغاز کرد تا کتابخانه های بهینه برای انجام بلادرنگ محاسبات بصری، جهت توسعه دهندگان این دسته نرم افزار ها فراهم آورد.OpenCV چیست ؟OpenCV یک کتابخانه بازمتن با لایسنس BSD برای توسعه دهندگان نرم افزارهای بصری و پردازش تصویر است که در سال ۲۰۰۰ توسط شرکت Intel پا به دنیای کامپیوتر نهاد.در حال حاضر ورژن های مختلفی از این کتابخانه موجود می باشد که معروف ترین آنها ورژن ۲.۴ و جدیدترین آنها ورژن ۳٫۱ است که آخرین ورژن پایدار محسوب می شود.این کتابخانه با زبان C/C++ نوشته شده است ولی تقریبا در تمام زبان های برنامه نویسی معروف ازجمله Python قابل دستری است.چه نرم افزارهایی از OpenCV استفاده می کنند ؟نرم افزارهای بسیار زیادی از OpenCV استفاده می کنند اما با توجه به صفحه ی ویکی پدیا می توان به موارد زیر اشاره کرد.۲D and 3D feature toolkitsEgomotion estimationFacial recognition systemGesture recognitionHuman–computer interaction (HCI)Mobile roboticsMotion understandingObject identificationSegmentation and recognitionStereopsis stereo vision: depth perception from 2 camerasStructure from motion (SFM)Motion trackingAugmented realityOpenCV بر روی چه سیستم عامل هایی اجرا می شود ؟OpenCV در سیستم عامل های مختلف اجرا می شود که از مهمترین آنها می توان به این موارد اشاره کرد.Desktop: Windows, Linux, OS X, FreeBSD, NetBSD, OpenBSDMobile: Android, iOS, Maemo, BlackBerry 10منبع: https://behsanandish.com/learning/opencv/opencv-%DA%86%DB%8C%D8%B3%D8%AA%D8%9F/