Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在openCV android上获取错误:CameraActivity(服务器)';~通道已无法恢复,将被处理_Java_Android_Opencv - Fatal编程技术网

Java 在openCV android上获取错误:CameraActivity(服务器)';~通道已无法恢复,将被处理

Java 在openCV android上获取错误:CameraActivity(服务器)';~通道已无法恢复,将被处理,java,android,opencv,Java,Android,Opencv,我想用OpenCv对安卓摄像头的画面进行实时图像处理,但我得到了一个错误“通道无法恢复,将被处理!”有人能提供帮助吗。 我猜可能是某个地方的内存泄漏。 这是我的代码: public Mat onCameraFrame(CvCameraViewFrame inputFrame) { //TODO Auto-generated method stub mRgba = inputFrame.rgba(); mGray = inputFrame.gray

我想用OpenCv对安卓摄像头的画面进行实时图像处理,但我得到了一个错误“通道无法恢复,将被处理!”有人能提供帮助吗。 我猜可能是某个地方的内存泄漏。 这是我的代码:

 public Mat onCameraFrame(CvCameraViewFrame inputFrame) {
        //TODO Auto-generated method stub
        mRgba = inputFrame.rgba();
        mGray = inputFrame.gray();
        Imgproc.equalizeHist(mGray, mGray);
        MatOfRect signs = new MatOfRect();
        listSign = new ArrayList<Sign>();

        detector.Detect(mGray, signs, 2);
        Rect[] dangerArray = signs.toArray();
        detector.Detect(mGray, signs, 1);
        Rect[] prohibitionArray = signs.toArray();

        if ((prohibitionArray.length > 0) && (dangerArray.length > 0)) {
            Rect[] matArray = Arrays.copyOf(dangerArray, (dangerArray.length + prohibitionArray.length));
            System.arraycopy(prohibitionArray, 0, matArray, dangerArray.length, prohibitionArray.length);
            Draw(matArray);
        } else if (prohibitionArray.length > 0){
            Draw(prohibitionArray);
        } else if (dangerArray.length > 0){
            Draw(dangerArray);
        }
        return mRgba;
    }

    public void Draw(Rect[] facesArray) {
        if (facesArray.length <= 0) {
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    // TODO Auto-generated method stub
                    listRelativeLayout.setVisibility(View.GONE);
                }
            });

        } else for (int i = 0; i < facesArray.length; i++) {
            final int ii = i;
            Mat subMat = new Mat();
            subMat = mRgba.submat(facesArray[i]);
            Sign.myMap.put("Hinh" + i, Utilities.convertMatToBitmap(subMat));
            sp.play(soundId, 1, 1, 0, 0, 1);
            Imgproc.rectangle(mRgba, facesArray[i].tl(), facesArray[i].br(), FACE_RECT_COLOR, 2);

            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    // TODO Auto-generated method stub
                    Sign sign = new Sign("unknown", "Hinh" + ii);
                    listSign.add(sign);
                    listRelativeLayout.setVisibility(View.VISIBLE);
                    itemAdapter adapter = new itemAdapter(listSign, CameraActivity.this);
                    adapter.notifyDataSetChanged();
                    listDetectedSigns.setAdapter(adapter);
                }
            });

        }
    }
public Mat onCameraFrame(CvCameraViewFrame inputFrame){
//TODO自动生成的方法存根
mRgba=inputFrame.rgba();
mGray=inputFrame.gray();
Imgproc.equalizeHist(经理,经理);
MatOfRect符号=新的MatOfRect();
listSign=newarraylist();
检测器。检测(mGray,标志,2);
Rect[]dangerArray=signs.toArray();
检测器。检测(mGray,标志,1);
Rect[]禁止阵列=signs.toArray();
如果((禁止数组长度>0)和(&(危险数组长度>0)){
Rect[]matArray=Arrays.copyOf(dangerArray,(dangerArray.length+banhibitorarray.length));
System.arraycopy(禁止数组,0,matArray,dangerArray.length,禁止数组.length);
绘制(matArray);
}否则如果(禁止数组长度>0){
抽签(禁令);
}否则如果(dangerray.length>0){
抽签(Dangerray);
}
返回mRgba;
}
公共无效绘图(矩形[]面阵列){

如果(facesArray.length),您在这方面有什么进展吗?