opencv—常用函数学习_“干货“_1

目录

一、图像文件

1. imread:读取图像文件

2. imwrite:写入图像文件

3. imshow:显示图像

4. VideoCapture:捕获视频

二、创建Mat

1、创建Mat对象

2、操作Mat对象

三、矩阵算术运算

矩阵加法

矩阵减法

矩阵乘法

矩阵除法

四、数学运算

计算均值 (mean)

计算均值和标准差 (meanStdDev)

计算元素和 (sum)

找到最小值和最大值及其位置 (minMaxLoc)

计算非零元素的个数 (countNonZero)

计算矩阵的范数 (norm)

http://t.csdnimg.cn/i8pqt  —— opencv—常用函数学习_“干货“_总(VIP)

散的正在一部分一部分发,不需要VIP。

资料整理不易,有用话给个赞和收藏吧。


一、图像文件

图像文件
imreadimwriteimshowVideoCapture
读取图像文件写入图像文件显示图像捕获视频

1. imread:读取图像文件

作用:从文件读取图像并存储在一个矩阵(数组)中。

使用场景:当需要从磁盘加载图像进行处理或分析时。

样例代码

import cv2

# 从文件读取图像
image = cv2.imread('path_to_image.jpg')

# 检查图像是否读取成功
if image is None:
    print("图像读取失败")
else:
    print("图像读取成功")

2. imwrite:写入图像文件

作用:将图像矩阵(数组)写入到文件。

使用场景:当需要保存处理后的图像到磁盘时。

样例代码

import cv2

# 读取图像
image = cv2.imread('path_to_image.jpg')

# 处理图像(例如,转换为灰度图像)
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# 将处理后的图像写入文件
cv2.imwrite('path_to_save_image.jpg', gray_image)

3. imshow:显示图像

作用:在窗口中显示图像。

使用场景:当需要在屏幕上查看图像或处理结果时。

样例代码

import cv2

# 读取图像
image = cv2.imread('path_to_image.jpg')

# 显示图像
cv2.imshow('Image', image)

# 等待按键按下
cv2.waitKey(0)

# 关闭所有窗口
cv2.destroyAllWindows()

4. VideoCapture:捕获视频

作用:从摄像头或视频文件中捕获视频流。

使用场景:当需要从摄像头获取实时视频流或从文件中读取视频进行处理时。

样例代码

import cv2

# 打开摄像头(参数0表示第一个摄像头)
cap = cv2.VideoCapture(0)

# 检查摄像头是否打开成功
if not cap.isOpened():
    print("无法打开摄像头")
else:
    while True:
        # 逐帧捕获
        ret, frame = cap.read()

        # 如果读取成功
        if ret:
            # 显示帧
            cv2.imshow('Video', frame)
            
            # 按下 'q' 键退出
            if cv2.waitKey(1) & 0xFF == ord('q'):
                break
        else:
            break

# 释放资源并关闭窗口
cap.release()
cv2.destroyAllWindows()

二、创建Mat

        在OpenCV中,Mat对象是一个强大的矩阵类型,用于表示图像和矩阵数据。下面是一些常用的构造函数和方法,用于创建和操作Mat对象。

创建Mat的构造函数
zerosoneseye
创建一个所有元素为零的矩阵创建一个所有元素为一的矩阵创建一个单位矩阵(对角线元素为一,其他元素为零)
操作函数
colRangerowRangeRange
获取指定列范围的子矩阵获取指定行范围的子矩阵表示一个范围
1、创建Mat对象

创建一个所有元素为零的矩阵

import cv2
import numpy as np

# 创建一个3x3的零矩阵
zero_matrix = np.zeros((3, 3), dtype=np.uint8)
print("Zero Matrix:\n", zero_matrix)

创建一个所有元素为一的矩阵

# 创建一个3x3的全一矩阵
one_matrix = np.ones((3, 3), dtype=np.uint8)
print("One Matrix:\n", one_matrix)

创建一个单位矩阵

# 创建一个3x3的单位矩阵
eye_matrix = np.eye(3, dtype=np.uint8)
print("Eye Matrix:\n", eye_matrix)

        使用OpenCV中的函数和方法来创建和操作Mat对象。可以根据需要组合这些方法来实现复杂的图像和矩阵操作任务。

2、操作Mat对象

获取指定列范围的子矩阵

# 创建一个4x4的随机矩阵
matrix = np.random.randint(0, 256, (4, 4), dtype=np.uint8)
print("Original Matrix:\n", matrix)

# 获取第1到第3列(不包括第3列)的子矩阵
col_sub_matrix = matrix[:, 1:3]
print("Column Range Matrix:\n", col_sub_matrix)

获取指定行范围的子矩阵

# 获取第1到第3行(不包括第3行)的子矩阵
row_sub_matrix = matrix[1:3, :]
print("Row Range Matrix:\n", row_sub_matrix)

表示一个范围(在此例中用于创建子矩阵)

# 表示从第1到第3列(不包括第3列)的范围
col_range = slice(1, 3)
print("Column Range:\n", matrix[:, col_range])

# 表示从第1到第3行(不包括第3行)的范围
row_range = slice(1, 3)
print("Row Range:\n", matrix[row_range, :])

三、矩阵算术运算

        在OpenCV中,Mat对象支持基本的算术运算,这些运算可以用来对矩阵进行加法、减法、乘法和除法操作。下面分别介绍这些操作符的重载及其使用示例。

矩阵算术运算
+(加法)-(减法)*(乘法)/(除法)
对两个矩阵进行元素逐个相加对两个矩阵进行元素逐个相减对两个矩阵进行元素逐个相乘对两个矩阵进行元素逐个相除
矩阵加法
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)
矩阵减法
# 矩阵减法
result_sub = cv2.subtract(matrix1, matrix2)
print("Subtraction Result:\n", result_sub)
矩阵乘法
# 矩阵乘法(逐元素相乘)
result_mul = cv2.multiply(matrix1, matrix2)
print("Multiplication Result:\n", result_mul)
矩阵除法
# 矩阵除法(逐元素相除)
result_div = cv2.divide(matrix1, matrix2)
print("Division Result:\n", result_div)

        通过这些示例代码,可以看到如何使用OpenCV中的操作符重载来对Mat对象进行基本的算术运算。这些运算在图像处理和矩阵计算中非常常用,可以用于各种图像增强、滤波和特征提取任务。

四、数学运算

        在OpenCV中,Mat对象提供了丰富的数学运算功能,可以方便地对矩阵进行各种统计和算术运算。下面介绍一些常用的数学运算函数及其使用示例。

数学运算
meanmeanStdDevsum
计算矩阵的均值计算矩阵的均值和标准差计算矩阵元素的和
minMaxLoccountNonZeronorm
找到矩阵中的最小值和最大值及其位置计算矩阵中非零元素的个数计算矩阵的范数(如L2范数)
计算均值 (mean)
import cv2
import numpy as np

# 创建一个矩阵
matrix = np.array([[1, 2], [3, 4]], dtype=np.uint8)

# 计算矩阵的均值
mean_val = cv2.mean(matrix)
print("Mean Value:", mean_val)

计算均值和标准差 (meanStdDev)
# 计算矩阵的均值和标准差
mean_val, stddev_val = cv2.meanStdDev(matrix)
print("Mean Value:", mean_val)
print("Standard Deviation:", stddev_val)
计算元素和 (sum)
# 计算矩阵元素的和
sum_val = cv2.sumElems(matrix)
print("Sum of Elements:", sum_val)
找到最小值和最大值及其位置 (minMaxLoc)
# 找到矩阵中的最小值和最大值及其位置
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(matrix)
print("Minimum Value:", min_val, "at", min_loc)
print("Maximum Value:", max_val, "at", max_loc)
计算非零元素的个数 (countNonZero)
# 计算矩阵中非零元素的个数
nonzero_count = cv2.countNonZero(matrix)
print("Number of Non-Zero Elements:", nonzero_count)
计算矩阵的范数 (norm)
# 计算矩阵的L2范数
norm_val = cv2.norm(matrix, cv2.NORM_L2)
print("L2 Norm of the Matrix:", norm_val)

通过这些示例代码,可以了解如何使用OpenCV中的这些数学运算函数来对Mat对象进行各种统计和算术运算。这些函数在图像处理、特征提取和数据分析中非常有用。

  • 27
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值