opencv图像加法

1 图像处理基础库
opencv-python
numpy
2 图像数字矩阵

  灰度图像的像素数据就是一个矩阵,矩阵的行对应图像的高(单位为像素),矩阵的列对应图像的宽(单位为像素),矩阵的元素对应图像的像素,矩阵元素的值就是像素的灰度值。当一个图被放大到一定倍数,就能看到像素点。

import cv2
import numpy as np

path = r"C:\Users\Administrator\Desktop\\little.png"
img = cv2.imread(path, cv2.IMREAD_UNCHANGED)
h, w, l = img.shape

print(h, w, l) 	#打印高、宽、灰度级
print(img) 		#打印数字矩阵
print(len(img)) #打印图像高
9 8 3
[[[241  92 114]
  [241  92 114]
  [241  92 114]
  [241  92 114]
  [241  92 114]
  [241  92 114]
  [241  92 114]
  [241  92 114]]

 [[241  92 114]
  [241  92 114]
  [241  92 114]
  [241  92 114]
  [241  92 114]
  [241  92 114]
  [241  92 114]
  [241  92 114]]

 [[241  92 114]
  [241  92 114]
  [241  92 114]
  [241  92 114]
  [241  92 114]
  [241  92 114]
  [241  92 114]
  [241  92 114]]

 [[241  92 114]
  [241  92 114]
  [241  92 114]
  [241  92 114]
  [241  92 114]
  [241  92 114]
  [241  92 114]
  [241  92 114]]

 [[241  92 114]
  [241  92 114]
  [241  92 114]
  [241  92 114]
  [241  92 114]
  [241  92 114]
  [241  92 114]
  [241  92 114]]

 [[163 136 114]
  [163 136 114]
  [163 136 114]
  [163 136 114]
  [163 136 114]
  [163 136 114]
  [163 136 114]
  [163 136 114]]

 [[163 136 114]
  [163 136 114]
  [163 136 114]
  [163 136 114]
  [163 136 114]
  [163 136 114]
  [163 136 114]
  [163 136 114]]

 [[163 136 114]
  [163 136 114]
  [163 136 114]
  [163 136 114]
  [163 136 114]
  [163 136 114]
  [163 136 114]
  [163 136 114]]

 [[163 136 114]
  [163 136 114]
  [163 136 114]
  [163 136 114]
  [163 136 114]
  [163 136 114]
  [163 136 114]
  [163 136 114]]]
9

3 图像运算
3.1 加法
numpy的+,当和大于255时,会取模256
cv2的add,当和大于255时,会直接使用255

a + b:250+10 = 260 % 256 = 4
cv.add(a, b):250+10 = 260 => 255

opencv addition is a saturated(饱和的) operation while Numpy addition is a modulo(取模的) operation
即当超出范围时,opencv加法会进行饱和操作,numpy加法会进行取模操作

注:左图为numpy +实现,中图为opencv add实现,右图实现左中两张图的加法

import cv2
import numpy as np

path1 = r"C:\Users\Administrator\Desktop\\1.jpg"

img = cv2.imread(path1, cv2.IMREAD_UNCHANGED)
h, w, l = img.shape

mask = np.ones(img.shape, dtype=np.uint8) * 15 #生成一个和原图同尺寸的单位矩阵,并乘以15

imga = img + mask # numpy加法
imgb = cv2.add(img, mask) #opencv add

fusion = cv2.add(imga, imgb) #图像融合
merge = np.hstack((imga, imgb, fusion))

hm = cv2.resize(merge, dsize = None, fx = 0.5, fy = 0.5)

cv2.imshow('add', hm)
cv2.waitKey(0)
cv2.destroyAllWindows()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值