江大白《Opencv 基础及 AI 项目实战》课程——第一次作业

一、 作业题目

  • 对于资料包中的 task1.jpg 和 task.jpg 两张图片,使用 Dlib 算法进行人脸检测。并将检测出的人脸,自动抠取出来,放到图片的右上角。比如以下的效果,是图片中有一个人的时候显示的人脸局部小图图片。
  • 人脸检测框修改为蓝色。
    在这里插入图片描述在这里插入图片描述

二 、实现代码和效果

代码:

import cv2
import dlib

img1 = cv2.imread(r'./task1.jpg')
img2 = cv2.imread(r'./task2.jpg')

img = img2  # 修改选项  img1  or  img2
is_resize = True  # 是否对图片进行压缩   True  or  False

y_start = 40  #贴图的位置
x_start = 40

net = dlib.get_frontal_face_detector()

faceRects = net(img)
for i, box_info in enumerate(faceRects):
    x_min, y_min, x_max, y_max = box_info.left(), box_info.top(), box_info.right(), box_info.bottom()

    cv2.rectangle(img, (x_min, y_min), (x_max, y_max), (255, 0, 0), 3)
    w, h = int(x_max - x_min), int(y_max - y_min)
    img[y_start:y_start + h, x_start:x_start + w, ...] = img[y_min:y_max, x_min:x_max, ...]
    x_start += (w + 5)
cv2.putText(img, f"face_count:{len(faceRects)}", (35, 35), cv2.FONT_HERSHEY_COMPLEX_SMALL, 3, (0, 0, 255), 2)

if is_resize:
    img = cv2.resize(img, (500, 600))
cv2.imshow("img", img)
cv2.waitKey(0)

效果:

为了能够完全显示,将图片进行了resize,然后显示

task1:
在这里插入图片描述
task2:
在这里插入图片描述

三 、学习心得

  • 本次作业中需要实现的任务为:人脸检测、画图、抠图、贴图、写字
  • 在抠图与贴图遇到一点小问题,x,y位置容易搞混
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值