0
私は自分のカメラを何かに指し示す場所にアプリケーションを作成しようとしていて、アプリケーションはオブジェクトの赤色と緑色を表示します。私はOpenCVライブラリを使用してアンドロイドスタジオでアプリケーションを開発しています。私は正常にすべての設定を完了し、ライブビデオの色空間を変換することができます。しかし、私は別々にR、G、B値を表示することができません。 正直言って、私はそれを行う方法がわかりません。私はGoogleの検索を行っているし、C + +でそれにいくつかの助けを持っているが、Javaの多くのヘルプを見つけられませんでした。Android用OpenCVアプリケーションを使用して、赤色の青と緑の値を別々に表示
私の活動のファイルは、この
package com.example.virus.bloodpressurereader;
import android.hardware.Camera;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.SurfaceView;
import org.opencv.android.BaseLoaderCallback;
import org.opencv.android.CameraBridgeViewBase;
import org.opencv.android.JavaCameraView;
import org.opencv.android.LoaderCallbackInterface;
import org.opencv.android.OpenCVLoader;
import org.opencv.core.CvType;
import org.opencv.core.Mat;
import org.opencv.dnn.Importer;
import org.opencv.imgproc.Imgproc;
public class VideoRecordingActivity extends AppCompatActivity implements CameraBridgeViewBase.CvCameraViewListener2{
//custom toolbar
private Toolbar toolbar;
//java camera view
JavaCameraView javaCameraView;
Mat mRgba, rgb_scale;
//callback loader
BaseLoaderCallback mCallBackLoader = new BaseLoaderCallback(this) {
@Override
public void onManagerConnected(int status) {
switch (status){
case BaseLoaderCallback.SUCCESS:
javaCameraView.enableView();
break;
default:
super.onManagerConnected(status);
break;
}
}
};
public static String TAG="VideoRecordingActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_video_recording);
//custom toolbar
toolbar = (Toolbar)findViewById(R.id.nav_action);
setSupportActionBar(toolbar);
//connect the camera
javaCameraView = (JavaCameraView)findViewById(R.id.java_camera_view);
//set visibility
javaCameraView.setVisibility(SurfaceView.VISIBLE);
//set callback function
javaCameraView.setCvCameraViewListener(this);
}
@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.d(TAG, "Connected");
//display when the activity resumed,, callback loader
mCallBackLoader.onManagerConnected(LoaderCallbackInterface.SUCCESS);
}else{
Log.d(TAG, "Not connected");
OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_3_3_0, this, mCallBackLoader);
}
}
@Override
public void onCameraViewStarted(int width, int height) {
//4 channel
mRgba = new Mat(height, width, CvType.CV_8UC4);
//rgb_scale = new Mat(height, width, CvType.CV_8UC1);
}
@Override
public void onCameraViewStopped() {
//release
mRgba.release();
}
@Override
public Mat onCameraFrame(CameraBridgeViewBase.CvCameraViewFrame inputFrame) {
//get each frame from camera\
mRgba = inputFrame.rgba();
//Imgproc.cvtColor(mRgba, rgb_scale, Imgproc.COLOR_RGB2HSV);
return mRgba;
}
}
。注:私はちょうど値をログアウトしたいと私は赤、青、緑を表示するtextviewsを持っていません。これはあなたを助けるかもしれ
チェック:https://stackoverflow.com/q/44017224/4146722 –
は提案をいただき、ありがとうございます。私は現在外です。一度私が得ると私はそれを通過します.. – Mill3r
あなたが私を提供したリンクは実際には役立たなかった。私は今、長い間、それを回避しようとしてきました。リンクの質問は、何とかrgb値を与えるように機能しますが、フレームレートは2fpsに低下します。私はそれを超えて働くことができませんでした。 – Mill3r