Android 6.0中的致命信号,但在android 4.0中运行到Android 5.1

时间:2016-09-14 09:40:20

标签: android c++ opencv

我的所作所为: 1.我用c ++编写opencv样本人脸检测代码,并使用包装器从android调用。

2.我使用Android原生相机并将图像(Mat)传递给c ++人脸检测方法。

3.它在Android 4.0中运行到Android 5.1但在android 6.0中运行时,应用程序崩溃

4.我尝试将log放在应用程序崩溃的方法中(即)在c ++源代码中。

5.示例代码

std::vector<cv::Rect_<double>> res_dbl;
Rect detect_faces(Mat& image)
{
LOGD("START");
    vector<Rect> res;
    Mat im(image.size(),CV_8UC1);
    if(image.channels()==3)
    {
        cvtColor(image,im,COLOR_BGR2GRAY);
    }
    else
    {
        image.copyTo(im);
    }

    cascade.detectMultiScale(im, res, 1.1,2,CASCADE_FIND_BIGGEST_OBJECT,Size(image.cols/3,image.rows/3));

for (int i = 0; i < res.size(); i++) {


}
    if(res.size()==0){return Rect(0,0,0,0);}
   res_dbl.push_back(cv::Rect_<double>(res[0].x,res[0].y,res[0].width,res[0].height));
  LOGD("END");
   return res[0];

}

6.使用

调用上述方法
  

Rect faceROI = detect_faces(captured_image);

日志&#34;结束&#34;显示,但它在android 6.0中运行时没有返回。

7.我也尝试过不同的设备(使用android 6.0)。

我需要知道的事情:

1.我是否需要在Application.mk文件中添加任何标志?

2.我是否需要对上述代码进行任何更改?

请帮我解决这个问题。

更新:

1.我在c ++中构建了许多opencv项目,并使用包装器从android调用。

2.只有少数简单的项目(如人脸检测)在Android 6.0中运行,许多项目在Android 6.0中崩溃,但在Android 4.4到Android 5.1中工作

3.在Android 6.0中构建动态库时,c ++代码是否有任何更改

0 个答案:

没有答案