Android studio là IDE mới do Google phát triển, chuyên dụng cho các project Android. Các bạn down lib opencv4android ở trang chủ OpenCV. Trong lib có sẵn samples source cho các bạn tham khảo. Bài viết này sử dụng OpenCV4Android 3.0.
Để sử dụng lib này bạn có 2 cách:
+ 1 là import thẳng các file *.a vào project, cách này làm kích thước file apk lớn. Cách này phù hợp khi bạn chỉ muốn cài chương trình một cách độc lập, ví dụ như cài cho khách hàng hoặc bạn bè, thầy cô.
+ 2 là cài OpenCVmanagerxxx.apk vào trong điện thoại, khi đó app tự động tìm kiếm API trong OpenCVmanagerxxx.apk. Cách này làm cho file apk có kích thước nhỏ, phù hợp khi bạn cài nhiều chương trình opencv lên phone của mình.
Trong lib opencv4android đã có sẵn tính năng lấy ảnh từ camera, nên các bạn không cần quan tâm đến API camera nữa.
Bước 1: Tạo 1 project Android
Tạo project android mới, thêm các permission sau vào trong manifest
<uses-permission android:name=”android.permission.CAMERA” />
<uses-feature android:name=”android.hardware.camera” android:required=”true” />
<uses-feature android:name=”android.hardware.camera.autofocus” android:required=”true” />
<uses-feature android:name=”android.hardware.camera.front” android:required=”true” />
<uses-feature android:name=”android.hardware.camera.front.autofocus” android:required=”true” />
Bước 2: Import OpenCVLibrary
– Từ menu chọn “New -> Import module”. Sau đó chọn folder sdk/java.
– Sau khi add module xong các bạn phải config file build cho đúng các thông số của compileSdkVersion,
minSdkVersion, targetSdkVersion trong file build.gradle. Nếu không sẽ có lỗi giống thế này:
Lỗi đó xảy ra là do bạn chưa có Andrdoi API theo đúng version yêu cầu (trong hình là thiếu API 14), có 2 cách sửa:
+ 1 là cài Andrdoi API version theo đúng yêu cầu. Vào Tools -> Android -> SDK manager cài đúng API bị thiếu.
+ 2 là thay đổi con số compileSdkVersion bằng version mà các bạn đã cài. Hình bên dưới chỉ ra đã cài API 19, vậy chỉ cần sửa 14 thành 19 là xong. Sửa trong file openCVLibrary300/build.gradle nằm trong project.
Nếu vẫn còn lỗi thì các bạn cứ comment bên dưới, tui sẽ trả lời. Khi sửa xong thì sẽ có thêm project openCVLibrary300 như vầy là đúng:
– Nếu bạn cài OpenCVManger thì bỏ qua bước này. Tiếp theo là copy thư mục sdk\native\libs trong thư viện opencv vào trong app\src\main rồi rename thành jniLibs giống thế này:
Bước 3: Viết code thử nghiệm
Viết code đơn giản để lấy hình ảnh từ camera, mình đang xài Asus Zenfone 2, android 5.0 (API 21).
Flow của chương trình như sau:
+ Đầu tiên chương trình sẽ load thư viện OpenCV trong hàm onResume
+ Khai báo 1 thực thể của lớp BaseLoaderCallback để trả về kết quả load thư viện, nếu thành công thì sẽ enable camera
+ Khi onPause thì disable camera.
+ Trong hàm onCameraFrame sẽ trả về frame lấy được từ camera
Các bạn download source mẫu về, trong này đã có sẵn các chức năng:
+ Copy thư viện vào project
+ Get hình ảnh từ camera rồi hiển thị
+ Có button để bật/tắt flash
Bạn ơi, cho mình hỏi tí là sao khi làm các bước như bạn hướng dẫn rồi mà khi chạy ứng dụng vẫn bắt cài OpenCV Manager nhỉ ? còn thiếu bước nào chăng
nếu bạn đã copy các file lib có đuôi là *.a thì không cần cài OpenCV Manager, bạn xem lại có chép đủ và đúng version chưa?
Bạn ơi, cho mình hỏi là mình cài ứng dụng được rồi, nhưng khi chạy ứng dụng đó thì nó cứ báo là rất tiếc app
đã dừng lại. Bạn giải thích giúp mình với!
Bạn kiểm tra các biến có bị null không? Nếu không tìm ra thì post source code lên đây