Zi 字媒體
2017-07-25T20:27:27+00:00
關於Android OPENCV安裝篇請參考:
Android Studio OPENCV 安裝步驟
新增相機拍照權限以及相機橫向展示還有自動對焦
<uses-permission android:name="android.permission.CAMERA"/>
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
示範
XML
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity" >
<org.opencv.android.JavaCameraView
android:id="@+id/java_camera_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
/>
android.support.constraint.ConstraintLayout>
JAVA
public class focus extends AppCompatActivity implements CameraBridgeViewBase.CvCameraViewListener2{
JavaCameraView javaCameraView;
static String TAG="MainActivity";
Mat mRgba,input,imgGray;
private MTCameraView mOpenCvCameraView;
BaseLoaderCallback mLoaderCallBack = new BaseLoaderCallback(this) {
@Override
public void onManagerConnected(int status) {
super.onManagerConnected(status);
switch (status){
case BaseLoaderCallback.SUCCESS:{
javaCameraView.enableView();
break;
}
default:{
super.onManagerConnected(status);
break;
}
}
}
};
static {
System.loadLibrary("native-lib");
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.focus);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);//螢幕保持橫向
javaCameraView = (JavaCameraView)findViewById(R.id.java_camera_view);
javaCameraView.setCvCameraViewListener(this);
javaCameraView.setFocusable(true);
javaCameraView.enableView();
}
//取得手機螢幕控制
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
if (hasFocus) {
getWindow().getDecorView().setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION //影藏狀態欄和標題欄
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION //全頻顯示
| View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY); //影藏手機虛擬按鍵HOME/BACK/LIST
}
}
synchronized void start() {
try {
} catch (RuntimeException re) {
Log.w(TAG, "Unexpected exception while focusing", re);
}
}
@Override
protected void onPause(){
super.onPause();
if(javaCameraView!=null)
javaCameraView.disableView();
}
@Override
protected void onDestroy(){
super.onDestroy();
if(javaCameraView!=null)
javaCameraView.disableView();
}
@Override
protected void onResume(){
super.onResume();
if (OpenCVLoader.initDebug()){
Log.i(TAG,"TRUE");
mLoaderCallBack.onManagerConnected(LoaderCallbackInterface.SUCCESS);
}else {
Log.i(TAG,"FALSE");
OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_3_4_0,this,mLoaderCallBack);
}
}
@Override
public void onCameraViewStarted(int width, int height) {
mRgba = new Mat(height,width, CvType.CV_8UC4);
imgGray = new Mat(height,width, CvType.CV_8UC1);
}
@Override
public void onCameraViewStopped() {
mRgba.release();
}
@Override
public Mat onCameraFrame(CameraBridgeViewBase.CvCameraViewFrame inputFrame) {
mRgba = inputFrame.rgba();
input = inputFrame.gray();
Imgproc.cvtColor(mRgba,imgGray,Imgproc.COLOR_RGB2GRAY);
return mRgba;
}
}
展示
相關文章:
[Android] Android 學習總集
寫了
5860316篇文章,獲得
23313次喜歡