图像算术运算——相加、相减、与、或、异或、非

一、函数简介

1、add—图像矩阵相加

函数原型:cv2.add(src1, src2, dst=None, mask=None, dtype=None)

src1:图像矩阵1

src1:图像矩阵2

dst:默认选项

mask:默认选项

dtype:默认选项

2、subtract—图像矩阵相减

函数原型:cv2.subtract(src1, src2, dst=None, mask=None, dtype=None)

src1:图像矩阵1

src1:图像矩阵2

dst:默认选项

mask:默认选项

dtype:默认选项

3、bitwise_and—图像与运算

函数原型:cv2.bitwise_and(src1, src2, dst=None, mask=None)

src1:图像矩阵1

src1:图像矩阵2

dst:默认选项

mask:默认选项

4、bitwise_or—图像或运算

函数原型:cv2.bitwise_or(src1, src2, dst=None, mask=None)

src1:图像矩阵1

src1:图像矩阵2

dst:默认选项

mask:默认选项

5、bitwise_xor—图像异或运算

函数原型:bitwise_xor(src1, src2, dst=None, mask=None)

src1:图像矩阵1

src1:图像矩阵2

dst:默认选项

mask:默认选项

6、bitwise_not—图像非运算

函数原型:bitwise_not(src1, src2, dst=None, mask=None)

src1:图像矩阵1

src1:图像矩阵2

dst:默认选项

mask:默认选项

二、实例演示

1、原图像每个像素都加100,大于255的按255处理

#原始图像每个像素都加100, 大于255的按255处理
import cv2
import numpy as np

img = cv2.imread("test.png")
cv2.imshow("Original", img)
cv2.waitKey(0)

#图像img各像素加100
M = np.ones(img.shape, dtype=‘uint8‘)*100#与img大小一样的全100矩阵
added = cv2.add(img, M)#将图像image与M相加
cv2.imshow("Added", added)
cv2.waitKey(0)

效果如下图所示:

原图:

2、原图像每个像素都减去50,小于0的按0处理

#原图像每个像素都减去50, 小于0的按0处理
import cv2
import numpy as np

image = cv2.imread(‘test.png‘)
cv2.imshow("Orignal", image)
cv2.waitKey(0)
#图像image各像素减去50
M = np.ones(image.shape, dtype="uint8")*50
subtracted = cv2.subtract(image, M)
cv2.imshow("Subtracted", subtracted)
cv2.waitKey(0)

效果如图所示:

3、矩形与圆形的交运算

#矩形与圆形的交运算
import numpy as np
import cv2

#画矩形
Rectangle = np.zeros((300, 300), dtype="uint8")
cv2.rectangle(Rectangle,(25, 25), (275, 275), 255 ,-1)
cv2.imshow("Rectangle", Rectangle)
cv2.waitKey(0)

#画圆形
Circle = np.zeros((300, 300), dtype=‘uint8‘)
cv2.circle(Circle, (150, 150), 150, 255, -1)
cv2.imshow("Circle", Circle)
cv2.waitKey(0)

#图像的交
bitwiseAnd = cv2.bitwise_and(Rectangle, Circle)
cv2.imshow("AND", bitwiseAnd)
cv2.waitKey(0)

效果如下所示:

4、矩形与圆形的或运算

import numpy as np
import cv2

#画矩形
Rectangle = np.zeros((300, 300), dtype="uint8")
cv2.rectangle(Rectangle,(25, 25), (275, 275), 255 ,-1)
cv2.imshow("Rectangle", Rectangle)
cv2.waitKey(0)

#画圆形
Circle = np.zeros((300, 300), dtype=‘uint8‘)
cv2.circle(Circle, (150, 150), 150, 255, -1)
cv2.imshow("Circle", Circle)
cv2.waitKey(0)

#图形的或
bitwiseor = cv2.bitwise_or(Rectangle, Circle)
cv2.imshow("OR", bitwiseor)
cv2.waitKey(0)

效果如图所示:

5、矩形与圆形的异或运算

import numpy as np
import cv2

#画矩形
Rectangle = np.zeros((300, 300), dtype="uint8")
cv2.rectangle(Rectangle,(25, 25), (275, 275), 255 ,-1)
cv2.imshow("Rectangle", Rectangle)
cv2.waitKey(0)

#画圆形
Circle = np.zeros((300, 300), dtype=‘uint8‘)
cv2.circle(Circle, (150, 150), 150, 255, -1)
cv2.imshow("Circle", Circle)
cv2.waitKey(0)

#图像的异或
bitwisexor = cv2.bitwise_xor(Rectangle, Circle)
cv2.imshow("XOR", bitwisexor)
cv2.waitKey(0)

效果如图所示:

6、圆形的非运算

import numpy as np
import cv2

#画圆形
Circle = np.zeros((300, 300), dtype=‘uint8‘)
cv2.circle(Circle, (150, 150), 150, 255, -1)
cv2.imshow("Circle", Circle)
cv2.waitKey(0)

#圆形的非运算
bitwisenot = cv2.bitwise_not(Circle)
cv2.imshow("NOT", bitwisenot)
cv2.waitKey(0)

效果如图所示:

原文地址:https://www.cnblogs.com/leoych/p/12106145.html

时间: 2024-08-17 15:32:30

图像算术运算——相加、相减、与、或、异或、非的相关文章

js面试题--------JS中数字和字符,布尔类型相加相减问题

JS中数字和字符相加相减问题 <html lang="en"> <head> <meta charset="utf-8" /> <title></title> </head> <body> </body> </html> <script type="text/javascript"> var a = 100; var b = &

C语言:十字链表的相加相减

#include<stdio.h> #include<stdlib.h> #define N 100 typedef struct node { int row, col; int v; struct node *r, *d; }*link; typedef struct crosslist { link rowhead[N], colhead[N]; int rows, cols, nums; }*list; int i, j; list init(list cl); list

JS当前日期相加相减

function DateAddORSub(interval,type,number) { /* * 功能:实现Script的Date加减功能. * 参数:interval,字符串表达式,表示要添加的时间间隔. * 参数:number,数值表达式,表示要添加的时间间隔的个数. * 参数:type,加减类型. * 返回:新的时间对象. * var newDate =DateAddORSub("d","+",5); */ var date = new Date(); s

矩阵运算 相加,相减,乘标量,相乘

练习下矩阵的基本运算:O(∩_∩)O~ using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication4 { class MyMatrix3 { int m11, m12, m13; int m21, m22, m23; int m31, m32, m33; //矩阵相加

JS中小数相加相减时出现很长的小数点的解决方式

1.问题: 平时写的代码中会出现这种情况,parseFloat(11.3-10.1) 运行的结果依然是1.200000000000001 代码示例: var arr = [0.0111,11.002,0.3,1.5,1.61] var total = 0 arr.forEach(item =>{ total += item }) console.log(total) 返回的结果---  14.423100000000002,这种情况就不合常理. 2.解决方案: 这里有一种可行的解决方法,应用到M

python 变量 不断 相加 or 相减的简便写法

相加: 相减: 原文地址:https://www.cnblogs.com/kaibindirver/p/9865397.html

大家来找茬 两幅图像相减 其它好的实现? 美女找茬

http://blog.csdn.net/merlin_q/article/details/7024798 大家来找茬 两幅图像相减 其它好的实现? 标签: imageinclude 2011-11-29 20:29 4701人阅读 评论(2) 收藏 举报  分类: Opencv学习(16)  C++(18)  版权声明:本文为博主原创文章,未经博主允许不得转载. #include <opencv2/core/core.hpp>#include <opencv2/highgui/high

基于Qt的OpenGL可编程管线学习(15)- 颜色加深、颜色减淡、想家相减

1.颜色加深 shader //颜色加深 uniform sampler2D U_MainTexture; uniform sampler2D U_SubTexture; varying vec2 M_coord; void main() {         vec4 blendColor = texture2D(U_SubTexture, M_coord);         vec4 baseColor = texture2D(U_MainTexture, M_coord);         

javascript小数相减会出现一长串的小数位数的原因

javascript小数相减会出现一长串的小数位数的原因 <script> var a='38.8'; var b='6.8'; alert(parseFloat(a)-parseFloat(b)); var a=134.22; var b=6; alert(a*b); </script> 以上代码为什么产生一长串小数位出来,虽然比较精确,可没必要呀. 这个和数据结构有关系,整数型自动转换成正型计算,小数型直接转成double型计算.这是在内存中运算的时候必须这样,你该知道计算机只