我的所作所为: 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 ++代码是否有任何更改