当前位置: 首页 > news >正文

OpenCV图像算数运算可莉版

OpenCV图像算数运算

  • 一、图像加法
  • 二、图像减法
  • 三、图像乘法
  • 四、图像除法
  • 五、图像位运算
    • 位与计算(AND)
    • 位或运算(OR)
    • 位非运算(NOT)
    • 位异或运算(XOR)
  • 六、图像混合


在图像处理中,算术运算和位运算是非常基础且重要的操作。

本文将详细介绍如何使用 OpenCV 进行图像的加法、减法、乘法、除法、位运算以及图像混合操作。

一、图像加法

图像加法是将两幅图像的对应像素值相加,生成一幅新的图像。

在 OpenCV 中,可以使用 cv2.add() 函数来实现图像加法。

import cv2
import numpy as np# 读取一张图片
img1 = cv2.imread('D:\Word\keli.jpg')
# 移动这张图片的位置作为图片2
w,h = img1.shape[:2]
M = np.float32([[1, 0, 0], [0, 1, 100]])
img2 = cv2.warpAffine(img1, M, (w, h))
cv2.imwrite('D:\Word\keli-move2.jpg', img2)
# 图像加法
img = cv2.add(img1, img2)
cv2.imwrite('D:\Word\keli-add.jpg', img)cv2.destroyAllWindows()

原图:
在这里插入图片描述
移动后:
在这里插入图片描述
相加之后:
在这里插入图片描述
注意:如果像素值相加后超过 255,OpenCV 会自动将其截断为 255

二、图像减法

图像减法是将两幅图像的对应像素值相减,生成一幅新的图像。

在 OpenCV 中,可以使用 cv2.subtract() 函数来实现图像减法。

import cv2
import numpy as np
# 读取这张图片
img1 = cv2.imread('D:\Word\keli.jpg')
w,h = img1.shape[:2]
# 这是移动
M = np.float32([[1, 0, 0], [0, 1, 100]])
# 这是不移动
M = np.float32([[1, 0, 0], [0, 1, 0]])
img2 = cv2.warpAffine(img1, M, (w, h))
cv2.imwrite('D:\Word\keli-move2.jpg', img2)
cv2.imshow('img2', img2)
cv2.waitKey(0)
# 图像减法
img = cv2.subtract(img1, img2)
cv2.imwrite('D:\Word\keli-sub2.jpg', img)
cv2.imshow('img', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

不移动减完以后是全黑
移动以后因为大块背景是白色的,出现了负片的效果,所以要做到真正的负片只需要用纯白的图减去原图即可
在这里插入图片描述
注意:如果像素值相减后小于 0,OpenCV 会自动将其截断为 0。

三、图像乘法

图像乘法是将两幅图像的对应像素值相乘,生成一幅新的图像。

在 OpenCV 中,可以使用 cv2.multiply() 函数来实现图像乘法。

   img1 = cv2.imread('D:\Word\keli.jpg')# 变暗img = cv2.multiply(img1, 0.7)# 变亮img = cv2.multiply(img1, 1.2)cv2.imwrite('D:\Word\keli-change2.jpg', img)cv2.imshow('img', img)cv2.waitKey(0)cv2.destroyAllWindows()

在这里插入图片描述
在这里插入图片描述

四、图像除法

图像除法是将两幅图像的对应像素值相除,生成一幅新的图像。在 OpenCV 中,可以使用 cv2.divide() 函数来实现图像除法。作用和乘法应该是一样的

五、图像位运算

位运算是对图像的每个像素进行二进制位操作。

OpenCV 提供了 cv2.bitwise_and()、cv2.bitwise_or()、cv2.bitwise_not() 和 cv2.bitwise_xor() 函数来实现图像的位运算。

位与计算(AND)

原图AND纯白:
在这里插入图片描述
原图AND全黑:
在这里插入图片描述

位或运算(OR)

原图OR纯白:(纯白)
在这里插入图片描述
原图OR全黑:
在这里插入图片描述

位非运算(NOT)

原图NOT:
在这里插入图片描述

位异或运算(XOR)

原图ORX纯白:
在这里插入图片描述
原图ORX全黑:
在这里插入图片描述

六、图像混合

图像混合是将两幅图像按照一定的权重进行线性组合,生成一幅新的图像。

在 OpenCV 中,可以使用 cv2.addWeighted() 函数来实现图像混合。

实例

# 图像混合
alpha = 0.7  # 第一幅图像的权重
beta = 0.3   # 第二幅图像的权重
gamma = 0    # 可选的标量值result = cv2.addWeighted(img1, alpha, img2, beta, gamma)# 显示结果
cv2.imshow('Result', result)
cv2.waitKey(0)
cv2.destroyAllWindows()

参数说明:
alpha:第一幅图像的权重。
beta:第二幅图像的权重。
gamma:可选的标量值,通常设置为 0。
公式:
result = img1 * alpha + img2 * beta + gamma

http://www.dtcms.com/a/305017.html

相关文章:

  • bash命令创建新conda环境
  • Kubernetes自动扩容方案
  • 力扣-104. 二叉树的最大深度
  • Linux系统的虚拟控制台介绍(桌面卡死的拯救方案)
  • 深入探索爬虫与自动化脚本:释放效率的利器
  • 手写简易Spring框架
  • 万字详解——OSI七层模型:网络通信的完整架构解析
  • mysql 之多表
  • others-Facebook落地页自建归因逻辑
  • 如何快速把Clickhouse数据同步到Mysql
  • 解决百度网盘双击没反应打不开的问题
  • Element Plus常见基础组件(二)
  • 16大工程项目管理系统对比:开源与付费版本
  • 科研小tip3|Windows中的CompressAi下载与使用
  • leaflet中绘制轨迹线的大量轨迹点,解决大量 marker 绑定 tooltip 同时显示导致的性能问题
  • 机器学习-十大算法之一线性回归算法
  • 通用算法与深度学习基础
  • 机器学习课程介绍
  • 机器学习线性回归:从基础到实践的入门指南
  • 机器学习——线性回归(LinearRegression)
  • 出现错误,Microsoft store初始化失败。请尝试刷新或稍后返回。
  • 深入理解异或运算(XOR)及应用
  • 【变更性别】
  • Webpack基本概念及核心流程
  • Docker初学者需要了解的几个知识点(一):传统虚拟机 VS容器
  • vscode开发微信小程序
  • Shader开发(四)计算机图形学中的颜色定义
  • pthread库和thread库
  • 42、鸿蒙HarmonyOS Next开发:应用上下文Context
  • 20250729使用WPS打开xlsx格式的电子表格时候隐藏显示fx的编辑栏的方法