python图像处理实战 豆瓣,基于python的数字图像处理
还记得你小学时候学的数字加减法吗?现在,你可以对图像做同样的事情!输入图像可以进行算术运算,例如加法、减法和位运算(与、或、非、异或)。这些操作有助于提高输入照片的质量。本文将详细讲解这些操作,有需要的可以参考。
00-1010算术运算简介:图像加法算术运算:图像减法位运算
目录
还记得你小学时候学的数字加减法吗?现在,你可以对图像做同样的事情!
输入图像可以进行算术运算,例如加法、减法和位运算(与、或、非、异或)。这些操作有助于提高输入照片的质量。
在本文中,您将学习使用OpenCV Python包对图像执行算术和位运算的步骤。我们开始吧!
对图像进行算术运算是什么意思?
所以,假设我们想合并两张独立照片中的两个像素。怎么才能把它们结合起来呢?
让我们想象以下场景。第一个像素的颜色强度是(200,0,0),而第二个像素的颜色强度是(100,0,0)。如果我们只是把这些值相加,我们得到(300,0,0)。在处理RGB图像时,这是完全可能的。
那么,我们如何用Python解决这个问题呢?
该解决方案附带了一个OpenCV库,它实现了cv2.add()和cv2.subtract()函数。
要执行这些操作,您必须在系统上安装OpenCV Python库。
介绍
使用cv2.add()函数,我们可以添加两幅图像。2.cv2.add()将两幅图像中的图片像素相加。这样做时要记住的一点是,两幅图像应该具有相同的深度和类型,或者第二幅图像可以只是一个标量值。
这个函数的语法是:cv2.add(img1,img2)
对于这个博客,我们将考虑以下两个图像添加到一起。
在做算术之前,你必须知道如何读取和显示加载的图像。
现在,按照下面的代码片段阅读,添加两个图像,最后显示添加的图像。
导入cv2
img 1=cv2 . im read( image1 _ add . jpg ,1)
#或者
# img 1=cv2 . im read( c : \ \ Users \ \ Admin \ \ Downloads \ \ image1 _ add . jpg ,1)
cv2.imshow(Image 1 ,img1)
cv2.waitKey(0)
cv2.destroyAllWindows()
img 2=cv2 . im read( image2 _ add . jpg ,1)
#或者
# img 2=cv2 . im read( c : \ \ Users \ \ Admin \ \ Downloads \ \ image2 _ add . jpg ,1)
cv2.imshow(图像2 ,img2)
cv2.waitKey(0)
cv2.destroyAllWindows()
#添加图像
added_img=cv2.add(img1,img2)
cv2.imshow(添加的图像,added_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
从上述代码片段添加的图像如下:
这只是一个简单的加法。我们可以使用另一个名为cv2.addWeighted的函数来混合图像。这类似于图像相加,但是图像被赋予不同的权重以产生混合或透明的错觉。
这个函数的语法是:cv2.addweighted (img1,wt1,img2,wt2,gamma值)
根据下面的代码片段对两幅图像执行加权加法。
导入cv2
img 1=cv2 . im read( image1 _ add . jpg ,1)
#或者
# img 1=cv2 . im read( c : \ \ Users \ \ Admin \ \ Downloads \ \ image1 _ add . jpg ,1)
cv2.imshow(Image 1 ,img1)
cv2.waitKey(0)
cv2.destroyAllWindows()
img2=cv2.imre
ad(image2_add.jpg, 1)
#or
#img2 = cv2.imread(C:\\Users\\Admin\\Downloads\\image2_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()
加权加法的输出如下:
在这里,拍摄了两张图像将它们混合在一起。第一张图片的权重为 0.6,第二张图片的权重为 0.4。你可以根据需要更改图像的权重!
算术运算:图像减法
就像两个图像相加一样,你可以减去两个图像。这可以使用 cv2.subtract() 函数来完成。请注意,要减去的图像必须具有相同的大小和深度。
这个函数的语法是:cv2.subtract(src1, src2)
下面的代码片段显示了如何减去两个图像。已经减去了之前使用的图像(我们在加法中使用的图像)。
import cv2img1 = cv2.imread(image1_add.jpg, 1)
#or
#img1 = cv2.imread(C:\\Users\\Admin\\Downloads\\image1_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:\\Users\\Admin\\Downloads\\image2_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()
减去的图像如下:
还尝试减去两个更简单的图像以使其更易于理解。使用的两张图片是:
减去的输出是:
既然我们已经了解了如何对图像执行算术运算,我们将继续对图像进行按位运算。
位运算
当我们只需要提取图像所需的元素时,我们会使用按位运算。
这些按位技术用于各种计算机视觉应用,例如创建图像蒙版、将水印应用于图像以及创建新图像。与 OpenCV 中的其他变形方法相比,这些操作对图像中的单个像素起作用,以产生更准确的结果。
图像上的 And、Or 和 Not 操作
在开始之前,假设你熟悉三个基本的位运算符:AND、OR、NOT。
OpenCV 包括用于执行与、或和非操作的内置函数。它们是按位与、按位或和按位非。考虑下面的两张黑白图像。现在让我们将这三个操作应用于这两个图像,看看会发生什么。
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()
上述代码段的输出将如下所示:
希望你已经学会了如何使用 OpenCV 对图像进行算术和按位运算。
以上就是Python中图像算术运算的示例详解的详细内容,更多关于Python图像算术运算的资料请关注盛行IT软件开发工作室其它相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。