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

目录

  • 一、 作业题目
  • 二 、实现代码和效果
  • 三 、学习心得

一、 作业题目

  • 对于资料包中的 task1.jpg 和 task.jpg 两张图片,使用 Dlib 算法进行人脸检测。并将检测出的人脸,自动抠取出来,放到图片的右上角。比如以下的效果,是图片中有一个人的时候显示的人脸局部小图图片。
  • 人脸检测框修改为蓝色。
    江大白《Opencv 基础及 AI 项目实战》课程——第一次作业_第1张图片江大白《Opencv 基础及 AI 项目实战》课程——第一次作业_第2张图片

二 、实现代码和效果

代码:

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:
江大白《Opencv 基础及 AI 项目实战》课程——第一次作业_第3张图片
task2:
江大白《Opencv 基础及 AI 项目实战》课程——第一次作业_第4张图片

三 、学习心得

  • 本次作业中需要实现的任务为:人脸检测、画图、抠图、贴图、写字
  • 在抠图与贴图遇到一点小问题,x,y位置容易搞混

你可能感兴趣的:(opencv,人工智能,深度学习)