10.opecv面部识别

opencv面部识别 正样本和负样本 级联分类器

//定位器   使用智能指针(能够自动释放)
Ptr<cascadeClasssfier> classfier = makePtr<cascadeClasssfier>(path);
//创建一个跟踪适配器

Android开发问题

使用CameraX角度问题  image->I420

libc++_shared.so 运行时库(cmake配置 argument '-DANDROID_STL=c++_shared')
FaceTracker *tracker = reinterpret_cast<FaceTracker*>(thiz);
jbyte *inputImage = env->GetByteArrayElements(inputImage_,0);
Mat src(height,width,CV_8UC1,inputImage);//I420 
//CV_8UC1,CV_8UC2,CV_8UC3。(最后的1、2、3表示通道数,譬如RGB3通道就用CV_8UC3)
cvtColor(src,src,CV_YUV2RGBA_I420);//转RGBA
if(rotationDegrees==90){
    rotate(src,src,ROTATE_90_CLOCKWISE);
}else if(rotationDegrees==270){
  rotate(src,src,ROTATE_90_COUNTERCLOCKWISE);
}
//flip(src,src,1);//镜像
Mat gray;
cvtColor(src,gray,CV_RGBA2GRAY);//RGBA转灰度图
equalizeHist(gray,gray);//对图像进行直方图均衡化
tracker->tracker->process(gray);
std::vector<Rect> faces;//向量保存人脸
tracker->tracker->getObjects(gray);
for(Rect face:faces){
  rectangle(src,face,Scalar(255,0,255));//将面部区域绘制框
}
tracker->draw(src);//绘制
env->ReleaseByteArrayElements(inputImage_,inputImage,0);
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容