Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.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
使用新图像将位图转换为Mat,并在opencv android中返回_Android_Opencv_Image Processing_Bitmap_Face Detection - Fatal编程技术网

使用新图像将位图转换为Mat,并在opencv android中返回

使用新图像将位图转换为Mat,并在opencv android中返回,android,opencv,image-processing,bitmap,face-detection,Android,Opencv,Image Processing,Bitmap,Face Detection,我是android中opencv的新手。我已经为gradle android studio下载了最新的opencv sdk。 I'v导入了用于人脸检测的样本,并成功构建了它。看起来是这样的 它正在围绕面绘制绿色矩形。我想得到矩形内的区域,用位图替换为drawable文件夹中的新图像。 我现在为实现我的目标所做的就是在这里 public Mat onCameraFrame(CvCameraViewFrame inputFrame) { mRgba = inputFrame.rg

我是android中opencv的新手。我已经为gradle android studio下载了最新的opencv sdk。 I'v导入了用于人脸检测的样本,并成功构建了它。看起来是这样的

它正在围绕面绘制绿色矩形。我想得到矩形内的区域,用位图替换为drawable文件夹中的新图像。 我现在为实现我的目标所做的就是在这里

public Mat onCameraFrame(CvCameraViewFrame inputFrame) {

        mRgba = inputFrame.rgba();
        mGray = inputFrame.gray();

        if (mAbsoluteFaceSize == 0) {
            int height = mGray.rows();
            if (Math.round(height * mRelativeFaceSize) > 0) {
                mAbsoluteFaceSize = Math.round(height * mRelativeFaceSize);
            }
            mNativeDetector.setMinFaceSize(mAbsoluteFaceSize);
        }

        MatOfRect faces = new MatOfRect();

        if (mDetectorType == JAVA_DETECTOR) {
            if (mJavaDetector != null)
                mJavaDetector.detectMultiScale(mGray, faces, 1.1, 2, 2, // TODO: objdetect.CV_HAAR_SCALE_IMAGE
                        new Size(mAbsoluteFaceSize, mAbsoluteFaceSize), new Size());
        }
        else if (mDetectorType == NATIVE_DETECTOR) {
            if (mNativeDetector != null)
                mNativeDetector.detect(mGray, faces);
        }
        else {
            Log.e(TAG, "Detection method is not selected!");
        }

        Rect[] facesArray = faces.toArray();
        for (int i = 0; i < facesArray.length; i++)
            Imgproc.rectangle(mRgba, facesArray[i].tl(), facesArray[i].br(), FACE_RECT_COLOR, 3);
        try {

             resultBitmap = BitmapFactory.decodeResource(getResources(),
                     R.drawable.icon);

           Utils.bitmapToMat(resultBitmap, mRgba);
        }
            catch(Exception e){
                Log.e(TAG, "Length of resultBitmap" + resultBitmap.getByteCount());
                resultBitmap.recycle();
                resultBitmap=null;

            }

            return mRgba;
    }
public Mat onCameraFrame(CvCameraViewFrame inputFrame){
mRgba=inputFrame.rgba();
mGray=inputFrame.gray();
如果(mAbsoluteFaceSize==0){
int height=mGray.rows();
if(数学圆(高度*相对面尺寸)>0){
mAbsoluteFaceSize=数学圆(高度*相对面尺寸);
}
mNativeDetector.setMinFaceSize(mAbsoluteFaceSize);
}
MatOfRect面=新的MatOfRect();
if(mDetectorType==JAVA\u检测器){
如果(mJavaDetector!=null)
mJavaDetector.detectMultiScale(mGray,faces,1.1,2,2,//TODO:objdetect.CV\u HAAR\u SCALE\u IMAGE
新大小(mAbsoluteFaceSize,mAbsoluteFaceSize),新大小();
}
else if(mDetectorType==本机检测器){
if(mNativeDetector!=null)
mNativeDetector.detect(mGray,faces);
}
否则{
Log.e(标记“未选择检测方法!”);
}
Rect[]facesArray=faces.toArray();
对于(int i=0;i

到目前为止,我所做的是:获取Mat对象,使用drawable文件夹中的图像创建位图,再次将该位图转换为Mat对象,然后返回该Mat对象。但不幸的是,这没有显示任何内容。谁能帮我找出我做错的地方。任何帮助都将不胜感激。谢谢:)

我想这个问题回答了您的要求。感谢您的回复,但这是为老sdk的开放。它的探测器现在没有setframe()。嗨@TashenJazbi你解决问题了吗?我想这个问题回答了你的问题。感谢您的回复,但这是为老sdk的开放。它的探测器现在没有setframe()。嗨@TashenJazbi你解决了这个问题吗?