SlideShare a Scribd company logo
1 of 36
Android 程式設計(7)
講師:王瑋毅
概要
• opencvlibs處理器架構不同處理方式
• NDK Opencv讀圖實作
• Java 導入 OpenCV
• NDK Opencv相機實作
opevcvlibs處理器架構不同處理方式
• armeabi: ARM v5架構和
ARM v6架構
• armeabi-v7a: ARM v7架構
• x86: Intel x86 CPUs架構
NDK Opencv讀圖實作(1/8)
• 新增一個 imgCanny.cpp,函式名稱為
getCannyImg
NDK Opencv讀圖
實作(2/8)
• 實作 getCannyImg函式
NDK Opencv讀圖實作(3/8)
• 開啟MainActivity.java 加入imgCanny和opencv_java3
NDK Opencv讀圖實作(4/8)
• 開啟CmakeLists.txt 加入imgCanny,注意target_link_libraries 順序
NDK Opencv讀圖實作(5/8)
• 開啟activity_main.xml,新增Button和ImageView
NDK Opencv讀圖實作(6/8)
• 找一張圖片命名test.jpg,新增到drawable
資料夾
NDK Opencv讀圖實作(7/8)
• 開啟Activity.java 實作Button和ImageView事件
NDK Opencv
讀圖實作(8/8)
• 執行結果
Java 導入 OpenCV(1/9)
• 建立新專案,下載Android for OpenCV 3.3.0
• 點擊File -> New -> Import Module,將要加入OpenCV
Java 導入 OpenCV(2/9)
• 選擇路徑OpenCV-android-sdk/sdk/java 加入
Java 導入 OpenCV(3/9)
• 點擊File -> Project Structure,選擇app,分頁選Dependencies
Java 導入 OpenCV(4/9)
• 點擊+號,選擇Module dependency,在選擇opencvlib
Java 導入 OpenCV(5/9)
• 新增JNI資料夾,資料夾名稱為jniLibs
Java 導入 OpenCV(6/9)
• 先在MainActivity.java 實作
Java 導入 OpenCV(7/9)
• 打開gradle.properties檔案,加入設定NDK指令
Java 導入 OpenCV(8/9)
• Run程式,看OpenCV是否設定好
• 如出現以下錯誤
Java 導入 OpenCV(9/9)
• 處理錯誤,設定OpenCV的Compile Sdk 版本和Build Tools 版本
• 設定完後,Run程式,成功會出現OpenCV load success
NDK Opencv相機實作(1/14)
• 在xml 加入相機畫面
NDK Opencv相機實作(2/14)
• 在Activity加入JavaCameraView
NDK Opencv相機實作(3/14)
• 加入onPause、onDestroy 和 onResume,並將static清掉
NDK Opencv相機實作(4/14)
• 加入BaseLoaderCallback
NDK Opencv相機實作(5/14)
• 在onResume 加入BaseLoaderCallback的應用
NDK Opencv相機實作(6/14)
• 實作CvCameraViewListener2,並宣告Mat
NDK Opencv相機實作(7/14)
• 設定mRgba類型、釋放、取得
NDK Opencv相機實作(8/14)
• 加入相機權限,開啟AndroidManifest.xml
NDK Opencv相機實作(9/14)
• 執行程式,會出現以下訊息視窗
• 到應用程式找到此程式,將相機權限打開
NDK Opencv相機實作(10/14)
• 比較好的做法,可以向使用者要求是否給權限,作法如下
NDK Opencv相機實作(11/14)
• 執行
NDK Opencv相機實作(12/14)
• 建立convertGray.cpp, 實作
灰階
NDK Opencv相機實作(13/14)
• 在MainActivity.jav 加入
convertGray,並改成顯示灰階
NDK Opencv相機實作(14/14)
• 執行結果
原始碼
• NDK Opencv讀圖實作:
https://github.com/royshow0316/OpenCVTest
• NDK OpenCV相機實作:
https://github.com/royshow0316/OpenCVCameraTest
• NDK OpenCV相機實作(灰階):
https://github.com/royshow0316/OpenCVCameraGrayTest
謝謝大家

More Related Content

What's hot

JavaScript 物件導向觀念入門 v.s. TypeScript 開發實戰 (微軟實戰課程日)
JavaScript 物件導向觀念入門 v.s. TypeScript 開發實戰 (微軟實戰課程日)JavaScript 物件導向觀念入門 v.s. TypeScript 開發實戰 (微軟實戰課程日)
JavaScript 物件導向觀念入門 v.s. TypeScript 開發實戰 (微軟實戰課程日)Will Huang
 
快速上手 Windows Containers 容器技術 (Docker Taipei)
快速上手 Windows Containers 容器技術 (Docker Taipei)快速上手 Windows Containers 容器技術 (Docker Taipei)
快速上手 Windows Containers 容器技術 (Docker Taipei)Will Huang
 
Node.js中间件 connect模块深入浅出
Node.js中间件 connect模块深入浅出Node.js中间件 connect模块深入浅出
Node.js中间件 connect模块深入浅出Eric Xiao
 
Docker 最佳实践
Docker 最佳实践Docker 最佳实践
Docker 最佳实践YuLing Liu
 
Docker容器微服務 x WorkShop
Docker容器微服務 x WorkShopDocker容器微服務 x WorkShop
Docker容器微服務 x WorkShopPhilip Zheng
 
TypeScript 開發實戰:開發即時互動的 html5 websocket 聊天室應用程式
TypeScript 開發實戰:開發即時互動的 html5 websocket 聊天室應用程式TypeScript 開發實戰:開發即時互動的 html5 websocket 聊天室應用程式
TypeScript 開發實戰:開發即時互動的 html5 websocket 聊天室應用程式Will Huang
 
cec-hello-docker
cec-hello-dockercec-hello-docker
cec-hello-dockerBruce Huang
 
NodeJS基礎教學&簡介
NodeJS基礎教學&簡介NodeJS基礎教學&簡介
NodeJS基礎教學&簡介GO LL
 
Nodejs introduce - using Socket.io
Nodejs introduce - using Socket.ioNodejs introduce - using Socket.io
Nodejs introduce - using Socket.ioCaesar Chi
 
快快樂樂學 Angular 2 開發框架
快快樂樂學 Angular 2 開發框架快快樂樂學 Angular 2 開發框架
快快樂樂學 Angular 2 開發框架Will Huang
 
從軟體開發角度
談 Docker 的應用
從軟體開發角度
談 Docker 的應用從軟體開發角度
談 Docker 的應用
從軟體開發角度
談 Docker 的應用謝 宗穎
 
開發人員不可不知的 Windows Container 容器技術預覽
開發人員不可不知的 Windows Container 容器技術預覽開發人員不可不知的 Windows Container 容器技術預覽
開發人員不可不知的 Windows Container 容器技術預覽Will Huang
 
Visual Studio 2017 新功能探索 (Study4.TW)
Visual Studio 2017 新功能探索 (Study4.TW)Visual Studio 2017 新功能探索 (Study4.TW)
Visual Studio 2017 新功能探索 (Study4.TW)Will Huang
 
容器與 Gitlab CI 應用
容器與 Gitlab CI 應用容器與 Gitlab CI 應用
容器與 Gitlab CI 應用Philip Zheng
 
SQL Server 資料庫版本控管
SQL Server 資料庫版本控管SQL Server 資料庫版本控管
SQL Server 資料庫版本控管Will Huang
 
3 introduction to kubernetes
3 introduction to kubernetes3 introduction to kubernetes
3 introduction to kubernetesJiang Shang
 
Docker + CI pipeline 的高效率 ChatBot 開發方法
Docker + CI pipeline 的高效率 ChatBot 開發方法Docker + CI pipeline 的高效率 ChatBot 開發方法
Docker + CI pipeline 的高效率 ChatBot 開發方法Philip Zheng
 

What's hot (20)

微服務自己動手做
微服務自己動手做微服務自己動手做
微服務自己動手做
 
JavaScript 物件導向觀念入門 v.s. TypeScript 開發實戰 (微軟實戰課程日)
JavaScript 物件導向觀念入門 v.s. TypeScript 開發實戰 (微軟實戰課程日)JavaScript 物件導向觀念入門 v.s. TypeScript 開發實戰 (微軟實戰課程日)
JavaScript 物件導向觀念入門 v.s. TypeScript 開發實戰 (微軟實戰課程日)
 
快速上手 Windows Containers 容器技術 (Docker Taipei)
快速上手 Windows Containers 容器技術 (Docker Taipei)快速上手 Windows Containers 容器技術 (Docker Taipei)
快速上手 Windows Containers 容器技術 (Docker Taipei)
 
Node.js中间件 connect模块深入浅出
Node.js中间件 connect模块深入浅出Node.js中间件 connect模块深入浅出
Node.js中间件 connect模块深入浅出
 
Docker 最佳实践
Docker 最佳实践Docker 最佳实践
Docker 最佳实践
 
Docker容器微服務 x WorkShop
Docker容器微服務 x WorkShopDocker容器微服務 x WorkShop
Docker容器微服務 x WorkShop
 
TypeScript 開發實戰:開發即時互動的 html5 websocket 聊天室應用程式
TypeScript 開發實戰:開發即時互動的 html5 websocket 聊天室應用程式TypeScript 開發實戰:開發即時互動的 html5 websocket 聊天室應用程式
TypeScript 開發實戰:開發即時互動的 html5 websocket 聊天室應用程式
 
cec-hello-docker
cec-hello-dockercec-hello-docker
cec-hello-docker
 
NodeJS基礎教學&簡介
NodeJS基礎教學&簡介NodeJS基礎教學&簡介
NodeJS基礎教學&簡介
 
Nodejs introduce - using Socket.io
Nodejs introduce - using Socket.ioNodejs introduce - using Socket.io
Nodejs introduce - using Socket.io
 
快快樂樂學 Angular 2 開發框架
快快樂樂學 Angular 2 開發框架快快樂樂學 Angular 2 開發框架
快快樂樂學 Angular 2 開發框架
 
All about NodeJS
All about NodeJSAll about NodeJS
All about NodeJS
 
從軟體開發角度
談 Docker 的應用
從軟體開發角度
談 Docker 的應用從軟體開發角度
談 Docker 的應用
從軟體開發角度
談 Docker 的應用
 
開發人員不可不知的 Windows Container 容器技術預覽
開發人員不可不知的 Windows Container 容器技術預覽開發人員不可不知的 Windows Container 容器技術預覽
開發人員不可不知的 Windows Container 容器技術預覽
 
Visual Studio 2017 新功能探索 (Study4.TW)
Visual Studio 2017 新功能探索 (Study4.TW)Visual Studio 2017 新功能探索 (Study4.TW)
Visual Studio 2017 新功能探索 (Study4.TW)
 
容器與 Gitlab CI 應用
容器與 Gitlab CI 應用容器與 Gitlab CI 應用
容器與 Gitlab CI 應用
 
Docker Build
Docker BuildDocker Build
Docker Build
 
SQL Server 資料庫版本控管
SQL Server 資料庫版本控管SQL Server 資料庫版本控管
SQL Server 資料庫版本控管
 
3 introduction to kubernetes
3 introduction to kubernetes3 introduction to kubernetes
3 introduction to kubernetes
 
Docker + CI pipeline 的高效率 ChatBot 開發方法
Docker + CI pipeline 的高效率 ChatBot 開發方法Docker + CI pipeline 的高效率 ChatBot 開發方法
Docker + CI pipeline 的高效率 ChatBot 開發方法
 

Similar to Android程式設計(7)

Asp.net mvc 6 新功能初探
Asp.net mvc 6 新功能初探Asp.net mvc 6 新功能初探
Asp.net mvc 6 新功能初探Gelis Wu
 
前端自動化工具
前端自動化工具前端自動化工具
前端自動化工具國昭 張
 
ASP.NET MVC 6 新功能探索
ASP.NET MVC 6 新功能探索ASP.NET MVC 6 新功能探索
ASP.NET MVC 6 新功能探索Will Huang
 
介紹前端 Web 技術在跨平台開發上的應用
介紹前端 Web 技術在跨平台開發上的應用介紹前端 Web 技術在跨平台開發上的應用
介紹前端 Web 技術在跨平台開發上的應用Jerry Lin
 
如何在 Java App 中導入 Scala
如何在 Java App 中導入 Scala如何在 Java App 中導入 Scala
如何在 Java App 中導入 Scalajavatwo2011
 
IOS入门分享
IOS入门分享IOS入门分享
IOS入门分享zenyuhao
 
2017 Week 14 Computer Vision
2017 Week 14 Computer Vision2017 Week 14 Computer Vision
2017 Week 14 Computer VisionAkashaC1
 
RxJS 6 新手入門
RxJS 6 新手入門RxJS 6 新手入門
RxJS 6 新手入門Will Huang
 
IKVM.NET 深入敵營的 Java
IKVM.NET 深入敵營的 JavaIKVM.NET 深入敵營的 Java
IKVM.NET 深入敵營的 Java建興 王
 
Kubernetes project update and how to contribute
Kubernetes project update and how to contributeKubernetes project update and how to contribute
Kubernetes project update and how to contributeinwin stack
 
Introduction to NodeJS
Introduction to NodeJSIntroduction to NodeJS
Introduction to NodeJSTechParty@UIC
 
NODEjs Lesson1
NODEjs Lesson1NODEjs Lesson1
NODEjs Lesson13dmodeldiy
 
Linux binary Exploitation - Basic knowledge
Linux binary Exploitation - Basic knowledgeLinux binary Exploitation - Basic knowledge
Linux binary Exploitation - Basic knowledgeAngel Boy
 
Javascript primer plus
Javascript primer plusJavascript primer plus
Javascript primer plusDongxu Yao
 
Using openCV on Raspberry Pi
Using openCV on Raspberry PiUsing openCV on Raspberry Pi
Using openCV on Raspberry PiCAVEDU Education
 
[4]投影片 futurewad樹莓派研習會 141211
[4]投影片 futurewad樹莓派研習會 141211[4]投影片 futurewad樹莓派研習會 141211
[4]投影片 futurewad樹莓派研習會 141211CAVEDU Education
 
Azure Container Registry(preview)x Web App On Linux(preview)
Azure Container Registry(preview)x Web App On Linux(preview)Azure Container Registry(preview)x Web App On Linux(preview)
Azure Container Registry(preview)x Web App On Linux(preview)Ch Rick
 

Similar to Android程式設計(7) (20)

Asp.net mvc 6 新功能初探
Asp.net mvc 6 新功能初探Asp.net mvc 6 新功能初探
Asp.net mvc 6 新功能初探
 
前端自動化工具
前端自動化工具前端自動化工具
前端自動化工具
 
ASP.NET MVC 6 新功能探索
ASP.NET MVC 6 新功能探索ASP.NET MVC 6 新功能探索
ASP.NET MVC 6 新功能探索
 
介紹前端 Web 技術在跨平台開發上的應用
介紹前端 Web 技術在跨平台開發上的應用介紹前端 Web 技術在跨平台開發上的應用
介紹前端 Web 技術在跨平台開發上的應用
 
如何在 Java App 中導入 Scala
如何在 Java App 中導入 Scala如何在 Java App 中導入 Scala
如何在 Java App 中導入 Scala
 
IOS入门分享
IOS入门分享IOS入门分享
IOS入门分享
 
2017 Week 14 Computer Vision
2017 Week 14 Computer Vision2017 Week 14 Computer Vision
2017 Week 14 Computer Vision
 
RxJS 6 新手入門
RxJS 6 新手入門RxJS 6 新手入門
RxJS 6 新手入門
 
IKVM.NET 深入敵營的 Java
IKVM.NET 深入敵營的 JavaIKVM.NET 深入敵營的 Java
IKVM.NET 深入敵營的 Java
 
Kubernetes project update and how to contribute
Kubernetes project update and how to contributeKubernetes project update and how to contribute
Kubernetes project update and how to contribute
 
Ali-tomcat
Ali-tomcatAli-tomcat
Ali-tomcat
 
Jni文档
Jni文档Jni文档
Jni文档
 
Introduction to NodeJS
Introduction to NodeJSIntroduction to NodeJS
Introduction to NodeJS
 
Node分享 展烨
Node分享 展烨Node分享 展烨
Node分享 展烨
 
NODEjs Lesson1
NODEjs Lesson1NODEjs Lesson1
NODEjs Lesson1
 
Linux binary Exploitation - Basic knowledge
Linux binary Exploitation - Basic knowledgeLinux binary Exploitation - Basic knowledge
Linux binary Exploitation - Basic knowledge
 
Javascript primer plus
Javascript primer plusJavascript primer plus
Javascript primer plus
 
Using openCV on Raspberry Pi
Using openCV on Raspberry PiUsing openCV on Raspberry Pi
Using openCV on Raspberry Pi
 
[4]投影片 futurewad樹莓派研習會 141211
[4]投影片 futurewad樹莓派研習會 141211[4]投影片 futurewad樹莓派研習會 141211
[4]投影片 futurewad樹莓派研習會 141211
 
Azure Container Registry(preview)x Web App On Linux(preview)
Azure Container Registry(preview)x Web App On Linux(preview)Azure Container Registry(preview)x Web App On Linux(preview)
Azure Container Registry(preview)x Web App On Linux(preview)
 

More from Roy Wang

Android程式設計(6)
Android程式設計(6)Android程式設計(6)
Android程式設計(6)Roy Wang
 
Android 程式設計(5)
Android 程式設計(5)Android 程式設計(5)
Android 程式設計(5)Roy Wang
 
Android 程式設計(4)
Android 程式設計(4)Android 程式設計(4)
Android 程式設計(4)Roy Wang
 
Android 程式設計(3)
Android 程式設計(3)Android 程式設計(3)
Android 程式設計(3)Roy Wang
 
Android 程式設計(2)
Android 程式設計(2)Android 程式設計(2)
Android 程式設計(2)Roy Wang
 
Android 程式設計(1)
Android 程式設計(1)Android 程式設計(1)
Android 程式設計(1)Roy Wang
 
App inventor 5
App inventor 5App inventor 5
App inventor 5Roy Wang
 
App inventor 4
App inventor 4App inventor 4
App inventor 4Roy Wang
 
App inventor 3
App inventor 3App inventor 3
App inventor 3Roy Wang
 
App inventor 2
App inventor 2App inventor 2
App inventor 2Roy Wang
 
App inventor 1
App inventor 1App inventor 1
App inventor 1Roy Wang
 

More from Roy Wang (11)

Android程式設計(6)
Android程式設計(6)Android程式設計(6)
Android程式設計(6)
 
Android 程式設計(5)
Android 程式設計(5)Android 程式設計(5)
Android 程式設計(5)
 
Android 程式設計(4)
Android 程式設計(4)Android 程式設計(4)
Android 程式設計(4)
 
Android 程式設計(3)
Android 程式設計(3)Android 程式設計(3)
Android 程式設計(3)
 
Android 程式設計(2)
Android 程式設計(2)Android 程式設計(2)
Android 程式設計(2)
 
Android 程式設計(1)
Android 程式設計(1)Android 程式設計(1)
Android 程式設計(1)
 
App inventor 5
App inventor 5App inventor 5
App inventor 5
 
App inventor 4
App inventor 4App inventor 4
App inventor 4
 
App inventor 3
App inventor 3App inventor 3
App inventor 3
 
App inventor 2
App inventor 2App inventor 2
App inventor 2
 
App inventor 1
App inventor 1App inventor 1
App inventor 1
 

Android程式設計(7)