当前位置: 首页 > news >正文

计算机视觉40例:案例33绘制关键点案例34勾勒五官轮廓

案例33绘制关键点

# 使用dlib进行人脸关键点检测(68个特征点)

## 完整代码

```python
import numpy as np
import cv2
import dlib

# 读取图像
img = cv2.imread("people.jpg")

# Step 1:构造人脸检测器(dlib初始化)
detector = dlib.get_frontal_face_detector()

# Step 2:检测人脸框(使用人脸检测器返回检测到的人脸框)
faces = detector(img, 0)

# Step 3:载入模型(加载预测器)
predictor = dlib.shape_predictor("shape_predictor_68_face_landmarks.dat")

# Step 4:获取每一张脸的关键点(实现检测)
for face in faces:
# 获取关键点
shape = predictor(img, face)
# 将关键点转换为坐标(x,y)的形式
landmarks = np.matrix([[p.x, p.y] for p in shape.parts()])

# Step 5:绘制每一张脸的关键点(绘制shape中的每个点)
for idx, point in enumerate(landmarks):
# 当前关键点的坐标
pos = (point[0, 0], point[0, 1])
# 针对当前关键点,绘制一个实心圆
cv2.circle(img, pos, 2, color=(0, 255, 0), thickness=-1)
# 字体
font = cv2.FONT_HERSHEY_SIMPLEX
# 利用cv2.putText输出1-68,索引序号加1,显示时从1开始
cv2.putText(img, str(idx + 1), pos, font, 0.4, (255, 255, 255), 1, cv2.LINE_AA)

# 绘制结果
cv2.imshow("img", img)
cv2.waitKey()
cv2.destroyAllWindows()

案例34勾勒五官轮廓

```python import numpy as np import dlib import cv2 # 模型初始化 shape_predictor= "shape_predictor_68_face_landmarks.dat" #dace_landmark detector = dlib.get_frontal_face_detector() predictor = dlib.shape_predictor(shape_predictor) # 自定义函数drawLine,将指定的点连接起来 def drawLine(start,end): # 获取点集 pts = shape[start:end] # 遍历点集,将各个点用直线连接起来 for l in range(1, len(pts)): ptA = tuple(pts[l - 1]) ptB = tuple(pts[l]) cv2.line(image, ptA, ptB, (0, 255, 0), 2) # 自定义函数,将指定的点构成一个凸包、绘制其轮廓 def drawConvexHull(start,end): # 注意,凸包用来绘制眼睛、嘴 # 眼睛、嘴也可以用drawLine通过直线绘制 # 但是,使用凸包绘制轮廓,更方便进行颜色填充等设置 # 获取某个特定五官的点集 Facial = shape[start:end] # 针对该五官构造凸包 mouthHull = cv2.convexHull(Facial) # 把凸包轮廓绘制出来 cv2.drawContours(image, [mouthHull], -1, (0, 255, 0), 2) # 读取图像 image=cv2.imread("people.jpg") # 色彩空间转换彩色(BGR)-->灰度(Gray) gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) # 获取人脸 faces = detector(gray, 0) # 对检测到的rects,逐个遍历 for face in faces: # 针对脸部的关键点进行处理,构成坐标(x,y)形式 shape = np.matrix([[p.x, p.y] for p in predictor(gray, face).parts()]) # ============使用函数drawConexHull绘制嘴、眼睛========================= #获取嘴部的关键点集(在整个脸部索引中,其索引范围为[48,60],不包含61) drawConvexHull(48,59) # 嘴内部 drawConvexHull(60,68) # 左眼 drawConvexHull(42,48) # 右眼 drawConvexHull(36,42) # ============使用函数drawLine绘制脸颊、眉毛、鼻子========================= # 将shape转换为np.array shape=np.array(shape) # 绘制脸颊,把脸颊的各个关键点(索引0-16,不含17)用线条连接起来 drawLine(0,17) # 绘制左眉毛,通过将关键点连接实现(索引18-21) drawLine(17,22) # 绘制右眉毛(索引23-26) drawLine(22,27) # 鼻子(索引27-36) drawLine(27,36) cv2.imshow("Frame", image) cv2.waitKey() cv2.destroyAllWindows() ```
http://www.jsqmd.com/news/1295115/

相关文章:

  • 8月求职必看,如何4步拿到产品_AI产品offer?
  • MOS 管、IGBT 绝缘散热优选:燊桐启元导热矽胶布应用解析
  • 2026年07月 三相卧式螺旋卸料沉降离心机行业解析——浙江三联环保科技股份有限公司制造实力与选型指南 - 企业推荐官【官方】
  • LinkedHashMap源码解析
  • 3分钟快速汉化Figma:设计师必备的中文界面插件使用指南
  • C++11 多线程编程指南:从基础使用到常见陷阱与线程池实现
  • 06 Python HTTP 请求入门
  • 飞鹰GEO优化的技术框架:从意图分层到监测闭环的架构设计
  • WebProtégé完全指南:一站式掌握OWL 2本体协作开发平台
  • 如何快速掌握Pixelle-Video:面向内容创作者的完整AI短视频制作指南
  • 终极免费方案:3步解锁Wand专业版功能,告别2小时限制!
  • 2026海外获客难题怎么破解?海外AI营销获客系统+AI外贸营销获客智能体做好海外AI营销(附带联系方式) - 品牌深度评测
  • 单片机毕业设计-基于 HX711 的嵌入式称重报警检测装置开发 基于单片机的智能重量超限声光预警系统设计(013701)
  • 2026年跑步机什么品牌值得买 - 科技焦点
  • [香橙派]orange pi zero 3 烧录Ubuntu系统镜像——无需HDMI数据线安装
  • 2026沈阳卖1克拉钻戒体验:易奢福带GIA证书到手价比别家高不少 - 易奢福
  • 5分钟掌握Path of Building:打造流放之路最强Build规划神器
  • 2026年07月二手发电机组制造厂家供货商实力解析与行业格局洞察 - 优企名品
  • Flutter无界约束
  • 如何高效解密RPG Maker加密资源:实战解密工具完整指南
  • FTLinearActivityIndicator:让刘海屏iPhone重获网络活动指示器的终极解决方案
  • TBMQ集群部署完全指南:从Docker Compose到K8s云原生方案
  • 北京密云热门奢侈品包包保值清单,出手之前建议先查看 - 生活时报
  • Linux 环境下段错误出现的原因及调试方法
  • 2026北京食品经营许可证代办多少钱?各类业态收费明细 - 瑞雪中天
  • 2026年07月双电机卧式螺旋卸料沉降离心机供应厂家——浙江三联环保科技股份有限公司市场定位与选型策略分析 - 企业推荐官【官方】
  • 假齿同步带生产厂家怎么判断是否可靠?五个可查证的评判依据,不看宣传看证据 - 生活动态圈
  • 本地桌面 AI 智能代理 OpenClaw 部署避坑指南|小白入门教程(含安装包)
  • 5分钟搞定Atom中文汉化:新手必看的完整本地化指南
  • 2026年昆山手机店大测评,这家为何备受信赖? - GrowUME