济南网站哪家做的好网页设计与制作作业成品
目录
二九、图像累加
将输入图像累加到累加图像中 (accumulate)
将输入图像加权累加到累加图像中 (accumulateWeighted)
将输入图像的平方累加到累加图像中 (accumulateSquare)
将两个输入图像的乘积累加到累加图像中 (accumulateProduct)
解释
三十、随机数与添加噪声
使用 randu 生成均匀分布的随机数并添加噪声
使用 randn 生成正态分布的随机数并添加噪声
解释
实际应用
三一、PCA
计算主成分 (PCACompute)
将数据投影到主成分空间 (project)
将数据从主成分空间反投影回原空间 (backProject)
解释
实际应用
图像压缩示例
http://t.csdnimg.cn/i8pqt —— opencv—常用函数学习_“干货“_总(VIP)
散的正在一部分一部分发,不需要VIP。
资料整理不易,有用话给个赞和收藏吧。
二九、图像累加
在OpenCV中,图像累加是一个重要的操作,通常用于视频处理、背景建模和图像融合等任务。OpenCV提供了多种累加操作的函数,包括accumulate
、accumulateWeighted
、accumulateSquare
和 accumulateProduct
。下面介绍这些函数及其使用示例。
图像累加函数 | |||
accumulate | accumulateWeighted | accumulateSquare | accumulateProduct |
将输入图像累加到累加图像中 | 将输入图像加权累加到累加图像中 | 将输入图像的平方累加到累加图像中 | 将两个输入图像的乘积累加到累加图像中 |
将输入图像累加到累加图像中 (accumulate
)
import cv2
import numpy as np# 读取图像
image1 = cv2.imread('path_to_image1.jpg', cv2.IMREAD_GRAYSCALE)
image2 = cv2.imread('path_to_image2.jpg', cv2.IMREAD_GRAYSCALE)# 初始化累加图像
accum_image = np.zeros_like(image1, dtype=np.float32)# 执行累加操作
cv2.accumulate(image1, accum_image)
cv2.accumulate(image2, accum_image)# 显示累加结果
cv2.imshow('Accumulated Image', cv2.convertScaleAbs(accum_image))
cv2.waitKey(0)
cv2.destroyAllWindows()
将输入图像加权累加到累加图像中 (accumulateWeighted
)
# 初始化累加图像
accum_image_weighted = np.zeros_like(image1, dtype=np.float32)# 加权累加操作
alpha = 0.5
cv2.accumulateWeighted(image1, accum_image_weighted, alpha)
cv2.accumulateWeighted(image2, accum_image_weighted, alpha)# 显示加权累加结果
cv2.imshow('Accumulated Weighted Image', cv2.convertScaleAbs(accum_image_weighted))
cv2.waitKey(0)
cv2.destroyAllWindows()
将输入图像的平方累加到累加图像中 (accumulateSquare
)
# 初始化累加图像
accum_image_square = np.zeros_like(image1, dtype=np.float32)# 累加平方操作
cv2.accumulateSquare(image1, accum_image_square)
cv2.accumulateSquare(image2, accum_image_square)# 显示累加平方结果
cv2.imshow('Accumulated Square Image', cv2.convertScaleAbs(accum_image_square))
cv2.waitKey(0)
cv2.destroyAllWindows()
将两个输入图像的乘积累加到累加图像中 (accumulateProduct
)
# 初始化累加图像
accum_image_product = np.zeros_like(image1, dtype=np.float32)# 累加乘积操作
cv2.accumulateProduct(image1, image2, accum_image_product)# 显示累加乘积结果
cv2.imshow('Accumulated Product Image', cv2.convertScaleAbs(accum_image_product))
cv2.waitKey(0)
cv2.destroyAllWindows()
解释
accumulate
函数:将输入图像累加到累加图像中,适用于累积多帧图像。accumulateWeighted
函数:将输入图像加权累加到累加图像中,可以用于背景建模和图像融合,参数alpha
用于控制权重。accumulateSquare
函数:将输入图像的平方累加到累加图像中,适用于平方累加操作。accumulateProduct
函数:将两个输入图像的乘积累加到累加图像中,适用于乘积累加操作。
这些示例展示了如何使用OpenCV中的各种累加函数来处理图像。根据具体的应用需求,可以灵活运用这些函数来实现复杂的图像处理任务。
三十、随机数与添加噪声
在OpenCV中,randu
和 randn
是两个用于生成随机数的函数,常用于图像处理中的噪声添加等操作。下面介绍这些函数及其使用示例。
随机数生成与添加噪声函数 | |
randu | randn |
生成均匀分布的随机数 | 生成正态(高斯)分布的随机数 |
使用 randu
生成均匀分布的随机数并添加噪声
import cv2
import numpy as np# 读取图像
image = cv2.imread('path_to_image.jpg', cv2.IMREAD_GRAYSCALE)# 生成与图像大小相同的均匀分布噪声
noise = np.zeros_like(image, dtype=np.float32)
cv2.randu(noise, 0, 255)# 将噪声添加到图像中
noisy_image = cv2.add(image.astype(np.float32), noise)# 显示原图像和添加噪声后的图像
cv2.imshow('Original Image', image)
cv2.imshow('Uniform Noise Image', noisy_image.astype(np.uint8))
cv2.waitKey(0)
cv2.destroyAllWindows()
使用 randn
生成正态分布的随机数并添加噪声
# 生成与图像大小相同的正态分布噪声
noise = np.zeros_like(image, dtype=np.float32)
cv2.randn(noise, 0, 25) # 均值为0,标准差为25# 将噪声添加到图像中
noisy_image = cv2.add(image.astype(np.float32), noise)# 显示原图像和添加噪声后的图像
cv2.imshow('Original Image', image)
cv2.imshow('Gaussian Noise Image', noisy_image.astype(np.uint8))
cv2.waitKey(0)
cv2.destroyAllWindows()
解释
randu
函数:生成均匀分布的随机数。可以指定随机数的上下限。例如,在上述代码中,噪声值在0到255之间均匀分布。randn
函数:生成正态(高斯)分布的随机数。可以指定随机数的均值和标准差。例如,在上述代码中,噪声值服从均值为0,标准差为25的正态分布。
实际应用
在图像处理中,添加噪声常用于以下场景:
- 算法测试:在处理算法中测试其抗噪能力。
- 数据增强:在训练机器学习模型时,使用带噪声的数据增强模型的鲁棒性。
- 模拟真实情况:在某些情况下,需要模拟现实中的噪声以测试图像处理算法的性能。
通过这些示例,可以看到如何使用OpenCV中的randu
和randn
函数来生成随机数并将其添加到图像中作为噪声。根据具体的应用需求,可以灵活运用这些函数来实现图像处理任务。
三一、PCA
在OpenCV中,主成分分析(PCA)是一种常用的降维技术,广泛应用于图像处理和机器学习领域。OpenCV提供了几个用于PCA操作的函数:PCACompute
、project
和 backProject
。下面介绍这些函数及其使用示例。
PCA函数 | ||
PCACompute | project | backProject |
计算主成分 | 将数据投影到主成分空间 | 将数据从主成分空间反投影回原空间 |
计算主成分 (PCACompute
)
import cv2
import numpy as np# 创建示例数据
data = np.array([[2.5, 2.4],[0.5, 0.7],[2.2, 2.9],[1.9, 2.2],[3.1, 3.0],[2.3, 2.7],[2, 1.6],[1, 1.1],[1.5, 1.6],[1.1, 0.9]], dtype=np.float32)# 计算PCA
mean, eigenvectors = cv2.PCACompute(data, mean=None)print("Mean:\n", mean)
print("Eigenvectors:\n", eigenvectors)
将数据投影到主成分空间 (project
)
# 将数据投影到主成分空间
projected_data = cv2.PCAProject(data, mean, eigenvectors)print("Projected Data:\n", projected_data)
将数据从主成分空间反投影回原空间 (backProject
)
# 将数据从主成分空间反投影回原空间
back_projected_data = cv2.PCABackProject(projected_data, mean, eigenvectors)print("Back Projected Data:\n", back_projected_data)
解释
PCACompute
函数:计算数据的主成分。返回均值和特征向量(主成分)。project
函数:将数据投影到主成分空间。使用计算得到的均值和特征向量,将原数据转换到主成分空间。backProject
函数:将数据从主成分空间反投影回原空间。使用计算得到的均值和特征向量,将主成分空间的数据转换回原始数据空间。
实际应用
PCA在图像处理中有许多应用,例如:
- 图像压缩:通过保留主要成分,减少图像的维度,从而实现压缩。
- 特征提取:在图像分类和识别任务中,使用PCA提取主要特征,减少计算复杂度。
- 数据可视化:将高维数据降维到2D或3D空间,方便可视化。
图像压缩示例
# 读取图像并转换为灰度图
image = cv2.imread('path_to_image.jpg', cv2.IMREAD_GRAYSCALE)
image = np.float32(image) / 255.0
h, w = image.shape# 将图像展开为2D数据
data = image.reshape((-1, w))# 计算PCA,保留主要成分
mean, eigenvectors = cv2.PCACompute(data, mean=None, maxComponents=10)# 投影到主成分空间
projected_data = cv2.PCAProject(data, mean, eigenvectors)# 反投影回原空间
back_projected_data = cv2.PCABackProject(projected_data, mean, eigenvectors)# 将数据重塑为图像
compressed_image = back_projected_data.reshape((h, w))# 显示原图像和压缩后的图像
cv2.imshow('Original Image', image)
cv2.imshow('Compressed Image', compressed_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
通过这些示例,可以看到如何使用OpenCV中的PCA函数来处理数据和图像。根据具体的应用需求,可以灵活运用这些函数来实现数据降维和特征提取等任务。