加载必须的第三方库
读取图像
调用检测接口检测人脸关键点
引入utils.face.face_keypoints() 函数
检测图像中的人脸关键点
在图像中渲染人脸关键点
引入utils.face.draw_points() 函数
根据坐标在图像中渲染指定颜色、指定大小的关键点
face_keypoints(image)参数含义如下:
image:贴纸图像
返回值:人脸关键点列表
draw_points(image, pts, size = 2, color = (255, 0, 0))参数含义如下:
image:待渲染图像
pts:关键点坐标数组
size:绘制点的半径,默认值: 2
color:颜色值元组,默认为(255, 0, 0)-红色
返回值:绘制关键点后的图像
在 OpenCV 中,cv2.imread()
函数用于读取文件路径指定的图像。这段代码 image = cv2.imread("./img_data/yh_color.jpg")[:, :, ::-1]
执行了两个主要操作:
读取图像:
cv2.imread("./img_data/yh_color.jpg")
这行代码尝试从当前目录下的img_data
文件夹中读取名为yh_color.jpg
的图像文件。返回的image
是一个 NumPy 数组,其包含了图像的数据。通道顺序反转:
[:, :, ::-1]
这部分代码是对读取的图像数组进行切片操作,目的是反转图像的颜色通道顺序。在 OpenCV 中,默认情况下,图像的通道顺序是 BGR(蓝、绿、红),而不是常见的 RGB(红、绿、蓝)。[::-1]
是一个切片操作符,它从数组的末尾开始向前取值,步长为-1,意味着它将数组中的元素顺序完全反转。
详细解释一下 [:, :, ::-1]
:
:
表示选择所有行和所有列,即不改变行和列的顺序。[:, :, ::-1]
表示选择所有行、所有列,但对颜色通道进行完全反转。
因此,当你对一个图像使用 [:, :, ::-1]
时,如果图像是 BGR 格式,它将被转换为 RGB 格式。这对于需要将图像用于某些特定库(如matplotlib,它使用 RGB)或者在显示图像时保持颜色的正确性是非常有用的。
举个例子,如果你使用 matplotlib 显示图像,你需要确保图像的通道顺序是 RGB,否则颜色会显示不正确。在这种情况下,你可以使用 matplotlib.pyplot.imshow(image[:, :, ::-1])
来显示图像,其中 image
是通过 OpenCV 读取的图像。