脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|shell|

服务器之家 - 脚本之家 - Python - Python中图像算术运算的示例详解

Python中图像算术运算的示例详解

2022-12-15 11:11woshicver Python

还记得你在小学时学习如何加减数字吗?现在,你也可以对图像做同样的事情!输入图像可以进行算术运算,例如加法、减法和按位运算(AND、OR、NOT、XOR)。这些操作可以帮助提高输入照片的质量。本文将详解一下这些运算,需要

介绍

还记得你在小学时学习如何加减数字吗?现在,你也可以对图像做同样的事情!

输入图像可以进行算术运算,例如加法、减法和按位运算(AND、OR、NOT、XOR)。这些操作可以帮助提高输入照片的质量。

在本文中,你将了解使用 OpenCV Python 包对图像执行算术和按位运算的步骤。让我们开始吧!

对图像进行算术运算是什么意思?

因此,假设我们希望合并两张单独的照片中的两个像素。我们怎样才能将它们合并?

让我们想象以下场景。第一个像素的颜色强度为 (200, 0, 0),而第二个像素的颜色强度为 (100, 0, 0)。如果我们只是将这些值相加,我们得到 (300, 0, 0)。这在处理 RGB 图像时是完全可能的。

那么,我们如何在 Python 中解决这个问题呢?

该解决方案附带实现了 cv2.add() 和 cv2.subtract() 函数的 OpenCV 库。

要执行这些操作,你必须在系统上安装 OpenCV Python 库。

算术运算:图像相加

使用 cv2.add() 函数,我们可以添加两个图像。cv2.add() 将两个图像中的图片像素相加。执行此操作时要记住的一件事是,两个图像应该具有相同的深度和类型,或者第二个图像可以只是一个标量值。

这个函数的语法是:cv2.add(img1, img2)

对于这个博客,我们将考虑以下两张图片来将两张图片相加。

Python中图像算术运算的示例详解

Python中图像算术运算的示例详解

在进行算术运算之前,你必须知道如何读取和显示加载的图像。

现在,按照下面的代码片段阅读,执行两个图像的添加,最后显示添加的图像。

import cv2
 
img1 = cv2.imread("image1_add.jpg", 1)
#or
#img1 = cv2.imread("C:UsersAdminDownloadsimage1_add.jpg", 1)
 
cv2.imshow("Image 1", img1)
cv2.waitKey(0)
cv2.destroyAllWindows()
 
img2 = cv2.imread("image2_add.jpg", 1)
#or
#img2 = cv2.imread("C:UsersAdminDownloadsimage2_add.jpg", 1)
 
cv2.imshow("Image 2", img2)
cv2.waitKey(0)
cv2.destroyAllWindows()
 
# Add the images
added_img = cv2.add(img1, img2)
 
cv2.imshow("Added Image", added_img)
cv2.waitKey(0)
cv2.destroyAllWindows()

从上面的代码片段中添加的图像如下:

Python中图像算术运算的示例详解

这只是简单的添加。我们可以使用另一个名为 cv2.addWeighted 的函数来混合图像。这类似于图像添加,但图像被赋予不同的权重以产生混合或透明的错觉。

这个函数的语法是:cv2.addWeighted(img1, wt1, img2, wt2, gammaValue)

按照下面的代码片段对两个图像执行加权加法。

import cv2
 
img1 = cv2.imread("image1_add.jpg", 1)
#or
#img1 = cv2.imread("C:UsersAdminDownloadsimage1_add.jpg", 1)
 
cv2.imshow("Image 1", img1)
cv2.waitKey(0)
cv2.destroyAllWindows()
 
img2 = cv2.imread("image2_add.jpg", 1)
#or
#img2 = cv2.imread("C:UsersAdminDownloadsimage2_add.jpg", 1)
 
cv2.imshow("Image 2", img2)
cv2.waitKey(0)
cv2.destroyAllWindows()
 
 
#Addition - weighted addition
added_wt_img = cv2.addWeighted(img1, 0.6, img2, 0.4, 0)
 
cv2.imshow("Added Weight Image", added_wt_img)
cv2.waitKey(0)
cv2.destroyAllWindows()

加权加法的输出如下:

Python中图像算术运算的示例详解

在这里,拍摄了两张图像将它们混合在一起。第一张图片的权重为 0.6,第二张图片的权重为 0.4。你可以根据需要更改图像的权重!

算术运算:图像减法

就像两个图像相加一样,你可以减去两个图像。这可以使用 cv2.subtract() 函数来完成。请注意,要减去的图像必须具有相同的大小和深度。

这个函数的语法是:cv2.subtract(src1, src2)

下面的代码片段显示了如何减去两个图像。已经减去了之前使用的图像(我们在加法中使用的图像)。

import cv2
 
img1 = cv2.imread("image1_add.jpg", 1)
#or
#img1 = cv2.imread("C:UsersAdminDownloadsimage1_add.jpg", 1)
 
cv2.imshow("Image 1", img1)
cv2.waitKey(0)
cv2.destroyAllWindows()
 
img2 = cv2.imread("image2_add.jpg", 1)
#or
#img2 = cv2.imread("C:UsersAdminDownloadsimage2_add.jpg", 1)
 
cv2.imshow("Image 2", img2)
cv2.waitKey(0)
cv2.destroyAllWindows()
 
sub_img = cv2.subtract(img1, img2)
 
cv2.imshow("Subtracted Image", sub_img)
cv2.waitKey(0)
cv2.destroyAllWindows()

减去的图像如下:

Python中图像算术运算的示例详解

还尝试减去两个更简单的图像以使其更易于理解。使用的两张图片是:

Python中图像算术运算的示例详解

Python中图像算术运算的示例详解

减去的输出是:

Python中图像算术运算的示例详解

既然我们已经了解了如何对图像执行算术运算,我们将继续对图像进行按位运算。

位运算

当我们只需要提取图像所需的元素时,我们会使用按位运算。

这些按位技术用于各种计算机视觉应用,例如创建图像蒙版、将水印应用于图像以及创建新图像。与 OpenCV 中的其他变形方法相比,这些操作对图像中的单个像素起作用,以产生更准确的结果。

图像上的 And、Or 和 Not 操作

在开始之前,假设你熟悉三个基本的位运算符:AND、OR、NOT。

OpenCV 包括用于执行与、或和非操作的内置函数。它们是按位与、按位或和按位非。考虑下面的两张黑白图像。现在让我们将这三个操作应用于这两个图像,看看会发生什么。

Python中图像算术运算的示例详解

Python中图像算术运算的示例详解

import cv2
 
#read the images
img1 = cv2.imread("bitwise_image_1.jpg")
img2 = cv2.imread("bitwise_image_2.jpg")
 
bitwise_AND = cv2.bitwise_and(img1, img2)
bitwise_OR = cv2.bitwise_or(img1, img2)
bitwise_NOT = cv2.bitwise_not(img1)
 
cv2.imshow("img1", img1)
cv2.waitKey(0)
cv2.destroyAllWindows()
 
cv2.imshow("img2", img2)
cv2.waitKey(0)
cv2.destroyAllWindows()
 
cv2.imshow("AND", bitwise_AND)
cv2.waitKey(0)
cv2.destroyAllWindows()
 
cv2.imshow("OR", bitwise_OR)
cv2.waitKey(0)
cv2.destroyAllWindows()
 
cv2.imshow("NOT", bitwise_NOT)
cv2.waitKey(0)
cv2.destroyAllWindows()

上述代码段的输出将如下所示:

Python中图像算术运算的示例详解

Python中图像算术运算的示例详解

Python中图像算术运算的示例详解

Python中图像算术运算的示例详解

Python中图像算术运算的示例详解

希望你已经学会了如何使用 OpenCV 对图像进行算术和按位运算。

以上就是Python中图像算术运算的示例详解的详细内容,更多关于Python图像算术运算的资料请关注服务器之家其它相关文章!

原文地址:https://blog.csdn.net/woshicver/article/details/124564633

延伸 · 阅读

精彩推荐
  • Python关于Django外键赋值问题详解

    关于Django外键赋值问题详解

    这段时间用django 做程序用到了一对多的关系的操作,下面分享一些心得体会,这篇文章主要给大家介绍了关于Django外键赋值问题的相关资料,需要的朋友可...

    Youmai4702020-12-01
  • PythonOpenCV实现人脸识别

    OpenCV实现人脸识别

    本文主要介绍了python使用opencv实现人脸识别的相关资料。具有很好的参考价值。下面跟着小编一起来看下吧...

    ht-beyond7582020-09-28
  • Pythontensorflow学习笔记之mnist的卷积神经网络实例

    tensorflow学习笔记之mnist的卷积神经网络实例

    这篇文章主要为大家详细介绍了tensorflow学习笔记之mnist的卷积神经网络实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    denny4027362021-01-31
  • Pythondjango创建css文件夹的具体方法

    django创建css文件夹的具体方法

    在本文里小编给大家总结的是关于django创建css文件夹的具体方法,对此有需要的朋友们参考下吧。...

    silencement3052020-07-31
  • PythonPython-Wechaty: 面向IM软件的聊天机器人框架

    Python-Wechaty: 面向IM软件的聊天机器人框架

    python-wechaty项目源于wechaty,甚至说很大程度上代码是直接从其翻译过来的,然后加上一些python的特性,让其更加pythonic。作为一个IM的入口工具,未来我们也...

    今日头条7672020-12-14
  • Pythonpython使用xlsxwriter实现有向无环图到Excel的转换

    python使用xlsxwriter实现有向无环图到Excel的转换

    这篇文章主要为大家详细介绍了python使用xlsxwriter实现有向无环图到Excel的转换,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    Lockeyi11982021-04-28
  • PythonPython语法学习之正则表达式的使用详解

    Python语法学习之正则表达式的使用详解

    要想成功的进行字符串的匹配需要使用到正则表达式模块,正则表达式匹配规则以及需要被匹配的字符串。本文详细为大家介绍了如何利用正则表达式实现...

    渴望力量的哈士奇10062022-11-30
  • Pythonpython爬虫之爬取笔趣阁小说

    python爬虫之爬取笔趣阁小说

    这篇文章主要介绍了python爬虫之爬取笔趣阁小说,文中有非常详细的代码示例,对正在学习python爬虫的小伙伴们有很好地帮助,需要的朋友可以参考下...

    退休的龙叔9502021-10-16