【发布时间】:2018-03-15 07:48:50
【问题描述】:
我正在用我的安卓相机进行一些图像处理。它是将 NV21 格式的原始数据转换为 RGB 格式,得到每帧的平均 R 值。帧速率设置为 16,手机具有最佳分辨率。有很多转换算法,而我正在使用的算法效果很好。但是,我遇到的问题是我想绘制 R 值与时间的关系图,并且由于我在 onPreviewFrame 中调用转换,我无法弄清楚如何从该方法中获取 R 的值我可以执行图形处理的主要活动。
我的相机类的onPreviewMethod是:
@Override
public void onPreviewFrame(byte[] data, Camera camera){
//check if data is null
if (data == null)
throw new NullPointerException();
Camera.Size size = camera.getParameters().getPreviewSize();
//check if size is null
if(size == null)
throw new NullPointerException();
//set resolution of camera view to optimal setting
int width = size.width;
int height = size.height;
Log.d("Resolution ", " "+String.valueOf(width)+" "+String.valueOf(height));
//call ImageProcess on the data to decode YUV420SP to RGB
imgAvg = ImageProcessing.decodeYUV420SPtoRedAvg(data, width, height);
imageIntensity = imgAvg/255;
//set value of Y on the text view
TextView valueOfY = (TextView)getRootView().findViewById(R.id.valueY);
valueY = imgAvg;
valueOfY.setText(Double.toString(imgAvg));
}
这里的imgAvg变量存储了每一帧的平均R值。日志显示正确的结果,每秒有 16 个结果。我想从绘制图表的主要活动中访问这些数据。正确的方法是什么?我可以以某种方式直接访问这些数据,还是我需要以某种形式存储数据然后从另一个活动中访问它。 (注意,我想避免保存整个视频并进行图像处理。)谢谢。
【问题讨论】:
-
您可以使用该界面。这很容易!
-
感谢您的回复。你能详细说明你的建议吗?
-
好的。请看下面我的回答!
标签: android image-processing camera