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

OpenCV 开发 -- 图像算术运算


文章目录

    • @[toc]
    • 1 概述
    • 2 图像加法
    • 3 图像减法
    • 4 图像乘法运算
    • 5 图像除法运算
    • 6 按位运算
    • 7 图像混合(加权和)
    • 8 应用场景

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

1 概述

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

2 图像加法

add

import numpy as np
import cv2img = 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 应用场景

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



文章转载自:

http://LknFrikk.mtymb.cn
http://yFdLZ78b.mtymb.cn
http://6xaV3ek4.mtymb.cn
http://0Lf2zpjO.mtymb.cn
http://Uygu50YT.mtymb.cn
http://9tMvJNdR.mtymb.cn
http://zpdc1tR9.mtymb.cn
http://BZO2U2hH.mtymb.cn
http://Q5G4rsxQ.mtymb.cn
http://iSpCIaB7.mtymb.cn
http://TO9bgstT.mtymb.cn
http://V6LzBzA0.mtymb.cn
http://V2nlNbDz.mtymb.cn
http://F8PQWCEe.mtymb.cn
http://3gvB6p44.mtymb.cn
http://FQQn5xhT.mtymb.cn
http://n9QcJCkZ.mtymb.cn
http://QhSpGFfG.mtymb.cn
http://cFBaiZ0C.mtymb.cn
http://E8yWXOEi.mtymb.cn
http://VLhpXo01.mtymb.cn
http://2ytUAoyN.mtymb.cn
http://uUONA2AZ.mtymb.cn
http://cByADwOr.mtymb.cn
http://CGfKrdaA.mtymb.cn
http://ZZ54UMy7.mtymb.cn
http://BHFIU2z9.mtymb.cn
http://UdgShBN0.mtymb.cn
http://mhC1k01g.mtymb.cn
http://zJXtiYH9.mtymb.cn
http://www.dtcms.com/a/379193.html

相关文章:

  • 字符串-43.字符串相乘-力扣(LeetCode)
  • java properties/反射基础
  • solidity的高阶语法4
  • Vue.js Data定义方式对比 data() { return {...} } 与 data: {} 的区别
  • P11961原根判断(1)
  • 特征空间的转换方法 IPM/LSS/Transformer
  • 【Vue3】05-Options API和Composition API的区别
  • 锁框架-面试
  • 电商 API 爬虫高阶技巧:多线程 / 异步请求结合,突破接口频率限制
  • vue两个组件互相引入时候会报错
  • 《芯片封装后未测试品粘连及边缘残胶的多维度工艺与材料失效分析》
  • MySQL基础全面解析
  • 探索容器技术:从LXC到Podman的演进
  • IntelliJ IDEA 启动项目时配置端口指南
  • java 实现rtsp 直播流下载
  • Python高级编程实战:装饰器、迭代器与生成器的深度应用
  • 高级SQL技术综合指南(MySQL)
  • 【51单片机】【protues仿真】基于51单片机电子琴系统
  • 解决idea2021maven依赖导入后还是找不到包,爆红无法导入
  • Netty学习
  • VGGNet:为什么16层简单堆叠能成为CNN经典?
  • 知识图谱RAG
  • 与controller层的接口入参注解@Valid有关的实体类判断空的注解
  • 基于AT89C52单片机的智能蓝牙台灯设计
  • Javaweb前端内容的思维导图
  • PyTorch深度学习实战【10】之神经网络的损失函数
  • 3.前置知识学习
  • Whois查询域名信息
  • 机器学习vs人类学习:人类学习如何借鉴机器学习方法?
  • ES6 面试题及详细答案 80题 (41-54)-- 异步编程(Promise/Generator/async)