目录
OpenCV 简介添加图像图像减法位运算图像的 AND 位运算图像的 OR 位运算图像的NOT位运算图像的 XR 位运算OpenCV的结论OpenCV 简介
图像可以进行算术运算,例如加法、减法和按位运算(AND、OR、NOT、XOR)。这些操作可以帮助改善输入图像的属性。
图像算法对于分析输入图像的属性是必要的,可以将操作后的图像用作增强的输入图像,并且可以对图像应用更多操作,以进行阈值化、膨胀等。
(资料图片)
图像算术是将一幅或多幅图像应用于标准算术运算或逻辑运算符之一。运算符是逐个像素应用的,因此输出图像中像素的值仅由输入图像中相应像素的值决定。
因此,图像通常必须具有相同的大小。当向图像添加恒定偏移量时,输入图像之一可能是恒定值。
虽然图像算法是图像处理的最基本形式,但它有很多应用。算术运算符的一个显着优势是该过程简单明了,因此速度很快。
添加图像
在其最基本的形式中,该运算符将两个相同大小的图像作为输入,并输出与前两个相同大小的第三个图像,每个像素值是两个输入图像中每个图像中对应像素值的总和. 更高级的版本允许在一次操作中组合多个图像。
运算符的一个常见变体只是允许向每个像素添加一个指定的常数。使用函数 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()
输出图像将是:
图像减法
像素减法算子将两幅图像作为输入并输出第三幅图像,其像素值是第一幅图像的像素值减去第二幅图像的相应像素值。
使用单个图像作为输入是常见的,从所有像素中减去一个常数值也是常见的。一些版本的运算符将简单地输出像素值之间的绝对差,而不是直接的有符号输出。
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)
输出减去的图像将是
位运算
位运算用于图像处理以提取重要部分。本文中使用了以下按位运算:
ANDORNOTXR位运算对于图像遮罩也很有用。这些操作可用于启用图像创建。这些操作可以帮助改善输入图像的属性。
注意:按位运算只能在相同尺寸的输入图像上执行。
图像的 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)
图像的 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)
图像的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)
图像的 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)
OpenCV的结论
许多应用程序使用从同一场景的不同点获取的经过处理的图像,例如通过添加相同场景的连续图像来降低噪声或通过减去两个连续图像来进行运动检测。逻辑运算符经常用于组合两个(主要是二进制)图像。
在整数图像的情况下,逻辑运算符通常按位使用。然后,例如,我们可以使用二进制掩码来选择图像的特定区域。
关键要点:
在本文中,我们学习了如何对图像执行各种算术运算,OpenCV 方法是如何工作的,以及这些图像算术运算在哪里使用。
以上就是详解图像上的OpenCV算术运算的详细内容,更多关于OpenCV图像算术运算的资料请关注脚本之家其它相关文章!
X 关闭
X 关闭
- 15G资费不大降!三大运营商谁提供的5G网速最快?中国信通院给出答案
- 2联想拯救者Y70发布最新预告:售价2970元起 迄今最便宜的骁龙8+旗舰
- 3亚马逊开始大规模推广掌纹支付技术 顾客可使用“挥手付”结账
- 4现代和起亚上半年出口20万辆新能源汽车同比增长30.6%
- 5如何让居民5分钟使用到各种设施?沙特“线性城市”来了
- 6AMD实现连续8个季度的增长 季度营收首次突破60亿美元利润更是翻倍
- 7转转集团发布2022年二季度手机行情报告:二手市场“飘香”
- 8充电宝100Wh等于多少毫安?铁路旅客禁止、限制携带和托运物品目录
- 9好消息!京东与腾讯续签三年战略合作协议 加强技术创新与供应链服务
- 10名创优品拟通过香港IPO全球发售4100万股 全球发售所得款项有什么用处?