使用 OpenCV 创建一个有趣的应用程序滤镜,如 Facebook!

本文介绍了如何利用OpenCV、Dlib和Python进行按位运算、图像切片技术,实现一个实时视频中的人脸口罩滤镜。通过检测人脸、识别嘴巴区域,并精确裁剪口罩图像,将口罩应用到脸部,创建类似Facebook滤镜的效果。同时,文章鼓励读者尝试使用更复杂的地标检测技术以提高准确性,并提供了一个添加猪鼻子滤镜的挑战。
摘要由CSDN通过智能技术生成

介绍

计算机视觉是一个越来越流行的关键词,从工作到娱乐,它的应用无处不在。在这篇文章中,我想给大家介绍一下计算机视觉和图像处理中常用的一些常用技术:按位算子、切片技术。然后,创建一个有趣的应用程序:在视频中戴口罩

在本文中:

  • OpenCV 中的按位运算符,切片技术

  • 创建一个应用滤镜“戴口罩”

  • 对你的挑战。

按位运算符

当我们只需要提取图像所需的部分时,就会对图像执行按位运算。当我们需要从一张图像中提取一个不规则形状的对象并将其粘贴到另一张图像上时,就需要对图像使用按位运算将前景与背景分开。

在计算机编程中,按位运算对一个或多个十进制数进行操作。这是处理器直接支持的简单快速的数学运算。总共有 7 个按位运算,但在本文中,我们只需要学习 3 个运算符 AND、OR & NOT。

cc4d00e784229043f9f97b6ed8386ab0.png

OpenCV 允许我们直接实现这 3 个操作符:cv2.bitwise_and, cv2.bitwise_or, cv2.bitwise_not

import cv2
# load images
circle = cv2.imread('circle.png')
square = cv2.imread('square.png')
# bitwise by opencv
bitwise_AND = cv2.bitwise_and(circle, square)
bitwise_OR = cv2.bitwise_or(circle, square)
bitwise_NOT = cv2.bitwise_not(circle)
# show results
cv2.imshow('circle', circle)
cv2.imshow('square', square)
cv2.imshow('AND', bitwise_AND)
cv2.imshow('OR', bitwise_OR)
cv2.imshow('NOT', bitwise_NOT)
# press 'q' to quit
if cv2.waitKey(0) & 0xFF == ord('q'):
 cv2.destroyAllWindows()

结果如下:

8bc6634249f77dab5be592f18d6e2fc1.png

与,或与非

如你所知,在二值图像中,白色为 1,黑色为 0。

看看下面的 AND 运算符表并将其与图像结果cv2.bitwise_and进行比较:

43f3367f694e58dbe73016ecee276e03.png

我们可以看到结果非常一致,对吗?黑色和黑色产生黑色,白色和黑色,黑色和白色产生相同的结果。只有白色和白色区域会产生白色结果。

OR 运算符也是

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值