介绍
计算机视觉是一个越来越流行的关键词,从工作到娱乐,它的应用无处不在。在这篇文章中,我想给大家介绍一下计算机视觉和图像处理中常用的一些常用技术:按位算子、切片技术。然后,创建一个有趣的应用程序:在视频中戴口罩。
在本文中:
OpenCV 中的按位运算符,切片技术
创建一个应用滤镜“戴口罩”
对你的挑战。
按位运算符
当我们只需要提取图像所需的部分时,就会对图像执行按位运算。当我们需要从一张图像中提取一个不规则形状的对象并将其粘贴到另一张图像上时,就需要对图像使用按位运算将前景与背景分开。
在计算机编程中,按位运算对一个或多个十进制数进行操作。这是处理器直接支持的简单快速的数学运算。总共有 7 个按位运算,但在本文中,我们只需要学习 3 个运算符 AND、OR & NOT。
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()
结果如下:
与,或与非
如你所知,在二值图像中,白色为 1,黑色为 0。
看看下面的 AND 运算符表并将其与图像结果cv2.bitwise_and
进行比较:
我们可以看到结果非常一致,对吗?黑色和黑色产生黑色,白色和黑色,黑色和白色产生相同的结果。只有白色和白色区域会产生白色结果。
OR 运算符也是