wordpress如何改页面模板,网站建设和seo,wordpress 并发,网站如何做路由器本文来源公众号“小白学视觉”#xff0c;仅用于学术分享#xff0c;侵权删#xff0c;干货满满。
原文链接#xff1a;图像上的 OpenCV 算术运算
1 OpenCV 简介
图像可以进行算术运算#xff0c;例如加法、减法和按位运算#xff08;AND、OR、NOT、XOR#xff09;。…本文来源公众号“小白学视觉”仅用于学术分享侵权删干货满满。
原文链接图像上的 OpenCV 算术运算
1 OpenCV 简介
图像可以进行算术运算例如加法、减法和按位运算AND、OR、NOT、XOR。这些操作可以帮助改善输入图像的属性。
图像算法对于分析输入图像的属性是必要的可以将操作后的图像用作增强的输入图像并且可以对图像应用更多操作以进行阈值化、膨胀等。
图像算术是将一幅或多幅图像应用于标准算术运算或逻辑运算符之一。运算符是逐个像素应用的因此输出图像中像素的值仅由输入图像中相应像素的值决定。
因此图像通常必须具有相同的大小。当向图像添加恒定偏移量时输入图像之一可能是恒定值。 虽然图像算法是图像处理的最基本形式但它有很多应用。算术运算符的一个显着优势是该过程简单明了因此速度很快。
2 添加图像
在其最基本的形式中该运算符将两个相同大小的图像作为输入并输出与前两个相同大小的第三个图像每个像素值是两个输入图像中每个图像中对应像素值的总和. 更高级的版本允许在一次操作中组合多个图像。
运算符的一个常见变体只是允许向每个像素添加一个指定的常数。使用函数 cv2.add()我们可以添加两个图像。这直接将两个图像中的图像像素相加。
Syntax: cv2.add(image1, image2)但是添加像素并不是一个理想的情况。因此我们使用 cv2.addweighted()。请记住两个输入图像的形状和颜色通道必须相同。
Syntax: cv2.add Weighted(image1, weight1, Image2, weight2, gammaValue)参数 image1第一个图像数组输入 weight 1输入图像中第一个用于最终图像的图像元素的权重。 image2第二个图像数组输入 weight 2将第二输入图像元素的权值应用于最终图像的伽马值。 gammaValue光测量。 加法代码
import cv2
import numpy as np
image1 cv2.imread(input1.jpg)
image2 cv2.imread(input2.jpg)
weightedSumadd cv2.addWeighted(image1, 0.6, image2, 0.4, 0)
cv2.imshow(Weighted Image, weightedSumadd)
cv2.waitKey(0)
cv2.destroyAllWindows()输出图像将是 3 图像减法
像素减法算子将两幅图像作为输入并输出第三幅图像其像素值是第一幅图像的像素值减去第二幅图像的相应像素值。
使用单个图像作为输入是常见的从所有像素中减去一个常数值也是常见的。一些版本的运算符将简单地输出像素值之间的绝对差而不是直接的有符号输出。
Syntax: cv2.subtract(image1, image2)参数 图 1第一个图像数组输入单通道、8 位或浮点 图 2第二个图像阵列输入单通道、8 位或浮点
输入图像 代码
import cv2
import numpy as np
image1 cv2.imread(input1.jpg)
image2 cv2.imread(input2.jpg)
sub cv2.subtract(image1, image2)
cv2.imshow(Subtracted Image, sub)
cv2.waitKey(0)输出减去的图像将是 4 位运算
位运算用于图像处理以提取重要部分。本文中使用了以下按位运算 AND OR NOT XR
位运算对于图像遮罩也很有用。这些操作可用于启用图像创建。这些操作可以帮助改善输入图像的属性。
注意按位运算只能在相同尺寸的输入图像上执行。
4.1 图像的 AND 位运算
AND 运算符以及类似方式的 NAND 运算符通常将两个二进制或整数灰度级图像作为输入并生成第三个图像其像素值只是第一个图像的像素值与来自第二个图像的相应像素相乘。
可以修改此运算符以通过获取单个输入图像并将每个像素与预定的常数值进行与运算来产生输出。
Syntax: cv2.bitwise_and(Image1, Image2, destination, mask)参数 Image1第一个输入图像 numpy 数组 Image1第二个输入图像numpy数组 destination输出数组 mask操作掩码图像
代码
import cv2
import numpy as np
img1 cv2.imread(input1.png)
img2 cv2.imread(input2.png)
dest_and cv2.bitwise_and(img2, img1, mask None)
cv2.imshow(Bitwise And, dest_and)
cv2.waitKey(0)4.2 图像的 OR 位运算
OR 运算符通常将两个二进制或灰度图像作为输入并输出第三个图像其像素值是第一个图像的像素值与来自第二个图像的相应像素进行或运算。
该运算符的一个变体采用单个输入图像并将每个像素与一个常数值进行 OR 运算以生成输出。
Syntax: cv2.bitwise_or(source1, source2, destination, mask)参数 source1 第一个输入 numpy 图像数组 source2 第二个输入 numpy 图像数组 目的地输出数组图像 mask 操作掩码输入/输出 8 位单通道掩码。
代码
import cv2
import numpy as np
img1 cv2.imread(input1.png)
img2 cv2.imread(input2.png)
dest_or cv2.bitwise_or(img1, img2, mask None)
cv2.imshow(Bitwise OR, dest_or)
cv2.waitKey(0)4.3 图像的NOT位运算
逻辑非也称为反转是一种将二值或灰度图像作为输入并生成其照相底片的运算符。
Syntax: cv2.bitwise_not(Image1,Destination, mask)参数 Image1输入图像数组 Destination输出数组图像 mask: 操作掩码
代码
import cv2
import numpy as np
img1 cv2.imread(input1.png)
dest_not cv2.bitwise_not(img1, mask None)
cv2.imshow(Bitwise Not, dest_not)
cv2.waitKey(0)4.4 图像的 XR 位运算
至关重要的是正在处理的所有输入像素值都具有相同的位数否则可能会出现意外结果。当输入图像中的像素值不是简单的 1 位数字时XOR 操作通常但不总是对像素值中的每个对应位按位执行。
Syntax: cv2.bitwise_xor(source1, source2, destination, mask)参数 source1 第一个输入图像数组单通道、8 位或浮点 source2 第二个输入图像数组单通道、8 位或浮点 目的地输出图像数组 mask 操作掩码输入/输出8位单通道掩码。
代码
import cv2
import numpy as np
img1 cv2.imread(input1.png)
img2 cv2.imread(input2.png)
dest_or cv2.bitwise_xor(img1, img2, mask None)
cv2.imshow(Bitwise XOR, dest_xor)
cv2.waitKey(0)5 OpenCV的结论
许多应用程序使用从同一场景的不同点获取的经过处理的图像例如通过添加相同场景的连续图像来降低噪声或通过减去两个连续图像来进行运动检测。逻辑运算符经常用于组合两个主要是二进制图像。
在整数图像的情况下逻辑运算符通常按位使用。然后例如我们可以使用二进制掩码来选择图像的特定区域。
关键要点
在本文中我们学习了如何对图像执行各种算术运算OpenCV 方法是如何工作的以及这些图像算术运算在哪里使用。
THE END!
文章结束感谢阅读。您的点赞收藏评论是我继续更新的动力。大家有推荐的公众号可以评论区留言共同学习一起进步。