OpenCv中cv2.subtract(image,blurred)与(image-blurred)的区别

目录

  • 一、cv2.subtract()函数
  • 二、cv2.subtract(image,blurred)和(image-blurred)处理效果对比
    • 2.1 代码
    • 2.2 输出结果
  • 三、总结

一、cv2.subtract()函数

cv2.subtract是OpenCV库中的一个函数,用于进行图像减法运算。它可以很方便地进行两个图像之间的减法操作,也可以用来对一个图像进行常量的减法操作。

函数的调用语法如下:

cv2.subtract(src1, src2, dst=None, mask=None, dtype=None)

参数说明:

src1:作为被减数的图像数组或一个标量。

src2:作为减数的图像数组或一个标量。

dst:可选参数,输出结果保存的变量,默认值为None,如果为非None,输出图像保存到dst对应实参中,其大小和通道数与输入图像相同,图像的深度(即图像像素的位数)由dtype参数或输入图像确定。

mask:图像掩膜,可选参数,为8位单通道的灰度图像,用于指定要更改的输出图像数组的元素,即输出图像像素只有mask对应位置元素不为0的部分才输出,否则该位置像素的所有通道分量都设置为0。

dtype:可选参数,输出图像数组的深度,即图像单个像素值的位数(如RGB用三个字节表示,则为24位)。

二、cv2.subtract(image,blurred)和(image-blurred)处理效果对比

2.1 代码

import cv2
image = cv2.imread('Images/Visible_Images/1.jpg')# 使用高斯滤波器进行滤波
blurred = cv2.GaussianBlur(gray, (5,5), 0)# 计算高频残差图像
residual_1 = gray - blurred
residual = cv2.subtract(image, blurred)cv2.imshow("original",original)
cv2.imshow("residual_1",residual_1)
cv2.imshow("residual",residual)cv2.waitKey(0)
cv2.destroyAllWindows()

2.2 输出结果

下面左图为原图,中间图为(image-blurred)方法处理结果,右图为cv2.subtract(image,blurred)处理结果。

在这里插入图片描述

分析:

从上面的输出结果可以看出直接使用(image-blurred),即矩阵减法在出现负数时,由于类型是uint8,负数会变成256加该负数的值,导致差异很大,也就是像素值溢出,高频信息提取较差。使用(image-blurred)这种方法,必须通过if语句对(image-blurred)差值进行限制,如果差值小于0就赋值为0,如果差值大于255赋值为255。

cv2.subtract(image,blurred)处理结果较好的提取出了高频信息,cv2.subtract函数的结果比直接使用矩阵减法更自然和平滑,它能够确保结果始终在有效的图像数据范围内。如果计算的结果小于0或大于最大值(如255对于8位图像),它会将结果裁剪到有效范围。这可以防止数据溢出,并确保结果总是有效的图像数据。

三、总结

通过上面对比分析,建议直接使用cv2.subtract函数提取高频信息,高效省事。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/10268.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

鸿蒙OpenHarmony:【关于deps、external_deps的使用】

关于deps、external_deps的使用 在添加一个模块的时候,需要在BUILD.gn中声明它的依赖,为了便于后续处理部件间依赖关系,我们将依赖分为两种——部件内依赖deps和部件间依赖external_deps。 依赖分类 开发前请熟悉鸿蒙开发指导文档&#xff…

conan2 基础入门(01)-介绍

conan2 基础入门(01)-介绍 文章目录 conan2 基础入门(01)-介绍⭐什么是conan官网Why use Conan? ⭐使用现状版本情况个人知名开源企业 ⭐ConanCenter包中心github ⭐说明文档END ⭐什么是conan 官网 官网:Conan 2.0: C and C Open Source Package Manager 一句话来…

XML文档基本语法

XML文档基本语法包括以下几个知识点&#xff1a; 开始标记&#xff08;Start Tag&#xff09;&#xff1a;开始标记是XML元素的起始符号&#xff0c;由左尖括号&#xff08;<&#xff09;和元素名称组成。例如&#xff0c;是一个开始标记&#xff0c;表示一个名为"book…

java后端解决跨域问题常用配置类

在开发前后端分离项目时从前端调用后台请求常常无法响应&#xff0c;这是因为浏览器存在一个跨域问题&#xff0c;只需要添加一个config配置类。 Configuration public class WebConfig implements WebMvcConfigurer {Overridepublic void addCorsMappings(CorsRegistry regis…

Array.map解析

map方法会创建一个新数组。该方法会循环数组中的每个值&#xff0c;如果仅仅是想循环数组不需要返回值使用数组的forEach方法就可以。原数组中的每个元素都调用一次提供的函数后的返回值组成。Array.map 它接收一个函数 这个函数可以接收三个参数 数组的每个值item 这个值的索引…

SC-Lego-LOAM建图与ndt_localization的实车实现

参考&#xff1a;https://blog.csdn.net/weixin_44303829/article/details/121524380 https://github.com/AbangLZU/SC-LeGO-LOAM.git https://github.com/AbangLZU/ndt_localizer.git 将建图和定位分别使用lego-loam和ndt来进行&#xff0c;实车上的效果非常不错&#xff0c;…

STM32F103学习笔记 | 7.使用寄存器点亮LED灯

int main(void) { // 分析指南者硬件原理图得知要实现点亮灯泡需要将PB0设置为低电位&#xff0c; // 查阅STM32F10x中文手册的端口配置低寄存器&#xff0c;得知一个PB有8个配置位&#xff0c;查阅手册找到了PB0的位置是3:2位置&#xff0c; // 插入未知知识&#xff1a;将端…

EMAIL-PHP功能齐全的发送邮件类可以发送HTML和附件

EMAIL-PHP功能齐全的发送邮件类可以发送HTML和附件 <?php class Email { //---设置全局变量 var $mailTo ""; // 收件人 var $mailCC ""; // 抄送 var $mailBCC ""; // 秘密抄送 var $mailFrom ""; // 发件人 var $mailSubje…

获取Android开发板已连接WiFi密码

硬件/软件环境&#xff1a; 1&#xff09;全志芯片开发板A40i 2&#xff09;Android Studio Giraffe | 2022.3.1 Patch 3 连接条件&#xff1a; 1)两端都是USB-A接口线&#xff0c;一端插入电脑端USB接口&#xff0c;另一端插入开发板USB接口&#xff1b; 2&#xff09;Andr…

基于 LlaMA 3 + LangGraph 在windows本地部署大模型 (二)

基于 LlaMA 3 LangGraph 在windows本地部署大模型 &#xff08;二&#xff09; #Options local_llm llama3 llm ChatOllama(modellocal_llm, format"json", temperature0) #embeddings #embeddings OllamaEmbeddings(model"nomic-embed-text") embed…

作为网络安全工程师需要掌握的安全小知识!

网络安全风险无处不在&#xff0c;今天为大家梳理了一些网络安全相关的小知识&#xff0c;希望能进一步提升大家的安全意识&#xff0c;帮助大家建立更加安全的网络环境。 一、主机电脑安全 1、操作系统安全&#xff1a;安装操作系统时需要选择合适的版本&#xff0c;及时打补…

(Java)心得:LeetCode——10.正则表达式匹配

一、原题 给你一个字符串 s 和一个字符规律 p&#xff0c;请你来实现一个支持 . 和 * 的正则表达式匹配。 . 匹配任意单个字符* 匹配零个或多个前面的那一个元素 所谓匹配&#xff0c;是要涵盖 整个 字符串 s的&#xff0c;而不是部分字符串。 示例 1&#xff1a; 输入&am…

制造业如何选择合适的项目管理软件?(内含软件推荐)

近期&#xff0c;收到很多小伙伴的提问&#xff1a;“想了解制造行业如何选择到合适的项目管理软件&#xff1f;”在竞争激烈的市场环境中&#xff0c;有效的项目管理对于制造业的发展至关重要&#xff0c;而项目管理软件则是重要支撑&#xff0c;能帮助企业更好地规划和跟踪项…

ok_Keil实用小技巧 | Keil定制Hex文件名实现的方法

Keil实用小技巧 | Keil定制Hex文件名实现的方法 echo off REM 可执行文件&#xff08;Hex&#xff09;文件名 set HEX_NAMEDemo REM 可执行文件&#xff08;Hex&#xff09;文件路径 set HEX_PATH.\Objects REM 定制Hex输出路径 set OUTPUT_PATH.\Output REM 软件版本文件…

大模型微调之 在亚马逊AWS上实战LlaMA案例(八)

大模型微调之 在亚马逊AWS上实战LlaMA案例&#xff08;八&#xff09; 微调技术 Llama 等语言模型的大小超过 10 GB 甚至 100 GB。微调如此大的模型需要具有非常高的 CUDA 内存的实例。此外&#xff0c;由于模型的大小&#xff0c;训练这些模型可能会非常慢。因此&#xff0c…

element 输入框禁止输入空格以及复制的值进去删除空格(vue自定义指令)开箱即用

实例图&#xff1a; 代码&#xff1a; //输入框禁止输入空格 Vue.directive(noSpace, {bind(el) {//禁止输入空格el.addEventListener("keydown", function (event) {if (event.keyCode 32) {event.preventDefault();}});//复制值时去掉空格el.addEventListener(&q…

[ deepSpeed ] 单机单卡本地运行 Docker运行

本文笔者基于官方示例DeepSpeedExamples/training/cifar/cifar10_deepspeed.py进行本地构建和Docker构建运行示例&#xff08;下列代码中均是踩坑后可执行的代码&#xff0c;尤其是Docker部分&#xff09;, 全部code可以看笔者的github: cifiar10_ds_train.py 1 环境配置 1.1…

node——使用localtunnel做内网穿透

前言 内网穿透是一种允许外网用户访问内网主机的技术。 将您的本地主机公开到世界各地&#xff0c;使之能访问&#xff0c;无需混淆DNS或部署。 内网穿透技术通常涉及以下几个关键步骤&#xff1a; 使用公网服务器或NAT&#xff08;网络地址转换&#xff09;设备&#xff1a;这…

「51媒体」邀请媒体参会报道和媒体发稿有啥不同

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 媒体参会报道和媒体发稿是新闻报道的两种不同形式&#xff0c;它们的主要区别在于内容来源、报道方式和目的。 内容来源&#xff1a; 媒体参会报道&#xff1a;通常指的是记者或媒体代…

火绒安全原理、用法、案例和注意事项

火绒安全是一款功能强大的安全软件&#xff0c;它采用了先进的安全技术和算法&#xff0c;通过实时监测、恶意代码识别、防火墙功能、沙箱技术和网络保护等多种手段&#xff0c;为用户提供全面的计算机安全防护。 1.为什么选用火绒安全&#xff1f; 火绒安全是一款优秀的安全软…