cv::normalize(_src, dst, 0, 255, NORM_MINMAX, CV_8UC1);

问题描述 投票:0回答:3

OpenCV 中的

cv::normalize(_src, dst, 0, 255, NORM_MINMAX, CV_8UC1);
有什么作用?

我浏览了文档,但无法理解

alpha
beta
NORM_MINMAX
CV_8UC1
的实际用途。我知道 alpha 设定下限,beta 设定上限。
CV_8UC1
代表 8 位无符号单通道。但这些论点到底对这幅画做了什么,是我无法理解的。

opencv
3个回答
77
投票

normType
NORM_MINMAX
时,
cv::normalize
_src
归一化,使得
dst
的最小值为
alpha
dst
的最大值为
beta
cv::normalize
仅使用缩放和移位(即添加常数并乘以常数)即可发挥其魔力。

CV_8UC1
表示
dst
有多少个频道。

这里的文档非常清楚:http://docs.opencv.org/modules/core/doc/operations_on_arrays.html#normalize


0
投票

Opencv 中有几种标准化类型。

尝试在Online OpenCV-Flow工具中运行示例,以更好地了解每种类型。


0
投票
import matplotlib.pyplot as plt
import numpy as np
import cv2

# Generate some sample images
image = np.random.randint(0, 256, size=(7, 7), dtype=np.uint8)
print("Original Image:")[enter image description here][1]
print(image)

# Dictionary mapping normalization type constants to their names
norm_type_names = {
    cv2.NORM_MINMAX: "NORM_MINMAX",
    cv2.NORM_L1: "NORM_L1",
    cv2.NORM_L2: "NORM_L2"
}

# Normalize the image using different normalization methods
norm_types = [cv2.NORM_MINMAX, cv2.NORM_L1, cv2.NORM_L2]
norm_images = []

for norm_type in norm_types:
    norm_image = cv2.normalize(image, None, alpha=20, beta=50, norm_type=norm_type)
    print(f'{norm_type_names[norm_type]}')
    print(norm_image)
    norm_images.append(norm_image)
    print()

# Display the images with pixel values using Matplotlib
fig, axes = plt.subplots(1, len(norm_types), figsize=(10, 10))

for i, norm_image in enumerate(norm_images):
    axes[i].imshow(norm_image, cmap='gray')
    axes[i].set_title('{}'.format(norm_type_names[norm_types[i]]))

    axes[i].axis('off')

    # Display pixel values on the normalized images
    for y in range(norm_image.shape[0]):
        for x in range(norm_image.shape[1]):
            axes[i].text(x, y, f'{norm_image[y, x]}', color='red', ha='center', va='center', fontsize=8)

plt.tight_layout()
plt.show()
© www.soinside.com 2019 - 2024. All rights reserved.