超详细注释之OpenCV按位AND|超详细注释之OpenCV按位AND OR XOR和NOT
这篇博客将介绍如何使用OpenCV应用按位AND、OR、XOR和NOT。上一篇学习了如何从图像中裁剪和提取感兴趣的区域(ROI),截取的都是矩形。但是如果想裁剪一个非矩形区域呢?该怎么办?
答案是同时应用位运算和掩蔽。
- AND:当且仅当两个像素都大于零时,按位AND为真。
- OR:如果两个像素中的任何一个大于零,则按位或为真。
- XOR:当且仅当两个像素中的一个大于零,而不是两个都大于零时,按位异或为真。
- NOT:按位NOT反转图像中的“开”和“关”像素。
1. 效果图 矩形 VS 圆形效果图如下:
文章图片
AND操作效果图如下,可以看到正方形的边缘丢失了,因为矩形没有圆形覆盖那么大的区域,因此两个像素都没有“开”。
文章图片
OR操作效果图如下,可以看到矩形和圆形被合并了。
文章图片
XOR操作效果图如下,可以看到正方形的中心被移走了,因为异或操作不能同时具有大于零的像素。
文章图片
NOT操作效果图如下,可以看到圆由前景白色背景黑色变成了前景黑色背景白色。
文章图片
2. 源码
# 对示例图像应用AND、OR、XOR和NOT运算符。# USAGE# python opencv_bitwise.py# 导入必要的包import numpy as npimport cv2# 绘制一个矩形rectangle = np.zeros((300, 300), dtype="uint8")cv2.rectangle(rectangle, (25, 25), (275, 275), 255, -1)cv2.imshow("Rectangle", rectangle)# 绘制一个圆circle = np.zeros((300, 300), dtype = "uint8")cv2.circle(circle, (150, 150), 150, 255, -1)cv2.imshow("Circle", circle)# 'AND'操作——当输入都是>0的像素时,则得到开操作像素为255白色,否则被设置为关闭,像素为0黑色# 当且仅当两个像素都大于零时,按位AND为真。bitwiseAnd = cv2.bitwise_and(rectangle, circle)cv2.imshow("AND", bitwiseAnd)cv2.waitKey(0)# ‘OR'操作得到矩形和圆形的并集,只要有一个>0,就得到255白色,否则为0# 如果两个像素中的任何一个大于零,则按位“或”为真。bitwiseOr = cv2.bitwise_or(rectangle, circle)cv2.imshow("OR", bitwiseOr)cv2.waitKey(0)# ‘XOR'是OR的补集,仅当俩个像素有一个>0时,为白色255bitwiseXor = cv2.bitwise_xor(rectangle, circle)cv2.imshow("XOR", bitwiseXor)cv2.waitKey(0)# ‘NOT'操作:0变成255,255变成0bitwiseNot = cv2.bitwise_not(circle)cv2.imshow("NOT", bitwiseNot)cv2.waitKey(0)
参考 https://www.pyimagesearch.com/2021/01/19/opencv-bitwise-and-or-xor-and-not/
【超详细注释之OpenCV按位AND|超详细注释之OpenCV按位AND OR XOR和NOT】到此这篇关于超详细注释之OpenCV按位AND OR XOR和NOT的文章就介绍到这了,更多相关OpenCV按位AND OR XOR NOT内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
推荐阅读
- 为什么你的路演总会超时()
- 标签、语法规范、内联框架、超链接、CSS的编写位置、CSS语法、开发工具、块和内联、常用选择器、后代元素选择器、伪类、伪元素。
- 松软可口易消化,无需烤箱超简单,新手麻麻也能轻松成功~
- 原生家庭之痛与超越
- BNC公链|BNC公链 | Eth2.0测试网Topaz已质押超100万枚ETH
- 89㎡挤出小三房,电视墙装的超好看!
- Android超简单实现沉浸式状态栏
- 超级行动力第二次作业-行动大于学习的秘密
- Day10_要想看起来毫不费力,必须付出超乎常人的努力
- 2019/3/29