1、图像加法运算(用numpy)
对像素值取模(大于255的减去255用余值作为像素)
通过将数组的数值类型定义为 dtype= np.uint8,可以保证数组值的范围在[0,255] 之间
import numpy as np
img1 = np.random.randint(0, 256, size=[3, 3], dtype=np.uint8)#选取0,256的随机数,组成3*3的矩阵,指定的数据类型dtype保证数值范围,自动取模
img2 = np.random.randint(0, 256, size=[3, 3], dtype=np.uint8)
print("img1=\n", img1)#打印随机矩阵
print("img2=\n", img2)
print("img1+img2=\n", img1+img2)#两个矩阵相加
2、图像加法运算(用opencv)
与1的区别:使用函数 cv2.add()对像素值a 和像素值b 进行求和运算时,会得到像素值对应图像的饱和值(最大值255)。
import numpy as np
import cv2
img1 = np.random.randint(0, 256, size=[3, 3], dtype=np.uint8)
img2 = np.random.randint(0, 256, size=[3, 3], dtype=np.uint8)
print("img1=\n", img1)
print("img2=\n", img2)
img3=cv2.add(img1, img2)
print("cv2.add(img1,img2)=\n", img3)
3、图像的加法运算——图像实例
用numpy和opencv比较图像的现象
numpy取模,opencv部分像素值达到饱和变亮
import cv2
a = cv2.imread("lena.bmp", 0)
b = a
result1 = a+b
result2 = cv2.add(a, b)
cv2.imshow("original", a)#最原始的图像
cv2.imshow("result1", result1)#两个相同图象的像素值相加
cv2.imshow("result2", result2)#add函数求和,得到对应图像的饱和值
cv2.waitKey()
cv2.destroyAllWindows()
4、图像的加权和(融合)
函数 cv2.addWeighted,用来实现图像的加权和(混合、融合)
np.ones()函数返回给定形状和数据类型的新数组,其中元素的值设置为1
import cv2
import numpy as np
img1 = np.ones((3, 4), dtype=np.uint8)*100#生成一个 3×4 大小的、元素数值都是 100 的二维数组,对应一个灰度图像 imgl
img2 = np.ones((3, 4), dtype=np.uint8)*10#生成一个 3×4 大小的、元素数值都是 10 的二维数组,对应一个灰度图像 img2
gamma = 3 #将调节亮度参数 gamma 的值设置为3
img3 = cv2.addWeighted(img1, 0.6, img2, 5, gamma) #计算“img1×0.6+img2×5+3”的混合值
print(img3)
5、两幅图像按权重融合
使用函数cv2.addWeighted() 对两幅图像进行加权混合,观察处理结果
import cv2
a=cv2.imread("boat.bmp")
b=cv2.imread("lena.bmp")
result=cv2.addWeighted(a, 0.6, b, 0.4, 0)
cv2.imshow("boat", a)
cv2.imshow("lena", b)
cv2.imshow("result", result)#图像boat和图像lean加权混合结果图像
cv2.waitKey()
cv2.destroyAllWindows()
3、扣取ROI图像混合在另外一幅图中
使用函数 cv2.addWeighted() 将一幅图像的ROI 混合在另外一幅图像内
import cv2
lena =

最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



