数字图像处理4:图像的像素级运算

图像处理入门:图像的像素级运算

2018年05月27日 17:14:09 M_Z_G_Y 阅读数:204

点运算:

代数运算:

加法运算:

OpenCV中的加法是一种饱和算法,而python中的numpy是一种模操作。

 
  1. import cv2

  2. import numpy as np

  3.  
  4.  
  5. if __name__=='__main__':

  6. # image = cv2.imread('F:/_photo/1/33.png')

  7. # h,w=image.shape

  8. # resize=cv2.resize(image,(h/2,w/2),interpolation=cv2.INTER_CUBIC)

  9. x=np.uint8([250])

  10. y=np.uint8([10])

  11. print(cv2.add(x,y))

  12. print(x+y)

 

减法运算:

 

乘法/除法运算:

逻辑运算:

 

import cv2 as cv import numpy as np def add_demo(m1,m2): dst = cv.add(m1,m2) cv.imshow("add_demo",dst) #xiangjian def subtract_demo(m1,m2): dst = cv.subtract(m1,m2) cv.imshow("sub_demo",dst) #chu def divide_demo(m1,m2): dst = cv.divide(m1,m2) cv.imshow("divide_demo", dst) #cheng def multiply(m1,m2): dst = cv.multiply(m1,m2) cv.imshow("multiply_demo",dst) def others(m1,m2): #cv.mean():得到一个关于每个通道图像像素值的均值的数组。 M1 = cv.mean(m1) M2 = cv.mean(m2) print(M1) print(M2) src2 = cv.imread("E:/opencv/picture/WindowsLogo.jpg") src1 = cv.imread("E:/opencv/picture/LinuxLogo.jpg") print("src1 =%s ,src2 =%s"%(src1.shape,src2.shape)) add_demo(src1,src2) subtract_demo(src1,src2) divide_demo(src1,src2) multiply(src1,src2) others(src1,src2) cv.imshow("img1",src1) cv.imshow("img2",src2) cv.waitKey(0) cv.destroyAllWindows() 总结: 进行图像运算的前提是两个图片的尺寸和维度是完全一样的。 相关的api指令: 1. 相加 dst = cv.add(m1,m2) 2. 相减 dst = cv.subtract(m1,m2) 3. 相乘 dst = cv.multiply(m1,m2) 4. 相除 dst = cv.divide(m1,m2) 5. 求出图片各个通道像素值的平均值 M1 = cv.mean(m1) print(M1) 6. 求出图片的均值与方差, MM1,dev1 = cv.meanStdDev(m1) MM2,dev2 = cv.meanStdDev(m2) 其中返回值MM1是各个通道像素的均值,dev1是各个通道像素的方差。 注意: 1-4 输出的依旧是图片数组。 5-6 输出的是1行3列1维的数组(分别是各个通道像素值的均值与方差)。 下面再分析逻辑运算与对比度,亮度调整: def logic_demo(m1,m2): dst1 = cv.bitwise_and(m1,m2) dst2 = cv.bitwise_or(m1,m2) dst3 = cv.bitwise_not(m1)#这个一般只针对一个对象 cv.imshow("logic_win1",dst1) cv.imshow("logic_win2", dst2) cv.imshow("logic_win3", dst3) 相关api指令: 1. cv.bitwise_and(src1,src2) 将src1,src2两图像作“逻辑并”运算 2. cv.bitwise_or(src1,src2) 将src1,src2两图像作“逻辑或”运算 3. cv.bitwise_not(src) 将src图像作非运算 亮度,对比度调节: def contrast_brightness_demo(image,c,b): h,w,ch = image.shape blank = np.zeros([h,w,ch],image.dtype) dst = cv.addWeighted(image,c,blank,1-c,b) cv.imshow("dst_contrast_win",dst) 其中api指令:addWeighted(InputArray src1, double alpha, InputArray src2, double beta, double gamma, OutputArray dst, int dtype=-1); 一共有七个参数:前4个是两张要合成的图片及它们所占比例,第5个double gamma起微调作用,后面两个不管。 由公式得出两个图片加成输出的图片为:dst=src1*alpha+src2*beta+gamma 在程序段中: dst = image*c +0*(1-c)+gamma 所以说1-c这项写啥都行,0也就ok了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wangchuang2017

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值