J'essaie de créer une application où je pointerai mon appareil photo vers quelque chose et l'application affichera la couleur rouge bleu et vert de l'objet. Je développe l'application dans le studio android en utilisant la bibliothèque OpenCV. J'ai réussi tous les paramètres et peut convertir l'espace de couleur de la vidéo en direct. Cependant, je ne peux pas afficher les valeurs R, G et B séparément. Pour être honnête, je n'ai aucune idée de comment le faire.J'ai fait google search et j'ai reçu de l'aide en C++, mais je n'ai pas trouvé beaucoup d'aide pour java.Afficher les valeurs Red Blue et Green séparément en utilisant OpenCV pour l'application Android
mon fichier d'activité est ce
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;
}
}
Note: Je n'ai pas les textviews à afficher le bleu et le vert rouge comme je veux juste enregistrer les valeurs hors.
vérifier cela peut vous aider: https://stackoverflow.com/q/44017224/4146722 –
Merci pour la suggestion. Je suis actuellement dehors. Une fois que je reçois et je vais passer par là .. – Mill3r
le lien que vous m'avez fourni n'a pas aidé réellement. J'essaie de contourner cela depuis longtemps maintenant. La question dans le lien fonctionne d'une manière ou d'une autre pour donner les valeurs de rgb mais le taux de trame tombe à 2fps. Je ne pouvais pas le faire fonctionner au-delà de ça. – Mill3r