OpenCV实现图像的加法 以及报错:E:\All_in\opencv\7,图像的加法.py:40: UserWarning: Glyph 30456 (\N{CJK UNIFIED IDEOGRAP

算数操作

学习目标

了解图像的加法

图像的加法

你可以使用OpenCV的 cv.add() 函数把两幅图像相加,

或者可以简单地通过 numpy 操作添加两个图像,

如 res= img1 + img2。
两个图像应该具有相同的大小和类型,或者第二个图像可以是标量值。

注意:OpenCV加法和Numpy加法之间存在差异。OpenCV的加法是饱和操作,而Numpy添加是模运算。

原理

OpenCV实现图像的加法 以及报错:E:\All_in\opencv\7,图像的加法.py:40: UserWarning: Glyph 30456 (\N{CJK UNIFIED IDEOGRAP_第1张图片

代码实现

import numpy as np
import cv2 as cv
import matplotlib.pyplot as plt

from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['SimHei']


# 读取图像
img1 = cv.imread('lena.png')
img2 = cv.imread('lena_saved.png')

# 加法操作
img3 = cv.add(img1, img2)  # 使用 OpenCV 的加法
img4 = img1 + img2 # 使用 NumPy 的加法(直接相加)

# 图像显示
fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(5, 4), dpi=100)
'''
参数说明:

nrows=1:指定了子图区域的行数为 1,表示在图像区域中只有一行。
ncols=2:指定了子图区域的列数为 2,表示在图像区域中有两列。
figsize=(10, 8):指定图像区域的大小为宽度 10 英寸,高度 8 英寸。这里的单位是英寸。
dpi=100:指定图像区域的分辨率为 100,即每英寸的像素数。
该函数返回两个值:

fig:表示整个图像区域,可以通过这个对象对图像进行整体的设置。
axes:表示一个由实际子图对象组成的 NumPy 数组。可以通过 axes 对象对每个子图进行单独的设置和操作。
这个函数的作用是创建一个包含 1 行、2 列的子图区域,用于显示两个子图。通过 fig 和 axes 可以进一步对整个图像区域和子图进行设置和操作。'''




axes[0].imshow(img3[:, :, ::-1])  # 将 BGR 转换为 RGB 进行显示
axes[0].set_title("cv中的加法")

axes[1].imshow(img4[:, :, ::-1])  # 将 BGR 转换为 RGB 进行显示
axes[1].set_title("直接相加")

plt.show()
cv.imwrite(r'E:\All_in\opencv\img3.png',img3)

遇到的报错

OpenCV实现图像的加法 以及报错:E:\All_in\opencv\7,图像的加法.py:40: UserWarning: Glyph 30456 (\N{CJK UNIFIED IDEOGRAP_第2张图片

解决办法

加入这段代码

from pylab import mpl
mpl.rcParams[‘font.sans-serif’] = [‘SimHei’]

运行结果展示

OpenCV实现图像的加法 以及报错:E:\All_in\opencv\7,图像的加法.py:40: UserWarning: Glyph 30456 (\N{CJK UNIFIED IDEOGRAP_第3张图片

总结

使用cv.add() 要比np.add() 【直接相加】 方法 效果要好

你可能感兴趣的:(OpenCV从入门到精通,opencv,计算机视觉,python)