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'):breakelse: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对象进行各种统计和算术运算。这些函数在图像处理、特征提取和数据分析中非常有用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/47085.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux后门教程

linux后门教程 alias 用法 系统默认别名:alias 设置别名:alias lsls -laih 删除别名:unalias ls **加参数:**alias ls‘ls -laih;pwd’ 注意 系统启动默认加载的配置文件 /etc/profile 切换用户就会执行/etc/profile /etc/bash…

Python 实验五 高级数据结构

一、实验目的 (1)掌握序列的基本操作 (2)掌握集合、字典的基本操作 二、实验环境 联网计算机一台/每人,内装Windows 7以上操作系统和安装Python 3.7集成开发环境IDLE。 三、实验内容 Sy5-1 列表实现。编写一个…

minIO集成springboot

问题 minIO与spring集成。 步骤 创建桶 创建key 找到创建账号页面,如下图: 点击创建,如下图: 设置如下权限: {"Version": "2012-10-17","Statement": [{"Effect": &q…

Google 地图参考手册

Google 地图参考手册 引言 Google 地图作为全球最受欢迎的地图服务之一,不仅提供了详细的地理信息和导航服务,还整合了丰富的商业信息、用户评价和街景视图。本手册旨在为用户提供一个全面而深入的Google地图使用指南,帮助用户更好地利用这一强大的工具。 目录 Google 地…

codeforces round 948 div2(a,b,c)

题目链接 A #include<bits/stdc.h>using namespace std;#define int long long #define PII pair<int,int>void solve() {int n,m;cin>>n>>m;if(n&1){if((m&1)&&m>1&&m<n)cout<<"YES"<<\n;else…

HDFS和FDFS

HDFS&#xff08;Hadoop Distributed File System&#xff09;和FDFS&#xff08;FastDFS&#xff09;是两种不同的分布式文件系统&#xff0c;它们各自有不同的设计目标和使用场景。以下是对它们的详细介绍&#xff1a; HDFS&#xff08;Hadoop Distributed File System&…

树莓派docker自制镜像

挂载img文件到目录 cd /a/img tar -czvf rr.tar.gz ./ docker import tt.tar.gz rootpi:/home/pi/2# docker tag ff142da9042f arm7:v01 rootpi:/home/pi/2# docker images REPOSITORY TAG IMAGE ID CREATED SIZE arm7 …

python的异常

异常 定义 异常是程序执行中发生的错误事件&#xff0c;它可以打断正常的指令流。Python提供了强大的异常处理机制&#xff0c;允许程序在发生错误时执行某些替代指令&#xff0c;而不是直接崩溃。 类型 TypeError&#xff1a;类型错误&#xff0c;比如尝试将字符串和整数相加。…

vue3 学习笔记13 -- 生命周期和防抖节流

vue3 学习笔记13 – 生命周期和防抖节流 生命周期 创建周期&#xff08;Composition API&#xff09; setup(): 这不是生命周期钩子&#xff0c;但它是组合API的入口点&#xff0c;用于执行任何启动逻辑。 更新周期 onBeforeMount(): 在组件挂载之前调用&#xff0c;此时虚拟…

音视频开发入门教程(1)如何安装FFmpeg?共210节

安装FFmpeg的具体步骤会根据你使用的操作系统而有所不同。以下是Windows和Linux系统上安装FFmpeg的基本步骤&#xff1a; Windows系统 下载FFmpeg安装包&#xff1a; 访问FFmpeg的官方网站&#xff1a;FFmpeg。点击页面上方的“Download”按钮。在下载页面&#xff0c;找到适…

Jenkins安装nodeJs环境

首先插件市场安装nodeJS插件&#xff0c;我这里已经安装了&#xff0c;没安装的话在 Available plugins 中搜索安装 安装完成后需要下载需要的nodejs版本 新增完成就可以在构建的时候选择当前版本号了

从基础知识到应用实例,一站式掌握 Python 正则表达式

前言 大家好&#xff0c;我是阔升。今天&#xff0c;我要和大家聊聊 Python 中的正则表达式。正则表达式可谓是编程界的“瑞士军刀”&#xff0c;能用来处理各种复杂的字符串操作。本文将通过几个有趣的例子&#xff0c;带你学习正则表达式。 正则表达式基础 在 Python 中&a…

JMeter接口测试之文件上传(参数提取与传递)

参考文档&#xff1a; Jmeter接口测试-文件上传&#xff08;全网最详细的教程&#xff09;_jmeter 文件上传-CSDN博客 1、首先通过fiddler抓取文件上传接口&#xff0c;在Raw的tab页中查看默认请求头以及请求参数 如图所示 2、在jmeter中导入抓取的接口&#xff0c;首先需要配…

新书速览|深入理解Hive:从基础到高阶:视频教学版

《深入理解Hive&#xff1a;从基础到高阶&#xff1a;视频教学版》 本书内容 《深入理解Hive:从基础到高阶:视频教学版》采用“理论实战”的形式编写&#xff0c;通过大量的实例&#xff0c;结合作者多年一线开发实战经验&#xff0c;全面地介绍Hive的使用方法。《深入理解Hiv…

AI算法18-最小角回归算法Least Angle Regression | LARS

​​​ 最小角回归算法简介 最小角回归&#xff08;Least Angle Regression, LAR&#xff09;是一种用于回归分析的统计方法&#xff0c;它在某些方面类似于最小二乘回归&#xff0c;但提供了一些额外的优点。最小角回归由Bradley Efron等人提出&#xff0c;主要用于处理具有…

【Linux】安装PHP扩展-redis

说明 本文档是在centos7.6的环境下&#xff0c;安装PHP7.4之后&#xff0c;安装对应的PHP扩展包redis。 一、下载redis扩展 pecl官方地址:PECL :: The PHP Extension Community Library 下载的版本是&#xff1a;redis-5.3.7.tgz 二、安装redis扩展 1.上传 redis 压缩包到…

基于STM32设计的物联网智能鱼缸(微信小程序)(187)

基于STM32设计的物联网智能鱼缸(微信小程序)(187) 文章目录 一、前言1.1 项目介绍【1】项目功能介绍【2】设计需求总结【3】项目硬件模块组成1.2 设计思路【1】整体设计思路【2】ESP8266工作模式配置1.3 项目开发背景【1】选题的意义【2】可行性分析【3】参考文献1.4 开发工具的…

Amazon Bedrock 常用场景及 Python 实现

Amazon Bedrock 是 AWS 提供的一项全托管服务,它为开发者提供了一系列高性能的基础模型(Foundation Models,FMs)。通过单一 API,开发者可以访问来自 AI21 Labs、Anthropic、Cohere、Meta、Stability AI 和 Amazon 等领先 AI 公司的模型。本文将介绍 Amazon Bedrock 的几个…

深入异步JavaScript:掌握Promises与async/await

引言 异步编程允许JavaScript代码在等待某些耗时操作&#xff08;如网络请求、文件读写等&#xff09;完成时&#xff0c;继续执行其他任务&#xff0c;而不是阻塞整个程序的运行。这种编程模式极大地提高了应用的响应速度和效率。 JavaScript中的异步编程基础 同步与异步代…

【嵌入式DIY实例-ESP8266篇】-LCD ST7789显示DS1307 RTC时间数据

LCD ST7789显示DS1307 RTC时间数据 文章目录 LCD ST7789显示DS1307 RTC时间数据1、硬件准备与接线2、代码实现本文将介绍如何使用 ESP8266 NodeMCU 板和 DS1307 RTC 集成电路构建简单的实时时钟和日历 (RTCC),其中时间和日期打印在 ST7789 TFT 显示模块上。 ST7789 TFT 模块包…