dlib库的安装以及人脸特征点的识别分布分别在前两篇博文里面

Dlib Python 检测人脸特征点 Face Landmark Detection

Mac OSX下安装dlib (Python)

这篇主要涉及 cv2.ellipse 和 cv2.fitEllipse 的用法

import cv2
import dlib
import numpy as np detector = dlib.get_frontal_face_detector()
landmark_predictor = dlib.shape_predictor('/Users/apple/Downloads/shape_predictor_68_face_landmarks.dat') img = cv2.imread('/Users/apple/Downloads/3-1.jpg')
faces = detector(img,1)
left_eye = []
right_eye = []
if ( len(faces) > 0):
for k,d in enumerate(faces):
shape = landmark_predictor(img,d)
for i in range(36,42):
right_eye.append([shape.part(i).x,shape.part(i).y])
for i in range(42,48):
left_eye.append([shape.part(i).x,shape.part(i).y]) ellipse_left = cv2.fitEllipse(np.array(left_eye))
ellipse_right = cv2.fitEllipse(np.array(right_eye))
cv2.ellipse(img, ellipse_left, (0,255,0), 1)
cv2.ellipse(img, ellipse_right, (0,255,0), 1) cv2.fitEllipse(points) 里面的points类型要求是numpy.array([[x,y],[x1,y1]...]) 并不是把所有点都包括在椭圆里面,而是拟合出一个椭圆尽量使得点都在圆上 cv2.ellipse(img, center, axes, angle, startAngle, endAngle, color[, thickness[, lineType[, shift]]]) 其中每个参数的意义如下: · img 图像 · center 中心坐标 · axes 椭圆的尺寸(长短轴) · angle 旋转角度 · startAngle 起始角度 · endAngle 终止角度 · 后面参数都是跟线条有关的 ellipse_left ((275.1310119628906, 197.24081420898438),
(13.491097450256348, 47.203433990478516),
84.19256591796875) 这个时候返回的分别是椭圆的中心坐标,短轴长轴(也就是2b,2a),旋转角度. center = ellipse_left[0]
size = ellipse_left[1]
angle = ellispe_left[2] cv2.imshow('PIC',img)
cv2.waitKey(0)

Dlib Opencv cv2.fitEllipse用于人眼轮廓椭圆拟合的更多相关文章

  1. opencv学习之路(27)、轮廓查找与绘制(六)——外接圆、椭圆拟合、逼近多边形曲线、计算轮廓面积及长度、提取不规则轮廓

    一.最小外接圆 #include "opencv2/opencv.hpp" #include<iostream> using namespace std; using ...

  2. opencv的实用研究--分析轮廓并寻找边界点

    opencv的实用研究--分析轮廓并寻找边界点 ​      轮廓是图像处理中非常常见的.对现实中的图像进行采样.色彩变化.灰度变化之后,能够处理得到的是“轮廓”.它直接地反应你了需要分析对象的边界特 ...

  3. opencv2.4.13+python2.7学习笔记--OpenCV中的图像处理--图像轮廓

    阅读对象:无要求. 1.代码 ''' OpenCV中的轮廓 轮廓可以简单认为成将连续的点(连着边界)连在一起的曲线,具有相同的颜色或者灰度.为了更加准确,要使用二值化图像.在寻找轮廓之前,要进行阈值化 ...

  4. 机器学习进阶-项目实战-信用卡数字识别 1.cv2.findContour(找出轮廓) 2.cv2.boudingRect(轮廓外接矩阵位置) 3.cv2.threshold(图片二值化操作) 4.cv2.MORPH_TOPHAT(礼帽运算突出线条) 5.cv2.MORPH_CLOSE(闭运算图片内部膨胀) 6. cv2.resize(改变图像大小) 7.cv2.putText(在图片上放上文本)

    7. cv2.putText(img, text, loc, text_font, font_scale, color, linestick) # 参数说明:img表示输入图片,text表示需要填写的 ...

  5. fitEllipse的外接矩形与拟合的椭圆参数关系

    根据我看的博客,fitEllipse返回的外接矩形(假设为box),对应椭圆的相应参数: box.size.width 和box.size.height对应椭圆的长轴和短轴: box.center对应 ...

  6. Opencv笔记(十七)——轮廓性质

    边界矩形的宽高比 x,y,w,h = cv2.boundingRect(cnt) aspect_ratio = float(w)/h Extent Extent就是轮廓面积与边界矩形面积的比. are ...

  7. OpenCV4.1.0实践(2) - Dlib+OpenCV人脸特征检测

    待更! 参考: python dlib opencv 人脸68点特征检测

  8. matlab中可用于进行轮廓提取的函数

    本文主要总结一下在matlab中可用于进行轮廓提取的函数. 1 bwperim 根据参考资料[2]的提示,可以使用bwperim()函数进行轮廓提取,具体代码如下: %读取原图im = imread( ...

  9. Anaconda3环境下安装OpenCV(cv2)

    Anaconda3环境下安装OpenCV(cv2) 主要步骤 1 首先查看自己的Anaconda安装的python版本 2 下载相应的OpenCv.whl文件 3 使用cmd安装.whl文件 查看自己 ...

随机推荐

  1. 第一章 CLR执行模型

    发现看过好几遍还是会忘记,因水平有限理解的不是很到位.欢迎各位大神及时指正. CLR执行模型 1.1编译器将源代码编译成托管模块 托管模块:是标准的windows可移植执行体文件(PE32(32位机器 ...

  2. oracle学习笔记(六) JDBC使用

    JDBC使用 1. 导包 直接使用IDEA导入依赖包即可 新建一个lib,把jar包放在这里 2. 加载驱动 Class.forName("oracle.jdbc.driver.Oracle ...

  3. js中console使用1

    js中console主要用于debug时使用 测试代码如下: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN ...

  4. Web后端 JAVA学习之路

    1.Java分类 Java按应用来分,可以分为J2ME(手机版),J2SE(标准版),J2EE(企业版)三部分. ・J2ME:已经被安卓开发取代. ・J2SE:Java的核心类,其中包括桌面应用,但一 ...

  5. elementUi的时间选择器在IE浏览器的赋值问题--前端

    项目技术:vue+elementUi,组件化 出现的问题:在IE浏览器(IE10+),唤醒组件加载赋值,表单中el-input等框赋值正确,el-date-picker选择器没有显示所附的值(或显示p ...

  6. Vue开发插件

    (一)Vue.js的插件应该有一个公开方法:install. 这个方法的第一个参数是Vue构造器,第二个参数是一个可选的选项对象,一般是如下操作: MyPlugin.install = functio ...

  7. Chart.js 與 ASP.NET MVC 整合應用

    Chart.js 是一套開放原始碼的「圖表」繪製函式庫,和其他第三方的圖表工具相比,Chart.js 的特色如下: 支援 HTML 5.響應式網頁 (RWD, Responsive Web Desig ...

  8. Android为TV端助力 EventBus出现has no public methods called onEvent的问题

    Caused by: de.greenrobot.event.EventBusException: Subscriber class com.hhzt.iptv.lvb_w.socket.MyMsgS ...

  9. Android Studio教程07-Fragment的使用

    目录 1. Fragment是什么 1.1. 设计原理和实例 2. 创建fragment 2.1. fragment的生命周期 2.2 添加用户界面:融入到Activity中 3. 管理fragmen ...

  10. 【Oracle RAC】Linux系统Oracle12c RAC安装配置详细记录过程V2.0(图文并茂)

    [Oracle RAC]Linux系统Oracle12c RAC安装配置详细过程V2.0(图文并茂) 2 Oracle12c RAC数据库安装准备工作2.1 安装环境介绍2.2 数据库安装软件下载3 ...