บันทึกการตั้งค่าเริ่มต้นของ OpenCV บน Android Studio แบบผู้เริ่มต้น

Image placeholder
แวะมาทักทายกันได้

สวัสดีครับ บทความนี้ผู้เขียนได้รับโจทย์มาว่าจะต้องทำการ Detect รูปภาพจาก Android Box บนตู้ Kiosk ที่จะต้องทำการ Authen ด้วยใบหน้าซึ่งผู้เขียนใหม่สำหรับ OpenCV บน Android ดังนั้นผู้เขียนจึงต้องศึกษาเกี่ยว OpenCV For Android ก็มีหลายๆบทความที่กล่าวถึงวิธีติดตั้งแต่ว่าเนื้อหาไม่ได้อัพเดทเท่าที่ควรผู้เขียนจึงบันทึกและเรียบเรียงใหม่ด้วยภาษาเขียนของผู้เขียนเอง และ ต้องการบันทึกขั้นตอนการติดตั้งของ OpenCV ที่ต้องติดตั้งบน Android เอาไว้ทบทวนในภายหลังอีกด้วย

ซึ่งบทความต่อไปนี้จะเป็น Version ปัจจุบัน ซึ่งอาจจะไม่ตรงตามที่ผู้อ่านได้เข้ามาอ่านเพราะอาจจะนานเกินไป ณ ตอนนั้นแล้ว ดังนั้นแค่นำแนวทางและขั้นตอนในการติดตั้งและ Keyword ต่างๆที่จำเป็น นำไปใช้ก็พอ 

สำหรับผู้ที่มีประสบการณ์กับการใช้งาน OpenCV จะต้องจำไว้ว่า บน Native Android ไม่เหมือนกับ OpenCV บน Web หรือ Desktop แต่บน Android เป็น Native ดังนั้น ขั้นตอนต่างๆ จะเป็นการนำ Source code ไป Run บน Android framework 

ฝากกดโฆษณา Google Ads สัก click  เพื่อเป็นกำลังใจแก่ผู้เขียนด้วยนะครับ



ขั้นตอนที่ 1 ทำการ Download Library Android SDK จาก https://sourceforge.net/projects/opencvlibrary/files/opencv-android/  สามารถเลือกเวอร์ชั่นล่าสุดมาได้เลย ปัจจุบัน อยู่ที่ version 3.4.3 


เมื่อ Download เสร็จก็ให้นำไปแตกไฟล์ไว้ที่ /Path/to/OpenCV-android-sdk ตามที่ผู้อ่านต้องการ


folder sdk : เป็น folder ที่บรรจุ api และ library ของ OpenCV สำหรับ Android

folder sdk/etc : เป็น folder ที่บรรจุ Haar and LBP cascades สำหรับ Android

folder sdk/java : เป็น folder ที่บรรจุ Android Library ที่เอาไว้จัดการ OpenCV Java API 

folder sdk/native : ไฟล์ของ C++ headers (for JNI code) และ native Android libraries (*.so and *.a) สำหรับ ARM-v5, ARM-v7a และสถาปัตยกรรม x86


ขั้นตอนที่ 2 ให้สร้าง Project บน Android Studio ขึ้นมาโดยใช้ Empty Activity ให้ผู้อ่านอาศัยประสบการณ์ในการทำตรงนี้จัดการขึ้นมาได้เลย



ขั้นตอนที่ 3 ให้ทำการ Import Library ของ OpenCV ที่ Download มา File -> New -> Import -> Module


แล้วก็เลือก ที่ folder ของ sdk/java


เลือก Ok และ Next ไปตามปกติ แล้ว Finish ยกเว้นว่าผู้อ่านบางท่านอาจจะติดตรงที่ gradle ไม่สามารถ build ได้ก็ Fix ไปตามคำแนะนำของ Android studio ได้เลย


ขั้นตอนที่ 4 ให้เปิด build.gradle ที่ Project ของ OpenCV แล้วปร้บเวอร์ชั่นที่ android studio แนะนำ



ขั้นตอนที่. 5 ไปที่ File -> Project Structure เพื่อ Update Dependency 


ไปที่ Tab Dependency -> แล้วเลือก app -> เลือก tab + -> เลือก Module dependency


เลือก openCVLibrary343 ตามที่ได้ import เข้ามา แล้วกดตกลง


กด Apply เพื่อ Sync Dependency 


ขั้นตอนที่ 6 ให้ไปที่ folder src/native ของ OpenCV ที่เรา Download มา

จากนั้นก็ Copy Folder libs ทั้งหมดไปใส่ใน Project ที่เราสร้างขึ้นแล้วเปลี่ยนชื่อเป็น jniLibs  ProjectName/app/src/main/jniLibs 


ขั้นตอนที่ 7 ใส่ Permission ลงไป manifest.xml

<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"/>


ก็เป็นเสร็จการติดตั้งทั้งหมด ลอง Run Source code ที่อยู่ด้านล่างเพื่อทดสอบดู

ไฟล์ MainActivity.java  

https://gist.github.com/skl-songkiat/7d135515bd8a3a6d0c482ed8873a5985

ไฟล์ ColorBlobDetector.java  

https://gist.github.com/skl-songkiat/c89c3150aee74110090b38ac522ebb71

ไฟล์ layout ชื่อ color_blob_detection_surface_view_.xml 

https://gist.github.com/skl-songkiat/e079ea6ccc0bd11c549cfea61ace71f4


Source code ด้านบนทั้ง 3 Link นั้นให้นำไปวางที่ Project ที่เราสร้างขึ้นและต้อง Run บน Android ที่ Support กล้องด้วยนะ


ที่สำคัญอย่าลืมติดตั้ง NDK ที่เอาไว้ Compile C++ บน Android ด้วยแต่แม้ว่าจะลืมก็ไม่ใช่ปัญหา Android Studio จะเตือนเราให้ทำการติดตั้งเอง



แอพที่ Run เสร็จก็จะได้ภาพที่ได้จากกล้องมาแสดงผล และสามารถ touch ได้โดยจะเลือกสีที่ได้จากการ touch แล้วทำ contour เพื่อล้อมตามสีที่เลือกเอาไว้


อ้างอิง : https://android.jlelse.eu/a-beginners-guide-to-setting-up-opencv-android-library-on-android-studio-19794e220f3c

แวะมาทักทายกันได้
donate