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

目录

五、矩阵计算函数

归一化矩阵 (normalize)

转置矩阵 (transpose)

求矩阵的逆 (invert)

翻转矩阵 (flip)

旋转矩阵 (rotate)

求矩阵的行列式 (determinant)

求矩阵的迹 (trace)

求矩阵的特征值和特征向量 (eigen)

六、代数运算

矩阵加法 (add)

矩阵减法 (subtract)

矩阵乘法 (multiply)

矩阵除法 (divide)

计算绝对差 (absdiff)

按比例放大并相加 (scaleAdd)

按权重相加 (addWeighted)

七、逻辑运算

按位与操作 (bitwise_and)

按位或操作 (bitwise_or)

按位取反操作 (bitwise_not)

按位异或操作 (bitwise_xor)

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

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

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


五、矩阵计算函数

        在OpenCV中,Mat对象提供了丰富的矩阵计算功能,这些功能可以用于图像处理、机器学习、计算机视觉等领域。下面是一些常用的矩阵计算函数及其使用示例。

矩阵计算函数
normalizetransposeinvertfliprotate
归一化矩阵转置矩阵求矩阵的逆翻转矩阵旋转矩阵
determinanttraceeigencalcCovarMatrixsolve
求矩阵的行列式求矩阵的迹求矩阵的特征值和特征向量计算协方差矩阵求解线性方程组
solveCubicsolvePolySVDcomputemaxmin
求解三次方程求解多项式方程奇异值分解求矩阵元素的最大值求矩阵元素的最小值
comparerepeatPSNRcrossdot
比较矩阵重复矩阵峰值信噪比向量的叉乘向量的点乘
归一化矩阵 (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中,代数运算函数用于对矩阵进行基本的代数运算。这些函数可以方便地实现加法、减法、乘法、除法等操作。下面介绍这些代数运算函数及其使用示例。

代数运算函数
addsubtractmultiplydivide
矩阵加法矩阵减法矩阵乘法(逐元素相乘)矩阵除法(逐元素相除)
absdiffscaleAddaddWeighted
计算两个矩阵的绝对差按比例放大并相加按权重相加
矩阵加法 (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_andbitwise_orbitwise_notbitwise_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对象进行各种按位逻辑操作。这些操作在图像处理和计算机视觉中非常有用,特别是在掩模操作、图像合成和图像增强等应用中。根据具体的需求,可以灵活组合这些函数来实现复杂的图像处理任务。

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

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

相关文章

通过手机控制家用电器的一个程序的设计(一)

一、概述 设计一款安卓平台上的家庭智能控制软件,通过语音识别指令控制家用电器。该软件结合离线语音识别技术、红外线和WIFI通讯技术,实现对家电的智能控制,如开关机、调温度、调频道等操作。 二、主要功能模块 离线语音识别模块 功能&…

嵌入式人工智能(7-树莓派4B的IIC总线连接OLED显示中文与图片)

1、IIC总线 IIC总线(Inter-Integrated Circuit)是一种串行通信总线,也被称为I2C总线。它由飞利浦(Philips)公司在1980年代开发,用于连接微处理器和外部设备。 IIC总线使用两根信号线:SDA&…

删除windows系统里磁盘的恢复分区

说下我的情况 我买了块固态磁盘,插上主板,发现它自带了系统,这样我开机就会转到这块磁盘,即使在boot里改变也不行,后面我格式化了对应的盘符,但在磁盘管理里,发现有个EFI系统分区和恢复分区存在…

C++中的语句详细介绍:简单语句、条件、循环迭代语句、跳转语句、异常处理语句、try语句等

文章目录 C中的语句(1)简单语句A.空语句B.复合语句 (2)条件语句(3)迭代语句A.常规for循环B.范围for循环C.while和do...while (4)跳转语句A.break语句B.continue语句C.goto语句 (5)异常处理语句A.标准异常B.throw抛出异常 (6)try语句 C中的语句 (1)简单语句 简单语句包括&#…

卷麻了!字节软件测试四轮面试,成功拿到offer啦!

❗️❗️字节面试攻略❗️❗️ ⭕️招聘特点:关注可复制直接上手的人才! 字节是人才扎堆的地方,人来就马上能做,只招现成的人才。 字节软件测试的面试题同样也是分了四轮,成功拿到ooffer了,给大家总结一下每…

MyBatis源码中的设计模式1

1. 建造者模式的应用 建造者模式属于创建类模式,通过一步一步地创建一个复杂的对象,能够将部件与其组装过程分开。用户只需指定复杂对象的类型,就可以得到该对象,而不需要了解其内部的具体构造细节。《Effective Java》中也提到&…

Django captcha 验证

1.安装模块 pip install django-simple-captcha pip install Pillow2.在settings中,将captcha注册到app列表里 # MxOnline/settings.py INSTALLED_APPS [# 图片登陆验证captcha, ]3.captcha需要在数据库中建立自己的数据表,所以需要执行migrate命令生…

捷配PCB打样采用机械盲埋孔制造,有何优势?

在电子制造领域,盲孔(Blind Vias)与埋孔(Buried Vias)是两种关键的PCB(印刷电路板)过孔技术。盲孔特指那些连接内层走线至外层走线的过孔,但并不贯穿整个板体。相对地,埋…

镜舟科技荣获优秀数字化服务商奖,助力企业用数智技术重塑新消费

7 月 13 日,由 ITShare智享会和 BT商业科技观察主办的2024 第八届 FMCG 零售消费品数字化峰会于上海落幕。在现场,镜舟科技凭借在多家零售企业构建与实施智能数据中台解决方案的成功经验,荣获优秀数字化服务商奖项。 在会上,麦当劳…

力扣第十二题——整数转罗马数字

内容介绍 七个不同的符号代表罗马数字,其值如下: 符号值I1V5X10L50C100D500M1000 罗马数字是通过添加从最高到最低的小数位值的转换而形成的。将小数位值转换为罗马数字有以下规则: 如果该值不是以 4 或 9 开头,请选择可以从输入中…

云动态摘要 2024-07-16

给您带来云厂商的最新动态,最新产品资讯和最新优惠更新。 最新优惠与活动 数据库上云优选 阿里云 2024-07-04 RDS、PolarDB、Redis、MongoDB 全系产品新用户低至首年6折起! [免费体验]智能助手ChatBI上线 腾讯云 2024-07-02 基于混元大模型打造&…

C语言 ——— 编写代码,判断 整型数组 是否 有序

目录 题目要求 代码实现 题目要求 判断 整型数组 是否有序 如果 整型数组 有序输出 sorted&#xff1b;否则输出 unsorted 代码实现 #include<stdio.h> int main() {int arr[10] { 0 };int sz sizeof(arr) / sizeof(arr[0]);//输入for (int i 0; i < sz; i){s…

Android 底部导航栏实现

依赖库 implementation "androidx.viewpager2:viewpager2:1.0.0" fragment基类 /*** Fragment的基类** param <DB> data binding* param <VM> view model* author shizhiyin*/ public abstract class BaseFragment<DB extends ViewDataBinding, VM …

线程控制

对线程的控制思路和进程相似&#xff0c;创建、等待、终止&#xff0c;只需要调用接口就行。但是在Linux下没有线程的概念&#xff0c;因为Linux的设计者认为&#xff0c;线程是一种轻量级的进程&#xff0c;毕竟创建线程只需要创建PCB。因此Linux中使用多线程必须使用第三方pt…

Spring MVC入门2

Postman的使用 接上期我们抛出了一个问题&#xff0c;Postman的使用 可以点击链接下载 https://www.postman.com/downloads/ 安装之后会提示版本升级&#xff0c;直接点击dissmiss即可。 要想发送数据&#xff0c;具体歩奏如下简图&#xff1a; 还有一个更具体的图&#xff…

使用GDAL(C++库)从末尾行开始向上读取图像数据

使用GDAL&#xff08;C库&#xff09;从末尾行读取图像数据 OpenCV等图像库默认的读取方式都是从第一行开始&#xff0c;逐行读取数据&#xff08;自顶向下&#xff09;&#xff0c;填充到内存缓冲区&#xff1b;对于某些特殊应用&#xff0c;需要反行序读取&#xff08;从末尾…

朴素模式匹配算法与KMP算法(非重点)

目录 一. 朴素模式匹配算法1.1 什么是字符串的匹配模式1.2 朴素模式匹配算法1.3 通过数组下标实现朴素模式匹配算法 二. KMP算法2.1 算法分析2.2 用代码实现&#xff08;只会出现在选择题&#xff0c;考察代码的概率不大&#xff09; 三. 手算next数组四. KMP算法的进一步优化4…

Python + Playwright(21):拦截网络请求

Python + Playwright(21):拦截网络请求 前言什么是路由(Route)?使用示例基础拦截配置使用正则表达式模式自定义处理函数注意事项总结前言 在进行自动化测试,当网页加载时,我们经常会遇到页面上存在大量非核心内容,这些内容可能并不直接影响我们的测试目标。为了优化加…

新手学习AIGC的步骤与图谱

学习人工智能和生成式对话模型&#xff08;Artificial Intelligence and Generative Conversational Models&#xff09;是一项令人兴奋且具有挑战性的任务&#xff01;以下是一些我认为可行的学习步骤和路径&#xff1a; 初学者学习AIGC的步骤&#xff1a; 掌握基础知识&#…

在AWS创建一台Windows主机并登录

正文共&#xff1a;1111 字 21 图&#xff0c;预估阅读时间&#xff1a;1 分钟 因为之前微软云Azure免费&#xff0c;我们还做了简单的测试&#xff08;白嫖党618福利&#xff01;来Azure领200美刀&#xff01;外加云主机免费用一年&#xff01;&#xff09;&#xff1b;并且通…