OpenCV-Python图像除法运算cv2.divide函数及图像相除处理-程序员宅基地

技术标签: 老猿Python  python  计算机视觉  编程语言  OpenCV-Python图形图像处理  opencv  图形图像处理  

☞ ░ 前往老猿Python博客░ https://blog.csdn.net/LaoYuanPython

一、引言

在《OpenCV-Python图像乘法运算cv2.multiply函数详解及像素值溢出归一化处理》详细介绍了OpenCV-Python的乘法运算,本文将介绍图像乘法的逆运算图像除法。

对于两个图像矩阵A、B来说:
在这里插入图片描述
OpenCV两个图像矩阵的除法计算方法如下:
在这里插入图片描述

二、图像语法divide语法

调用语法:

divide(src1, src2, dst=None, scale=None, dtype=None)

参数说明:

对比乘法语法,除法语法的参数完全相同,OpenCV手册介绍的除法相关语法内容解读如下:

  1. src1:作为被除数的图像数组
  2. src2:作为乘除数的图像数组,大小和类型与src1相同
  3. dst:可选参数,输出结果保存的变量,默认值为None,如果为非None,输出图像保存到dst对应实参中,其大小和通道数与输入图像相同,图像的深度(即图像像素的位数)由dtype参数或输入图像确定
  4. scale:可选的结果图像缩放因子,即图像计算过程是src1*scale/src2
  5. mask:图像掩膜,可选参数,为8位单通道的灰度图像,用于指定要更改的输出图像数组的元素,即输出图像像素只有mask对应位置元素不为0的部分才输出,否则该位置像素的所有通道分量都设置为0
  6. dtype:可选参数,输出图像数组的深度,即图像单个像素值的位数(如RGB用三个字节表示,则为24位)。
  7. 返回值:相除的结果图像

三、图像除法使用场景

图像除法使用场景中,关于src1和src2两个输入数据与乘法一样,在OpenCV文档中说明是二者必须大小和类型相同,没有说可以其中一个为标量,经老猿实际验证和乘法一样可以使用四元组,其他方面包括scale的使用等都一样,具体可以参考在OpenCV-Python图像乘法运算cv2.multiply函数详解及像素值溢出归一化处理》中的介绍,因此下面介绍只介绍两个真正图像相除的场景。

查阅相关资料介绍,两个图像相除可以用于纠正由于照明或传感器的非均匀性造成的图像灰度阴影,还可用于产生比率图像。关于这两个用途老猿暂时还没有理解,也未查到实例。但老猿做了个测试,两个近似图像相除也可以用于发现二者的差异。下面举例来介绍一下:

案例原图

下面为两张图片shape1.png和shape2.png:
在这里插入图片描述
这两张图片大小完全一致,只是有局部在形状或颜色不同。

使用如下代码进行除法处理:

import numpy as np
import cv2
def main():
    img1 = cv2.imread(r'F:\pic\shape1.png').astype(np.float32)
    img2 = cv2.imread(r'F:\pic\shape2.png').astype(np.float32)
    img1DivImg2 = cv2.divide(img1, img2)
    img2DivImg1 = cv2.divide(img2, img1)

    imgNormalize1 = cv2.normalize(img1DivImg2,None,0,255,cv2.NORM_MINMAX)
    imgNormalize2 = cv2.normalize(img2DivImg1, None, 0, 255, cv2.NORM_MINMAX)  # opencv归一化处理

    cv2.imshow('shape1', img1.astype(np.uint8))
    cv2.imshow('shape2', img2.astype(np.uint8))
    cv2.imshow('img1DivImg2', img1DivImg2.astype(np.uint8))
    cv2.imshow('imgNormalize1', imgNormalize1.astype(np.uint8))
    cv2.imshow('imgNormalize2', imgNormalize2.astype(np.uint8))

    cv2.waitKey(0)


main()

运行结果截图:
在这里插入图片描述
上面图片中下面两张是原图,上面第一张为shape1.png除shape2.png后进行归一化处理的结果,上面第二张为shape2.png除shape1.png后进行归一化处理的结果,上面第三张为shape1.png除shape2.png未进行归一化处理的结果。

关于图像除法的使用上有如下三点需要注意:

  1. 由于两张图像相除后的结果矩阵元素值大部分都很小,因此必须进行归一化才能正常显示;
  2. 图像除法必须基于np.float32进行,否则会导致精度丢失后再进行归一化处理结果矩阵元素会大量出现0;
  3. 由于除数不能为0,因此用作除数的图像如果出现黑色,则会导致矩阵会出现numpy的nan值,出现了nan值后矩阵后续的归一化处理和图像显示都会不正常,因此要选择无黑色内容的图像作为除数

三、小结

本文详细介绍了OpenCV-Python图像除法运算cv2.divide函数的语法,divide函数的语法与乘法的multiply函数基本相同,二者在使用场景上也相同。图像的除法与乘法一样可以调节图像的明亮度,图像间的除法则与减法一样可以发现图像的异同点,只是使用上存在些限制,一般情况下效果也没有减法那么好。

更多OpenCV-Python的介绍请参考专栏《OpenCV-Python图形图像处理 》

博文地址https://blog.csdn.net/laoyuanpython/category_9979286.html

关于老猿的付费专栏

老猿的付费专栏《使用PyQt开发图形界面Python应用 》(https://blog.csdn.net/laoyuanpython/category_9607725.html)专门介绍基于Python的PyQt图形界面开发基础教程,付费专栏《moviepy音视频开发专栏》 (https://blog.csdn.net/laoyuanpython/category_10232926.html)详细介绍moviepy音视频剪辑合成处理的类相关方法及使用相关方法进行相关剪辑合成场景的处理,两个专栏都适合有一定Python基础但无相关知识的小白读者学习。

付费专栏文章目录:《moviepy音视频开发专栏文章目录》(https://blog.csdn.net/LaoYuanPython/article/details/107574583)、《使用PyQt开发图形界面Python应用专栏目录 》(https://blog.csdn.net/LaoYuanPython/article/details/107580932)。

对于缺乏Python基础的同仁,可以通过老猿的免费专栏《专栏:Python基础教程目录》(https://blog.csdn.net/laoyuanpython/category_9831699.html)从零开始学习Python。

如果有兴趣也愿意支持老猿的读者,欢迎购买付费专栏。

跟老猿学Python、学OpenCV!

☞ ░ 前往老猿Python博文目录 https://blog.csdn.net/LaoYuanPython
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/LaoYuanPython/article/details/109139636

智能推荐

分布式光纤传感器的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告_预计2026年中国分布式传感器市场规模有多大-程序员宅基地

文章浏览阅读3.2k次。本文研究全球与中国市场分布式光纤传感器的发展现状及未来发展趋势,分别从生产和消费的角度分析分布式光纤传感器的主要生产地区、主要消费地区以及主要的生产商。重点分析全球与中国市场的主要厂商产品特点、产品规格、不同规格产品的价格、产量、产值及全球和中国市场主要生产商的市场份额。主要生产商包括:FISO TechnologiesBrugg KabelSensor HighwayOmnisensAFL GlobalQinetiQ GroupLockheed MartinOSENSA Innovati_预计2026年中国分布式传感器市场规模有多大

07_08 常用组合逻辑电路结构——为IC设计的延时估计铺垫_基4布斯算法代码-程序员宅基地

文章浏览阅读1.1k次,点赞2次,收藏12次。常用组合逻辑电路结构——为IC设计的延时估计铺垫学习目的:估计模块间的delay,确保写的代码的timing 综合能给到多少HZ,以满足需求!_基4布斯算法代码

OpenAI Manager助手(基于SpringBoot和Vue)_chatgpt网页版-程序员宅基地

文章浏览阅读3.3k次,点赞3次,收藏5次。OpenAI Manager助手(基于SpringBoot和Vue)_chatgpt网页版

关于美国计算机奥赛USACO,你想知道的都在这_usaco可以多次提交吗-程序员宅基地

文章浏览阅读2.2k次。USACO自1992年举办,到目前为止已经举办了27届,目的是为了帮助美国信息学国家队选拔IOI的队员,目前逐渐发展为全球热门的线上赛事,成为美国大学申请条件下,含金量相当高的官方竞赛。USACO的比赛成绩可以助力计算机专业留学,越来越多的学生进入了康奈尔,麻省理工,普林斯顿,哈佛和耶鲁等大学,这些同学的共同点是他们都参加了美国计算机科学竞赛(USACO),并且取得过非常好的成绩。适合参赛人群USACO适合国内在读学生有意向申请美国大学的或者想锻炼自己编程能力的同学,高三学生也可以参加12月的第_usaco可以多次提交吗

MySQL存储过程和自定义函数_mysql自定义函数和存储过程-程序员宅基地

文章浏览阅读394次。1.1 存储程序1.2 创建存储过程1.3 创建自定义函数1.3.1 示例1.4 自定义函数和存储过程的区别1.5 变量的使用1.6 定义条件和处理程序1.6.1 定义条件1.6.1.1 示例1.6.2 定义处理程序1.6.2.1 示例1.7 光标的使用1.7.1 声明光标1.7.2 打开光标1.7.3 使用光标1.7.4 关闭光标1.8 流程控制的使用1.8.1 IF语句1.8.2 CASE语句1.8.3 LOOP语句1.8.4 LEAVE语句1.8.5 ITERATE语句1.8.6 REPEAT语句。_mysql自定义函数和存储过程

半导体基础知识与PN结_本征半导体电流为0-程序员宅基地

文章浏览阅读188次。半导体二极管——集成电路最小组成单元。_本征半导体电流为0

随便推点

【Unity3d Shader】水面和岩浆效果_unity 岩浆shader-程序员宅基地

文章浏览阅读2.8k次,点赞3次,收藏18次。游戏水面特效实现方式太多。咱们这边介绍的是一最简单的UV动画(无顶点位移),整个mesh由4个顶点构成。实现了水面效果(左图),不动代码稍微修改下参数和贴图可以实现岩浆效果(右图)。有要思路是1,uv按时间去做正弦波移动2,在1的基础上加个凹凸图混合uv3,在1、2的基础上加个水流方向4,加上对雾效的支持,如没必要请自行删除雾效代码(把包含fog的几行代码删除)S..._unity 岩浆shader

广义线性模型——Logistic回归模型(1)_广义线性回归模型-程序员宅基地

文章浏览阅读5k次。广义线性模型是线性模型的扩展,它通过连接函数建立响应变量的数学期望值与线性组合的预测变量之间的关系。广义线性模型拟合的形式为:其中g(μY)是条件均值的函数(称为连接函数)。另外,你可放松Y为正态分布的假设,改为Y 服从指数分布族中的一种分布即可。设定好连接函数和概率分布后,便可以通过最大似然估计的多次迭代推导出各参数值。在大部分情况下,线性模型就可以通过一系列连续型或类别型预测变量来预测正态分布的响应变量的工作。但是,有时候我们要进行非正态因变量的分析,例如:(1)类别型.._广义线性回归模型

HTML+CSS大作业 环境网页设计与实现(垃圾分类) web前端开发技术 web课程设计 网页规划与设计_垃圾分类网页设计目标怎么写-程序员宅基地

文章浏览阅读69次。环境保护、 保护地球、 校园环保、垃圾分类、绿色家园、等网站的设计与制作。 总结了一些学生网页制作的经验:一般的网页需要融入以下知识点:div+css布局、浮动、定位、高级css、表格、表单及验证、js轮播图、音频 视频 Flash的应用、ul li、下拉导航栏、鼠标划过效果等知识点,网页的风格主题也很全面:如爱好、风景、校园、美食、动漫、游戏、咖啡、音乐、家乡、电影、名人、商城以及个人主页等主题,学生、新手可参考下方页面的布局和设计和HTML源码(有用点赞△) 一套A+的网_垃圾分类网页设计目标怎么写

C# .Net 发布后,把dll全部放在一个文件夹中,让软件目录更整洁_.net dll 全局目录-程序员宅基地

文章浏览阅读614次,点赞7次,收藏11次。之前找到一个修改 exe 中 DLL地址 的方法, 不太好使,虽然能正确启动, 但无法改变 exe 的工作目录,这就影响了.Net 中很多获取 exe 执行目录来拼接的地址 ( 相对路径 ),比如 wwwroot 和 代码中相对目录还有一些复制到目录的普通文件 等等,它们的地址都会指向原来 exe 的目录, 而不是自定义的 “lib” 目录,根本原因就是没有修改 exe 的工作目录这次来搞一个启动程序,把 .net 的所有东西都放在一个文件夹,在文件夹同级的目录制作一个 exe._.net dll 全局目录

BRIEF特征点描述算法_breif description calculation 特征点-程序员宅基地

文章浏览阅读1.5k次。本文为转载,原博客地址:http://blog.csdn.net/hujingshuang/article/details/46910259简介 BRIEF是2010年的一篇名为《BRIEF:Binary Robust Independent Elementary Features》的文章中提出,BRIEF是对已检测到的特征点进行描述,它是一种二进制编码的描述子,摈弃了利用区域灰度..._breif description calculation 特征点

房屋租赁管理系统的设计和实现,SpringBoot计算机毕业设计论文_基于spring boot的房屋租赁系统论文-程序员宅基地

文章浏览阅读4.1k次,点赞21次,收藏79次。本文是《基于SpringBoot的房屋租赁管理系统》的配套原创说明文档,可以给应届毕业生提供格式撰写参考,也可以给开发类似系统的朋友们提供功能业务设计思路。_基于spring boot的房屋租赁系统论文

推荐文章

热门文章

相关标签