OpenCV学习第四课——图像的加法、类型转换、缩放、翻转、融合
1、图像的加法
import numpy as np import cv2 a = cv2.imread("E:\\image\\lena256.bmp") b = a add1 = a + b # 直接使用加法 会出现像素大于255 add2 = cv2.add(a, b) # add()方法 会将像素控制在最大值255的范围内 cv2.imshow("original", a) cv2.imshow("add1", add1) cv2.imshow("add2", add2) cv2.waitKey() cv2.destroyAllWindows()
2、图像的类型转换
# coding=utf-8 import cv2 """ 图像类型转换,比如彩色图像转换为灰度图像 BGR图像转换为RGB 灰度图像转换为BGR 等等 """ # 彩色转换为灰度 # def zh_ch(string): # return string.encode("gbk").decode(errors="ignore") # # # a = cv2.imread("E:\\image\\lenacolor.png") # b = cv2.cvtColor(a, cv2.COLOR_BGR2GRAY) # COLOR_BGR2GRAY 将彩色转换为灰度 # # cv2.imshow(zh_ch('彩色图像'), a) # cv2.imshow(zh_ch('转换后的图像'), b) # cv2.waitKey() # cv2.destroyAllWindows() # BGR图像转换为RGB # a = cv2.imread("E:\\image\\lenacolor.png") # b = cv2.cvtColor(a, cv2.COLOR_BGR2RGB) # COLOR_BGR2RGB 将BGR转换为RGB # # cv2.imshow("BGR", a) # cv2.imshow('RGB', b) # cv2.waitKey() # cv2.destroyAllWindows() # GRAY(灰度图像)转换为BGR a = cv2.imread("E:\\image\\lena256.bmp",cv2.IMREAD_UNCHANGED) # 灰度图像 的时候要加上cv2.IMREAD_UNCHANGED b = cv2.cvtColor(a, cv2.COLOR_GRAY2BGR) # 灰度转换为BGR cv2.imshow("GRAY", a) cv2.imshow('BGR', b) cv2.waitKey() cv2.destroyAllWindows()
3、图像的缩放
""" 语法格式 dst = cv2.resize(src,dsize,fx,fy) src:处理什么图片就写什么 dsize:缩放大小 fx,fy:缩放大小 b = cv2.resize(a,(122,122)) b=cv.resize(a,None,fx=0.5,fy=0.7) dsize fx,fy 设置一个即可 """ import cv2 a = cv2.imread("E:\\image\\lenacolor.png") # b=cv2.resize(a,(200,100)) # cv2.imshow("original",a) # cv2.imshow("resize",b) # cv2.waitKey() # cv2.destroyAllwindows() """ 一般情况下用这种方法,按比例缩放 """ rows,cols,chn=a.shape # 获得行列通道 print(rows,cols) b=cv2.resize(a,(round(cols*0.5),round(rows*1.2))) # 缩放 先写列 在写行 cv2.imshow("original",a) cv2.imshow("resize",b) cv2.waitKey() cv2.destroyAllWindows()
4、图像翻转
""" 语法:dst=cv2.flip(src,flipCode) flipCode=0 以X轴为对称轴上下翻转 flipCode>0 以Y轴为对称轴左右翻转 flipCode<0 以x,y轴为对称轴上下左右翻转 范例:dst = cv2.flip(src,1) """ import cv2 a=cv2.imread("E:\\image\\lenacolor.png") b=cv2.flip(a,0) c=cv2.flip(a,1) d=cv2.flip(a,-1) cv2.imshow("original",a) cv2.imshow("=0",b) cv2.imshow(">0",c) cv2.imshow("<0",d) cv2.waitKey() cv2.destroyAllWindows()
5、图像融合
# 图像融合 可以使两个模糊的图像生成一个清晰的图像 import cv2 a = cv2.imread("E:\\image\\lena.bmp") b = cv2.imread("E:\\image\\add\\boat.bmp") # dst=addWeighted(src1, alpha, src2, beta, gamma) # dst=src1*alpha + src2*beta + gamma gamma为亮度调节值,不可省略。 result=cv2.addWeighted(a,0.5,b,0.5,0) cv2.imshow("boat",b) cv2.imshow("lena",a) cv2.imshow("result",result) cv2.waitKey() cv2.destroyAllWindows()