rockx读取单张图片并检测图片内人脸的矩形
一.rockx人脸检画框测大体流程:
本次代码主要实现如何通过rockx的框架进行人脸的检测,并把人脸画出来。具体的流程如下:
具体步骤实现:
1.初始化rockx人脸检测框架
首先要使用rockx_create_config分配rockx_config_t结构体,并使用rockx_add_config把对应的rockx路径配置进去,在我们的板子里面在/userdata/rockx_data里面
这里易错:使用的是 rockx_add_config(face_detect_config, ROCKX_CONFIG_DATA_PATH, "/tmp/rockx_data/");
然后,并使用rockx_create创建rockx_handle_t句柄。
2.读取人脸图片
读取对应的人脸图片,在rockx里面用rockx_image_read来读取对应的人脸图片。并把人脸的特征数据传入到rockx_image_t结构体里面。
3.调用rockx的人脸检测API对其进行人脸检测
调用rockx_face_detect对图片进行人脸检测,这里的输入的是input_image,这个是由rockx_image_read读取的图片数据,输出的数据是rockx_object_array_t,后面的数据则都是通过rockx_object_array_t来处理。
4.循环人脸数量并使用Opencv进行画框
循环人脸数量,人脸数量是face_array.count。然后获取人脸的坐标属性,这里的坐标属性就是left、top、width、high,并用OPENCV把input_image转换成Mat矩阵( Mat tmp_img = Mat(input_image.height, input_image.width, CV_8UC3, input_image.data)),转换完成之后再使用rectangle把坐标转换成矩形。
5.保存人脸检测的图片
最后用imwrite保存人脸检测后的图片,并使用rockx_destroy销毁rockx_handle_t。
结果:
二.小结
问题1:
在写代码的时候遇到如下报错
535724 rockx face_detection_v2 model data not found!
2535724 rockx init module(1) error -1
rockx_create failed, error: -1
自己已经在板子上上传了模型,但是却说没有。反复检查代码中的路径也没有填错,但是就是找不到。后面查阅资料发现:可能是自己使用的板子SDK与学习的视频中的版本不同,路径的配置有所不同
所学视频用的是:ROCKX_CONFIG_BIN_PATH来设置路径,这个在我的板子上就会导致找不到模型,然后改成ROCKX_CONFIG_DATA_PATH后就没有问题了。
问题2:
自己用的照片是四个人,但是检测结果却出来了7个