目录
一、图像加法
图像的大小及数值类型必须一致
1、numpy的图像加法
若某个像素相加之和大于255,则相加后的值除以 255取余
2、opencv的图像加法
若某个像素相加之和大于255,则取 255
# encoding: utf-8
import cv2
import matplotlib.pyplot as plt
import math
import copy
import numpy as np
# 每行三个图像,输入一个图像列表
def show_img(img):
plt.figure()
plt.imshow(img)
plt.show()
path = r"E:\PythonProjects\python_study\opencv\lena.jpg"
img1 = cv2.imread(path)
gray = cv2.cvtColor(img1,cv2.COLOR_RGB2GRAY)
print("=============CV2图像加法==============")
add_cv1 = cv2.add(img1,img2)
show_img(add_cv1)
二、图像融合
addWeighted()函数是将两张相同大小,相同类型的图片融合的函数。他可以实现图片的特效。
dst = cv.addWeighted(src1, alpha, src2, beta,gamma)
-
src1:插入的第一个图片;
-
src2:插入的第二个图片;
-
alpha:double类型,加权系数,是src1图片的融合占比 ;
-
beta:double类型,加权系数,是src2图片的融合占比;
-
gamma:亮度调节值;
该函数的计算公式为:
dst(I)=saturate(src1(I)∗alpha+src2(I)∗beta+gamma)
# encoding: utf-8
import cv2
import matplotlib.pyplot as plt
import math
import copy
import numpy as np
# 每行三个图像,输入一个图像列表
def show_img(img):
plt.figure()
plt.imshow(img)
plt.show()
path1 = r"E:\PythonProjects\python_study\opencv\lena.jpg"
path2 = r"E:\PythonProjects\python_study\opencv\jingwu.jpg"
img1 = cv2.imread(path1)
img2 = cv2.imread(path2)
img2 = cv2.resize(img2,(512,512),interpolation=cv2.INTER_CUBIC)
gray = cv2.cvtColor(img1,cv2.COLOR_RGB2GRAY)
print("=================================")
print(img1.shape)
print(img2.reshape)
img3 = cv2.addWeighted(img1,0.7,img2,0.2,0)
show_img(img3)
三、图像类型转换
OpenCV转换成PIL.Image格式
image = Image.fromarray(cv2.cvtColor(img,cv2.COLOR_BGR2RGB))
Image转换成OpenCV格式
img = cv2.cvtColor(numpy.asarray(image),cv2.COLOR_RGB2BGR)
# encoding: utf-8
import cv2
import matplotlib.pyplot as plt
import math
import copy
import numpy as np
# 每行三个图像,输入一个图像列表
def show_img(img):
plt.figure()
plt.imshow(img)
plt.show()
path1 = r"E:\PythonProjects\python_study\opencv\lena.jpg"
img1 = cv2.imread(path1)
# bgr 2 gray
gray = cv2.cvtColor(img1,cv2.COLOR_BGR2GRAY)
# bgr 2 rgb
rgb = cv2.cvtColor(img1,cv2.COLOR_BGR2RGB)
# gray 2 bgr
bgr1 = cv2.cvtColor(gray,cv2.COLOR_GRAY2BGR)
print(gray.shape)# (512, 512)
print(bgr1.shape)# (512, 512, 3)