OpenCV は画像の追加とエラー報告を実装しています: E:\All_in\opencv\7, image add.py:40: UserWarning: Glyph 30456 (\N{CJK UNIFIED IDEOGRAP)

算数操作

学習目標

画像の追加について学ぶ

画像の追加

OpenCV の cv.add() 関数を使用して 2 つの画像を追加できます。

または、単純に numpy 操作で 2 つの画像を追加することもできます。

res= img1 + img2 など。
両方のイメージは同じサイズとタイプでなければなりません。そうでない場合は、2 番目のイメージをスカラー値にすることができます。

注: OpenCV の追加と Numpy の追加には違いがあります。OpenCV の加算は飽和演算ですが、Numpy の加算はモジュラー演算です。

原理

ここに画像の説明を挿入します

コード

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)

発生したエラー

ここに画像の説明を挿入します

解決

このコードを追加してください

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

走行結果の表示

ここに画像の説明を挿入します

要約する

cv.add() を使用する方が np.add() [直接加算] メソッドよりも優れています

おすすめ

転載: blog.csdn.net/qq_53545309/article/details/132790441