二、图像运算、融合、类型转换

目录

 

一、图像加法

二、图像融合

三、图像类型转换


一、图像加法

图像的大小及数值类型必须一致

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)

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值