OpenCV-15位运算

OpenCV中的逻辑运算就是对应位置的元素进行与、或、非和异或。

Opencv与Python不同的是:OpenCV中0的非反过来是255,255反过来是0。

但是Python中255非为-256。

一、非运算

使用API---cv.bitwise_not(str)

示例代码如下:

复制代码
import cv2
import numpy as np


cat = cv2.imread("cat.png")


cat_not = cv2.bitwise_not(cat)      # 进行非运算
cv2.imshow("not", np.hstack((cat, cat_not)))   # 两张图片水平展示
print(cat[:2, :2])
print(cat_not[:2, :2])

cv2.waitKey(0)
cv2.destroyAllWindows()

输出结果如下:

从图片中我们可以发现:猫白色的部分变为了黑色.

从数组中我们可以看出:每个数字取反,在munpy中最大值为255,因此此时255-90=165。

二、与运算

使用API---cv.bitwise_and(str)

第一个为小狗,第二个为小猫,第三个为经过与运算的,其中246 & 90 = 82

OpenCV与Python中的与运算一致,都是先将十进制数字转为二进制,再进行与运算,最后再转化为十进制。

且一般经过与运算后的数字比前两个较小。

三、或运算

使用API---cv.bitwise_or(str)

与对应位置元素进行或运算

其中 246 | 90 = 254,或运算的法则与Python一样。

整体数字变大,图片变亮。

四、异或运算

使用API---cv.bitwise_xor(str)

注意点:np.hstack(),中间补充的元素必须为元组。

整体颜色比较乱。按对应位置的元素进行二进制异或操作。

数字相同为1,数字不同为0.

经验证可得 246 ^ 90 = 172 其中255 ^255 = 0

综合演示代码如下所示:

复制代码
import cv2
import numpy as np


cat = cv2.imread("cat.png")
dog = cv2.imread("dog.png")
new_dog = dog[:370, :550]
new_cat = cat[:370, :550]

# cat_not = cv2.bitwise_not(cat)      # 进行非运算
# cv2.imshow("not", np.hstack((cat, cat_not)))   # 非运算两张图片水平展示

# cat_and = cv2.bitwise_and(new_cat, new_dog)
# cv2.imshow("and", np.hstack((new_cat, cat_and)))   # 与运算两张图片水平展示

# cat_or = cv2.bitwise_or(new_cat, new_dog)
# cv2.imshow("or", np.hstack((new_cat, cat_or)))   # 与运算两张图片水平展示

cat_xor = cv2.bitwise_xor(new_cat, new_dog)
cv2.imshow("xor", np.hstack((new_cat, cat_xor)))
print(new_dog[:2, :2])
print("-----------------------")
print(new_cat[:2, :2])
print("-----------------------")
# print(cat_and[:2, :2])    # 输出两个图片的与操作
# print(cat_or[:2, :2])    # 输出两个图片的或操作
print(cat_xor[:2, :2])    # 输出两个图片的或操作


cv2.waitKey(0)
cv2.destroyAllWindows()
相关推荐
正经教主14 小时前
【Trae+AI】和Trae学习搭建App_2.1:第3章·手搓后端基础框架Express
人工智能·后端·学习·express
梁辰兴14 小时前
OpenAI更新ChatGPT Images:生成速度最高提升4倍,原生多模态模型
人工智能·科技·ai·chatgpt·大模型·openai·图像生成
yoyo君~14 小时前
FAST-LIVO2 深度技术解析
算法·计算机视觉·机器人·无人机
古城小栈14 小时前
边缘大模型本地部署与推理实战:以GPT-OSS-20B为例
人工智能·gpt·语言模型·边缘计算
这张生成的图像能检测吗14 小时前
Wonder3D: 跨域扩散的单图像3D重建技术
pytorch·深度学习·机器学习·计算机视觉·3d·三维重建·扩散模型
感谢地心引力14 小时前
【AI】免费的代价?Google AI Studio 使用指南与 Cherry Studio + MCP 实战教程
人工智能·ai·google·chatgpt·gemini·mcp·cherry studio
Tezign_space14 小时前
SEO优化与AI内容运营的技术融合:架构、算法与实施路径
人工智能·架构·内容运营·私域运营·ai内容生成·seo流量增长·内容运营效率
小苑同学14 小时前
PaperReding:《LLaMA: Open and Efficient Foundation Language Models》
人工智能·语言模型·llama
geneculture14 小时前
融智学体系图谱(精确对应版)
大数据·人工智能·学习·融智学的重要应用·信智序位
叶子丶苏14 小时前
第十七节_PySide6基本窗口控件深度补充_窗口绘图类(QPicture类) 下篇
python·pyqt