پیاده سازی کتابخانه OpenCV در اندروید به زبان ساده

کاربرد OpenCV در اندروید چیست؟
به تازگی روی یک پروژه کار میکنم که لازم بود از کتابخانه OpenCV در آن استفاده کنم. به همین منظور در مورد پیاده سازی کتابخانه OpenCV در اندروید تحقیقاتی انجام دادم.
در نهایت سعی کردم که در این مقاله یک راهنمای جمع و جور به منظور آشنایی با کتابخانه OpenCV در اندروید بنویسم.
از این کتابخانه برای پردازش کارهای گرافیکی در اندروید استفاده می شود. برای مثال به کمک این کتابخانه می توانید چهره ی انسان ها یا یک شی خاص را در تصویر شناسایی کنید.
این کتابخانه کاربردی قابلیت پیاده سازی در اکثر زبان های برنامه نویسی را دارد. در این مقاله، چگونگی اجرای OpenCV در اندروید را در 5 مرحله توضیح می دهیم.
مرحله اول : دانلود کتابخانه اندرویدی OpenCv
به سایت OpenCV Android Sourceforge بروید و آخرین نسخه از کتابخانه را دانلود کنید. الان که در حال نوشتن این مقاله هستیم، آخرین ورژن 4.1.2 هست. وقتی دانلود تمام شد، فایل رو extract کنید.
مرحله دوم : اضافه کردن کتابخانه به پروژه
کافیه داخل این مسیر برید و کلیک کنید: File -> New -> Import Module
بعد با یک پنجره جدید رو به رو میشیم . در صفحه ی باز شده آدرس فایل جاوا کتابخانه ای که دانلود کردیم رو وارد می کنیم. برای مثال آدرس به شکل زیر می باشد.
Downloads\opencv-4.1.2-android-sdk\sdk\java…
بعد از انجام این مرحله کافیه روی next کلیک کنید تا در قدم بعدی تنظیمات پیش فرض را تایید کنیم.
در نهایت با کلیک روی دکمه ی finish این مرحله تمام می شود.
مرحله سوم: رفع error هایی که هنگام Sync کردن Gradle اتفاق می افتند
احتمالا بعد از مرحله اضافه کردن کتابخانه ، به error های مربوط به build gradle بر خواهید خورد.
علت بروز این مشکل این می باشد که کتابخانه OpenCV در اندروید ، از ورژن SDK قدیمی استفاده می کند و شما آن نسخه از SDK را نصب نکردید.
برای اینکه این خطا را به سرعت رفع کنیم پنل اندروید را به پنل پروژه تغییر می دهیم:
حالا build gradle مربوط به کتابخونه رو باز کنید.
بعد از این مرحله ، تنها کاری که لازمه انجام بدید اینه که compileSdkVersion و targetSdkVersion رو به آخرین نسخه sdk موجود تغییر بدید.
حالا با Sync کردن پروژه این مشکل برطرف میشه. (لازم نیست buildToolVersion رو تغییر بدید.)
مرحله چهارم: افزودن dependency کتابخانه OpenCV
وارد Files -> Project Structure بشید و در دیالوگ باز شده روی علامت + سبز رنگ گوشه راست کلیک کنید ، حال باید Module Dependency رو انتخاب کنید.
سپس با باز شدن دیالوگ choose module ، فایل کتابخانه را انتخاب کنید.
وقتی به صفحه dependency بر میگردید ، می بینید که فایل کتابخانه اضافه شده و این مرحله هم با زدن ok تمام میشه.
مرحله پنجم: افزودن کتابخانه native
به مسیری که در آنجا فایل zip کتابخانه را extract کرده بودید بروید. پوشه sdk رو باز کنید و بعد به پوشه ی native بروید. سپس از داخل این پوشه فایل libs رو کپی کنید و در آدرس زیر paste کنید.
Project name/ app/src/main
سپس فایل libs رو به jniLibs تغییر نام بدهید.
مرحله ششم: افزودن دسترسی های لازم (permissions)
حالا به خود پروژه برمیگردیم . همان طور که می دانید این کتابخانه به دسترسی استفاده از دوربین نیاز دارد که باید در فایل اندروید مانیفست اضافه بشود.
<uses-permission android:name="android.permission.CAMERA"/> <uses-feature android:name="android.hardware.camera" android:required="false"/> <uses-feature android:name="android.hardware.camera.autofocus" android:required="false"/> <uses-feature android:name="android.hardware.camera.front" android:required="false"/> <uses-feature android:name="android.hardware.camera.front.autofocus" android:required="false"/>
جا داره بگم که بعدا در قالب یک آموزش دیگه ، به کمک این کتابخانه یک پروژه گرافیکی ساده درست خواهیم کرد. اما برای الان آموزش مون رو با گفتن این نکته تموم میکنیم.
چون در این مورد ما از کتابخونه native استفاده کردیم ، اصلا دور از ذهن نیست که در آخر حجم فایل apk خروجی بالا بره. یک راه حل برای این مشکل استفاده از ABI splits هست.
راه دیگه برای کاهش حجم فایل apk استفاده از OpenCV Manager هست.
داخل همان فولدری که محتویات کتابخونه رو extract کرده بودید یک فایل به نام apk هست که داخلش انواع openCV Manager برای معماری های مختلف اندروید موجوده.
در قدم آخر برای تست روی دستگاه مورد نظرمون در command prompt این دستور را اجرا میکنیم:
C:\Users\Nacm\Downloads\opencv-4.1.2-android-sdk\apk>adb install OpenCV_4.1.2_Manager_4.12_armeabi-v7a.aka
در صورتی که مراحل را به درستی انجام داده باشید ، بعد از اجرای کد بالا پیام Success را در پنجره ی CMD مشاهده خواهید کرد.
ممنون از مطلب بهروزتون.
من در حال حاضر از نسخه قدیمیتر OpenCv 3.4.7 در برنامه ام استفاده میکنم. و متاسفانه در حال حاضر به شکلی است که نیاز به OpenCv Manager دارد. حقیقتاْ این برنامه اولین کار اندرویدی بود انجام دادم و الان بر روی اندروید۶ کار میکنه. الان نیاز به توسعه و ارتقاءش برا اندرویدای بالاتر مانند ۱۰ دارم و میخوام از شر OpenCV Manager هم که گویا منسوخ شدهُ خاتص بشم.
الان دو سوال دارم:
۱- آیا برای خلاص شدن از OpenCv Manager نیاز به بروزرسانی OpenCv در اندرویداستدیو دارم؟
۲- آیا OpenCv قابل بروز شدن هست یا باید کاملا حذف بشه و نسخه جدیدش رو جایگزین کنم؟
باتشکر از شما
سلام ممنون از شما که وقت گذاشتین.
مطمئن نیستم که به این شکل مشکل تون حل شه اما به این دو مقاله یه نگه بندازین و ببینین با حذف opencv manager و فقط استفاده از opencv به این ترتیبی که گفته شده میتونه مشکل رو برطرف کنه
https://medium.com/@rdeep/android-opencv-integration-without-opencv-manager-c259ef14e73b
https://medium.com/@nhancv/setup-opencv-android-without-install-opencv-manager-apk-bea6acf9e2c1
اگه نتیجه رو به من هم بگین ممنون میشم تا اگه مشکل برطرف نشد فکر دیگه ای کنیم.