opencv—常用函数学习_“干货“_2
目录
http://t.csdnimg.cn/i8pqt —— opencv—常用函数学习_“干货“_总(VIP)
散的正在一部分一部分发,不需要VIP。
资料整理不易,有用话给个赞和收藏吧。
五、矩阵计算函数
在OpenCV中,Mat
对象提供了丰富的矩阵计算功能,这些功能可以用于图像处理、机器学习、计算机视觉等领域。下面是一些常用的矩阵计算函数及其使用示例。
矩阵计算函数 | ||||
normalize | transpose | invert | flip | rotate |
归一化矩阵 | 转置矩阵 | 求矩阵的逆 | 翻转矩阵 | 旋转矩阵 |
determinant | trace | eigen | calcCovarMatrix | solve |
求矩阵的行列式 | 求矩阵的迹 | 求矩阵的特征值和特征向量 | 计算协方差矩阵 | 求解线性方程组 |
solveCubic | solvePoly | SVDcompute | max | min |
求解三次方程 | 求解多项式方程 | 奇异值分解 | 求矩阵元素的最大值 | 求矩阵元素的最小值 |
compare | repeat | PSNR | cross | dot |
比较矩阵 | 重复矩阵 | 峰值信噪比 | 向量的叉乘 | 向量的点乘 |
归一化矩阵 (normalize
)
import cv2
import numpy as np
# 创建一个矩阵
matrix = np.array([[1, 2], [3, 4]], dtype=np.float32)
# 归一化矩阵
normalized_matrix = cv2.normalize(matrix, None, 0, 1, cv2.NORM_MINMAX)
print("Normalized Matrix:\n", normalized_matrix)
转置矩阵 (transpose
)
# 转置矩阵
transposed_matrix = cv2.transpose(matrix)
print("Transposed Matrix:\n", transposed_matrix)
求矩阵的逆 (invert
)
# 创建一个可逆矩阵
invertible_matrix = np.array([[1, 2], [3, 4]], dtype=np.float32)
# 求矩阵的逆
inverse_matrix = cv2.invert(invertible_matrix)[1]
print("Inverse Matrix:\n", inverse_matrix)
翻转矩阵 (flip
)
# 翻转矩阵(沿Y轴翻转)
flipped_matrix = cv2.flip(matrix, 1)
print("Flipped Matrix:\n", flipped_matrix)
旋转矩阵 (rotate
)
# 翻转矩阵(沿Y轴翻转)
flipped_matrix = cv2.flip(matrix, 1)
print("Flipped Matrix:\n", flipped_matrix)
求矩阵的行列式 (determinant
)
# 求矩阵的行列式
determinant_val = cv2.determinant(invertible_matrix)
print("Determinant Value:", determinant_val)
求矩阵的迹 (trace
)
# 求矩阵的迹
trace_val = cv2.trace(matrix)[0]
print("Trace Value:", trace_val)
求矩阵的特征值和特征向量 (eigen
)
# 求矩阵的特征值和特征向量
eig_vals, eig_vecs = cv2.eigen(invertible_matrix)
print("Eigenvalues:\n", eig_vals)
print("Eigenvectors:\n", eig_vecs)
这些示例展示了如何使用OpenCV中的矩阵计算函数来处理Mat
对象。根据具体的应用需求,可以组合这些函数来实现复杂的矩阵运算和图像处理任务。
六、代数运算
在OpenCV中,代数运算函数用于对矩阵进行基本的代数运算。这些函数可以方便地实现加法、减法、乘法、除法等操作。下面介绍这些代数运算函数及其使用示例。
代数运算函数 | |||
add | subtract | multiply | divide |
矩阵加法 | 矩阵减法 | 矩阵乘法(逐元素相乘) | 矩阵除法(逐元素相除) |
absdiff | scaleAdd | addWeighted | |
计算两个矩阵的绝对差 | 按比例放大并相加 | 按权重相加 |
矩阵加法 (add
)
import cv2
import numpy as np
# 创建两个矩阵
matrix1 = np.array([[1, 2], [3, 4]], dtype=np.uint8)
matrix2 = np.array([[5, 6], [7, 8]], dtype=np.uint8)
# 矩阵加法
result_add = cv2.add(matrix1, matrix2)
print("Addition Result:\n", result_add)
矩阵减法 (subtract
)
import cv2
import numpy as np
# 创建两个矩阵
matrix1 = np.array([[1, 2], [3, 4]], dtype=np.uint8)
matrix2 = np.array([[5, 6], [7, 8]], dtype=np.uint8)
# 矩阵加法
result_add = cv2.add(matrix1, matrix2)
print("Addition Result:\n", result_add)
矩阵乘法 (multiply
)
# 矩阵乘法(逐元素相乘)
result_mul = cv2.multiply(matrix1, matrix2)
print("Multiplication Result:\n", result_mul)
矩阵除法 (divide
)
# 矩阵除法(逐元素相除)
result_div = cv2.divide(matrix1, matrix2)
print("Division Result:\n", result_div)
计算绝对差 (absdiff
)
# 计算两个矩阵的绝对差
result_absdiff = cv2.absdiff(matrix1, matrix2)
print("Absolute Difference Result:\n", result_absdiff)
按比例放大并相加 (scaleAdd
)
# 按比例放大并相加
scale = 2.5
result_scaleAdd = cv2.scaleAdd(matrix1, scale, matrix2)
print("Scale Add Result:\n", result_scaleAdd)
按权重相加 (addWeighted
)
# 按权重相加
alpha = 0.7
beta = 0.3
gamma = 0 # 可选偏移量
result_addWeighted = cv2.addWeighted(matrix1, alpha, matrix2, beta, gamma)
print("Weighted Addition Result:\n", result_addWeighted)
这些示例展示了如何使用OpenCV中的代数运算函数来对Mat
对象进行各种基本的代数运算。根据具体的应用需求,可以组合这些函数来实现复杂的图像处理和矩阵计算任务。
七、逻辑运算
在OpenCV中,逻辑运算函数用于对图像或矩阵进行像素级的逻辑操作。这些操作包括与(AND)、或(OR)、非(NOT)、异或(XOR)等。下面是这些逻辑运算函数的介绍及其使用示例。
逻辑运算函数 | |||
bitwise_and | bitwise_or | bitwise_not | bitwise_xor |
对两个矩阵进行按位与操作 | 对两个矩阵进行按位或操作 | 对矩阵进行按位取反操作 | 对两个矩阵进行按位异或操作 |
按位与操作 (bitwise_and
)
import cv2
import numpy as np
# 创建两个矩阵
matrix1 = np.array([[1, 2], [3, 4]], dtype=np.uint8)
matrix2 = np.array([[5, 6], [7, 8]], dtype=np.uint8)
# 按位与操作
result_and = cv2.bitwise_and(matrix1, matrix2)
print("Bitwise AND Result:\n", result_and)
按位或操作 (bitwise_or
)
# 按位或操作
result_or = cv2.bitwise_or(matrix1, matrix2)
print("Bitwise OR Result:\n", result_or)
按位取反操作 (bitwise_not
)
# 按位取反操作
result_not = cv2.bitwise_not(matrix1)
print("Bitwise NOT Result:\n", result_not)
按位异或操作 (bitwise_xor
)
# 按位异或操作
result_xor = cv2.bitwise_xor(matrix1, matrix2)
print("Bitwise XOR Result:\n", result_xor)
这些示例展示了如何使用OpenCV中的逻辑运算函数来对Mat
对象进行各种按位逻辑操作。这些操作在图像处理和计算机视觉中非常有用,特别是在掩模操作、图像合成和图像增强等应用中。根据具体的需求,可以灵活组合这些函数来实现复杂的图像处理任务。
原文地址:https://blog.csdn.net/chen_0717/article/details/140372324
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!