OpenCV 开发 -- 图像算术运算

发布于:2025-09-12 ⋅ 阅读:(18) ⋅ 点赞:(0)

更多精彩内容
👉内容导航 👈
👉OpenCV开发 👈

1 概述

OpenCV中的图像算术运算是数字图像处理的基础操作,主要包括加法、减法、乘法、除法等运算。这些运算可以用于图像融合、图像增强、图像分析等多种应用场景。

2 图像加法

add

import numpy as np
import cv2

img = cv2.imread('off.png')
img1 = cv2.imread('error.png')
print(img.shape) # 打印图片尺寸
print(img1.shape)
img2 = cv2.add(img, img1) # 两张图片相加,必须图片的尺寸相同
# 或者
img2 = cv2.add(img, 50) # 加标量,50 是要加到图像每个像素上的数值
cv2.imshow('image', img2)
cv2.waitKey(0)

如果尺寸不同则会报错:

cv2.error: OpenCV(4.11.0) D:\a\opencv-python\opencv-python\opencv\modules\core\src\arithm.cpp:665: error: (-209:Sizes of input arguments do not match) The operation is neither 'array op array' (where arrays have the same size and the same number of channels), nor 'array op scalar', nor 'scalar op array' in function 'cv::arithm_op'

3 图像减法

subtract

img2 = cv2.subtract(img, img1)
# 或者
img2 = cv2.subtract(img, 50)

4 图像乘法运算

图像乘法可以用于图像的权重调整或亮度调节。

multiply

# OpenCV中的乘法运算函数
result = cv2.multiply(img1, img2)

5 图像除法运算

图像除法常用于图像归一化或特定的图像处理算法中。

divide

# OpenCV中的除法运算函数
result = cv2.divide(img1, img2)

6 按位运算

OpenCV还提供了按位逻辑运算,包括AND、OR、XOR和NOT运算:

bitwise_and

bitwise_or

bitwise_not

bitwise_xor

# 位与运算
result = cv2.bitwise_and(img1, img2)
# 位或运算
result = cv2.bitwise_or(img1, img2)
# 位非运算
result = cv2.bitwise_not(img1)
# 位异或运算
result = cv2.bitwise_xor(img1, img2)

7 图像混合(加权和)

图像混合是一种特殊的加法运算,通过对两幅图像赋予不同的权重来实现图像融合:

addWeighted

# 图像混合
alpha = 0.7  # 第一幅图像的权重
beta = 0.3   # 第二幅图像的权重
gamma = 0    # 可选的标量值

result = cv2.addWeighted(img1, alpha, img2, beta, gamma)

8 应用场景

  • 图像增强:通过加法运算增加亮度
  • 图像融合:使用加权加法混合两张图像
  • 背景消除:通过减法运算去除背景
  • 掩码操作:使用按位运算处理特定区域
  • 边缘检测:利用差分运算检测边缘
  • 图像合成:结合多种运算创建特殊效果



网站公告

今日签到

点亮在社区的每一天
去签到