dtcms 模板下载 Python入门到实战 学生排队 matlotlib sms 建筑资质 相亲网站源码 flink教程视频 网校直播系统 直销系统源码 大数据项目开发案例 matlab根号怎么打出来 kafka默认端口 js空格符 html好看的字体样式 当前时间减一天 python中time java编程课程 javaforeach java数组添加元素 java获取文件大小 java获取本机ip java调用方法 java游戏开发教程 狮子狗出装 js绝对值 ad19 vbs表白代码 疯狂java讲义 华为下拉开关设置 mac画图工具 国都证券官网下载 xmind画流程图 虚拟声卡驱动 保卫萝卜沙漠7攻略 vs2008中文版下载 dnf风神加点 语音转文字转换器 微信摇骰子 内存条是什么
当前位置: 首页 > 学习教程  > python

Python - 将ndarray类型转换为Dlib中rectangles类型

2021/2/8 12:25:30 文章标签: 测试文章如有侵权请发送至邮箱809451989@qq.com投诉后文章立即删除

问题比较简单,将ndarray类型转换为Dlib中rectangles类型,第一次写博文,说的不好的地方大家见谅,我也是记录一下这个问题 问题描述: 最近一直在用Dlib的人脸特征识别库来做项目,但是我发现如果你想用Dlib中…

问题比较简单,将ndarray类型转换为Dlib中rectangles类型,第一次写博文,说的不好的地方大家见谅,我也是记录一下这个问题


问题描述:

最近一直在用Dlib的人脸特征识别库来做项目,但是我发现如果你想用Dlib中的shape_predictor_68_face_landmarks.dat 模型来做人脸特征识别的话,在传入参数的时候代码如下:

 face_encodings = np.matrix([[p.x, p.y] for p in self.predictor(img_crop, faces[i]).parts()])

在取faces[i]时候,face的类型应该为rectangles类型,在Dlib中他也有自己的人脸识别模块,dlib.get_frontal_face_detector() 他的返回值类型也为rectangles,但是他的目标检测模块不够完善,如果说用我们个人在python中训练的模型来做目标检测的话,一般的返回类型应该为np.ndarray 或者 opencv类型,如果想调用他的模型必须做类型转换,但是Dlib是采用的pyblind11,封装的c++的语言,做了python可调用的API,所以没办法做强转,而且dlib.rectangles的参数为:

TypeError: __init__(): incompatible constructor arguments. The following argument types are supported:
    1. _dlib_pybind11.rectangles()
    2. _dlib_pybind11.rectangles(arg0: _dlib_pybind11.rectangles)
    3. _dlib_pybind11.rectangles(arg0: iterable)
    4. _dlib_pybind11.rectangles(initial_size: int)

在我扒拉官方文档无果(主要还是看不懂英文),准备要放弃的时候,我随便试了一下一个方法,竟然成功了。


解决方案:

首先呢,dlib.rectangles()可以无参直接调用,他的意思就是创建一个rectangles的对象, 这个对象又有一个方法叫append,这个可以向rectangles对象中添加一个rectangle类型的参数,还有一点前边忘说了哈哈哈,虽然rectangles对象不可以直接创建,但是rectangle对象可以直接创建,也就是说我们可以先创建一个rectangle对象,然后创建一个空rectangles对象,之后append就可以了啦! 代码示例:
# 这个bboxs只是一个例子,这个bbox只是一个1 * 4 的 np.ndarray数组
x1 = bboxs[0][0]
y1 = bboxs[0][1]
x2 = bboxs[0][2]
y2 = bboxs[0][3]
# 创建rectangle对象,四个参数分别为左上角点位置,与右下角点的位置
rectangle = dlib.rectangle(x1, y1, x2, y2)
# 创建一个rectangles空对象
faces = dlib.rectangles()
faces.append(rectangle)
print(type(faces))
#输出
<class '_dlib_pybind11.rectangles'>

好! 虽然很简单!就是提供一个思路,哈哈哈,因为我在网上查了好多都没有查到!我第一次写,说的不对的地方大家尽管给我指正,有问题随时问我(虽然我也不是很懂)!!!!!


本文链接: http://www.dtmao.cc/news_show_2000338.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?