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

OpenCV 找出两个图像之间的差异 cv2.absdiff

OpenCV 找出两个图像之间的差异 cv2.absdiff

flyfish

cv2.absdiff 是 OpenCV 库中的一个函数,它的作用是计算两个数组(通常是图像)对应元素差值的绝对值。

功能概述

在图像处理领域,很多时候需要找出两个图像之间的差异,比如检测运动物体、背景减除等场景。cv2.absdiff 函数能够帮助我们获取两个图像在对应像素位置上的差异值,并且以绝对值的形式呈现,这样可以忽略差值的正负,只关注差异的大小。

函数语法

result = cv2.absdiff(src1, src2)
  • 参数说明
    • src1:第一个输入数组(图像),可以是单通道或多通道的图像,数据类型通常为 uint8
    • src2:第二个输入数组(图像),要求和 src1 具有相同的大小和数据类型。
  • 返回值
    • result:一个与输入数组大小和通道数相同的数组,其中每个元素是 src1src2 对应元素差值的绝对值。

原理

对于两个输入数组 src1src2cv2.absdiff 会逐元素进行如下计算:
result ( i , j ) = ∣ src1 ( i , j ) − src2 ( i , j ) ∣ \text{result}(i, j) = \left| \text{src1}(i, j) - \text{src2}(i, j) \right| result(i,j)=src1(i,j)src2(i,j)
其中,(i, j) 表示数组中元素的位置。

示例代码

以下是一个简单的示例,展示如何使用 cv2.absdiff 计算两个图像的差异:

import cv2
import numpy as np# 读取两张图像
image1 = cv2.imread('image1.jpg', cv2.IMREAD_GRAYSCALE)
image2 = cv2.imread('image2.jpg', cv2.IMREAD_GRAYSCALE)# 确保两张图像大小相同
image2 = cv2.resize(image2, (image1.shape[1], image1.shape[0]))# 计算两个图像的差异
diff = cv2.absdiff(image1, image2)# 显示原始图像和差异图像
cv2.imshow('Image 1', image1)
cv2.imshow('Image 2', image2)
cv2.imshow('Difference', diff)# 等待按键事件
cv2.waitKey(0)# 关闭所有窗口
cv2.destroyAllWindows()

直观地看到两个图像之间的差异。在实际应用中,cv2.absdiff 常用于运动检测、背景减除等场景,通过计算当前帧与背景帧的差异来找出运动的物体。

http://www.xdnf.cn/news/563.html

相关文章:

  • 大数据开发知识1:数据仓库
  • KWDB MCP Server:解锁 LLM 与数据库的无缝协作
  • python之计算平面曲线离散点的曲率
  • Vector的学习
  • 第五章 SQLite数据库:5、SQLite 进阶用法:ALTER 命令、TRUNCATE 操作、视图创建、事务控制和子查询的操作
  • 一文总结通信电路中LC谐振回路中各公式以及对深入解读品质因数Q
  • Retinex系列图像/视频增强算法介绍
  • 损失函数总结
  • OpenLayers:视图变换的方法
  • 【AI论文】ColorBench:视觉语言模型能否看到并理解多彩的世界?一个全面的色彩感知、推理和鲁棒性基准测试
  • 各种诈骗、骚扰电话
  • linux网络管理
  • 【单倍型理解及计算系列之二】单倍型基本概念以及其与遗传定位中Bin的定义区别
  • SOA 核心三要素:服务、构件与对象的深度解析
  • Linux 系统盘制作 | 引导加载器(GRUB 为例)| mount
  • 【刷题Day20】TCP和UDP(浅)
  • 一些C语言常用函数(后续会继续更新)
  • 【GCC】gcc编译学习
  • 指令与权限
  • RK | rk3568开发与学习
  • PrintWriter 类详解
  • liunx日志问题
  • CUDA Tools 常用命令总结与记录 (需要细化)
  • 路由引入、路由过滤及路由策略
  • C++ 用哈希表封装unordered_set/unordered_map
  • Linux进程概念
  • Day95 | 灵神 | 二叉树 二叉树的垂序遍历
  • U-Boot(Universal Bootloader)简介
  • 不带无线网卡的Linux开发板上网方法
  • 英文论文写作:常用AI工具与【新秀笔目鱼】