我需要创建四个箭头(向上、向下、向左和向右)并将它们实时放在框架上。我正在做一些实时图像处理工作,并根据我需要实时显示箭头的函数结果在框架上。从以下位置获取帧后:
public Mat onCameraFrame(CameraBridgeViewBase.CvCameraViewFrame inputFrame) {
mRgba = inputFrame.rgba();
mGray = inputFrame.gray();
if(state){
myTask= new MyTask();
myTask.execute(mRgba);
//need to write method to display arrow
return mRgba;
}
return mRgba;
}
它调用异步任务来执行方法识别并设置需要显示哪个箭头。现在如果开始帧和其他帧相同则返回1。我需要知道如何制作箭头并将其显示在框架上。我稍后将制定一个算法来确定方向,因此让我们假设当 return 为 1 时,我需要在框架中显示向上箭头。我的异步任务是:
class MyTask extends AsyncTask<Mat, Void, Integer> {
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected Integer doInBackground(Mat... mats) {
if(!isCancelled())
return recognize(mats[0]);
else return 0;
}
@Override
protected void onPostExecute(Integer integer) {
super.onPostExecute(integer);
directionOfCamera=integer;
}
@Override
protected void onCancelled() {
super.onCancelled();
}
}
识别方法是:
public int recognize(Mat inputFrame) {
if (startedFrame){
deskriptor.detect(inputFrame,keypoints1);
deskriptor.compute(inputFrame,keypoints1,deskriptor1);
startedFrame=false;
return 0;
}
基本上它应该是这样的:
如果缺少任何有用的代码,请告诉我并添加它。
千万里不及你
相关分类