当前位置: 首页 > news >正文

OpenCV中常用算子

一、图像运算

	Mat src, src1, src2, dst;// 图像运算 加 减 乘 除cv::add(src1, src2, dst);                         // 相加:src1+src2cv::scaleAdd(src1, 1.0, src2, dst);               // 相加:1.0*src1+src2cv::addWeighted(src1, 0.3, src2, 0.7, 0.0, dst);  // 相加:0.3*src1+0.7*src2cv::subtract(src1, src2, dst);            // 相减:src1-src2cv::subtract(cv::Scalar(255), src, dst);  // 相减:255-srccv::subtract(src, cv::Scalar(128), dst);  // 相减:src-128cv::multiply(src1, src2, dst, 1.0);  // 相乘:src1*src2*1.0cv::mulTransposed(src, dst, true);   // 相乘:true:src'*src  false:src*src'cv::divide(src1, src2, dst, 1.0);    // 相除:src1/src2cv::divide(255.0, src, dst);         // 相除:255.0/src

二、按位运算

	// 按位运算 与 或 非 异或cv::bitwise_and(src1, src2, dst);  // 按位与操作 1&1=1 1&0=0 0&1=0 0&0=0cv::bitwise_or(src1, src2, dst);   // 按位或操作 1|1=1 1|0=1 0|1=1 0|0=0cv::bitwise_not(src, dst);         // 按位非操作 ~1=0 ~0=1cv::bitwise_xor(src1, src2, dst);  // 按位异或操作 1xor1=0 1xor0=1 0xor1=1 0xor0=1cv::bitwise_and(src, cv::Scalar(255), dst);

三、函数运算

    // 绝对值 开方 指数 对数 幂次方dst = cv::abs(src);   // 元素绝对值cv::sqrt(src, dst);   // 元素开方 x^(0.5)cv::exp(src, dst);    // 元素指数 e^xcv::log(src, dst);    // 元素自然对数 In(x)cv::pow(src, 5, dst); // 元素p次幂 x^5

四、像素比较

    // 较大值 较小值cv::max(src1, src2, dst);           // 两图像较大值cv::max(src, cv::Scalar(0), dst);   // 取较大值cv::min(src1, src2, dst);           // 两图像较小值cv::min(src, cv::Scalar(255), dst); // 取较小值// 像素比较,匹配标记255,否则0,输入src为单通道// CMP_EQ:=  CMP_GT:>  CMP_GE:>=  CMP_LT:<  CMP_LE:<=  CMP_NE:!=cv::compare(src1, src2, dst, cv::CMP_EQ);cv::compare(src, cv::Scalar(9), dst, cv::CMP_EQ);cv::compare(cv::Scalar(9), src, dst, cv::CMP_EQ);cv::Point posOutlier;  // [0.0, 256.0)bool flagRange = cv::checkRange(src, true, &posOutlier, 0.0, 256.0); // 检查值是否在范围内// 输入为单通道/多通道, 输出为单通道二值图像; 区间为闭区间Mat maskInRange;cv::inRange(gray, cv::Scalar(0), cv::Scalar(255), maskInRange);        // 相当于阈值分割cv::inRange(color, cv::Scalar(0,0,0), cv::Scalar(9,9,9), maskInRange); // 多通道之间取交集

五、通道操作

	// 通道合并 通道分离vector<Mat> mats;Mat grays[3] = { gray, gray, gray };cv::merge(mats, dst);      // 合并cv::merge(grays, 3, dst);  // 合并cv::split(dst, mats);   // 分离cv::split(dst, grays);  // 分离int fromTo[] = { 0, 0 };cv::mixChannels(&src, 1, &src, 1, fromTo, 1); // 通道重组

六、矩阵相关

	// 矩阵相关double det = cv::determinant(src);  // 行列式cv::Scalar trace = cv::trace(src);  // 计算矩阵的迹double norm1 = cv::norm(src, cv::NORM_L2);        // 矩阵范数double norm2 = cv::norm(src1, src2, cv::NORM_L2); // 矩阵范数int cntNonZero = cv::countNonZero(src); // 非零元素个数cv::transpose(src, dst);              // 转置cv::completeSymm(src, false);         // 上三角复制到下三角,使之对称cv::invert(src, dst, cv::DECOMP_LU);  // 矩阵求逆或伪逆cv::normalize(src, dst, 0.0, 1.0, cv::NORM_MINMAX);  // 映射到指定范围内Mat mtx = Mat::ones(100, 100, CV_8UC1);cv::setIdentity(mtx, cv::Scalar(255));  // 对角线元素设置为指定值,其他为0// 输入为浮点型对称方阵 输出特征值为向量 特征向量为矩阵Mat eigenvalues, eigenvectors;cv::eigen(src, eigenvalues, eigenvectors);// 协方差矩阵和均值Mat dstCovar, dstMean;cv::calcCovarMatrix(src, dstCovar, dstMean, 0, 6);

七、极值坐标

	// 寻找图像中灰度值最大最小位置  输入为单通道double minV, maxV;int minIdx[2], maxIdx[2];cv::Point minLoc, maxLoc;cv::minMaxIdx(src, &minV, &maxV, minIdx, maxIdx); cv::minMaxLoc(src, &minV, &maxV, &minLoc, &maxLoc);

八、矩阵变换

	/* 透视变换 */Mat m33 = Mat::zeros(3, 3, CV_32FC1);cv::perspectiveTransform(src, dst, m33);  // 投影变换 3*3/4*4变换矩阵/* 线性变换 */Mat m22 = Mat::zeros(2, 2, CV_32FC1);cv::transform(src, dst, m22);  // 任意线性变换 2*2/2*3变换矩阵/* 仿射变换 透视变换 */cv::warpAffine(src, dst, m23, src.size());  // m23 为2*3变换矩阵cv::warpPerspective(src, dst, m33, src.size());  // m33为3*3变换矩阵

    perspectiveTransform / transform:变换矩阵与通道向量的乘积作为结果通道向量。

    warpAffine / warpPerspective:矩阵坐标位置变换。

九、其他算子

	// 矩阵求解Mat lhs, rhs, dstSolve;  // n*n  n*1  n*1   lhs*dstSolve=rhscv::solve(lhs, rhs, dstSolve, cv::DECOMP_LU);  // 求解线性系统Mat coeffs, dstRoots;  // coeffs 4*1cv::solveCubic(coeffs, dstRoots);  // 三次多项式实根cv::solvePoly(coeffs, dstRoots);  // 任意多项式的根cv::sort(src, dst, cv::SORT_EVERY_ROW + SORT_ASCENDING);  // 分别对每行或列排序cv::sortIdx(src, dst, cv::SORT_EVERY_ROW + SORT_ASCENDING);  // 排序索引cv::flip(src, dst, 0);  // 绕x轴或y轴旋转 >0:y-flip  0:x-flip  <0:both// 广义矩阵乘法cv::gemm(src1, src2, 1.0, src, 1.0, dst, cv::GEMM_1_T + cv::GEMM_3_T);  // dst=1.0*src1'*src2+1.0*src// 幅值、角度相关Mat dstMagnitude, dstAngle;cv::cartToPolar(src, src, dstMagnitude, dstAngle); // 直角坐标系转为极坐标系Mat dstx, dsty;cv::polarToCart(dstMagnitude, dstAngle, dstx, dsty); // 极坐标中计算笛卡尔坐标cv::magnitude(src, src, dstMagnitude);  // 计算直角坐标系转换成极坐标系的幅值Mat dstPhase;cv::phase(src, src, dstPhase, false);  // 对二维矢量场计算笛卡尔-极坐标转换的方位角Mat vecMat1, vecMat2, dstIcovar;cv::Mahalanobis(vecMat1, vecMat2, dstIcovar);  // 计算两个向量的马氏距离

十、参考资料

    机器视觉算法(第10期)----图像处理中64个常用的算子 - 灰信网(软件开发博客聚合)

相关文章:

OpenCV中常用算子

一、图像运算 Mat src, src1, src2, dst;// 图像运算 加 减 乘 除cv::add(src1, src2, dst); // 相加&#xff1a;src1src2cv::scaleAdd(src1, 1.0, src2, dst); // 相加&#xff1a;1.0*src1src2cv::addWeighted(src1, 0.3, src2, 0.7,…...

Android 11.0 系统限制上网系列之iptables用IOemNetd实现app某个时间段禁止上网的功能实现

1.前言 在11.0的系统rom定制化开发中,对于系统限制网络的使用,在system中netd网络这块的产品需要中,会要求设置app某个时间段禁止上网的功能, liunx中iptables命令也是比较重要的,接下来就来在IOemNetd这块实现app某个时间段禁止上网的的相关功能,就是在 系统中只能允许…...

【JavaSE】面向对象编程思想之继承

【本节目标】 1. 继承 2. 组合 目录 1. 为什么需要继承 2. 继承概念 3. 继承的语法 4. 父类成员访问 4.1 子类中访问父类的成员变量 4.2 子类中访问父类的成员方法 5. super关键字 6. 子类构造方法 7. super和this 8. 再谈初始化 9. protected 关键字 10. 继承方式…...

Golang make和new的区别

make 和 new new函数 作用 分配内存设置零值返回指针 eg&#xff1a; type Student struct{name stringage int }func main(){//new 一个内建类型num : new(int)fmt.Println(*num) //打印&#xff1a;0//new一个自定义类型s : new(Student)s.name "yx"fmt.Prin…...

(前后端交互式)Ajax上传图片 + 更换背景图片

前后端交互图片文件 上传-图片 注意1&#xff1a;上传的图片必须在2MB以内 注意2&#xff1a;服务器端oss&#xff08;阿里云对象存储&#xff09;为了安全性&#xff0c;图片url网址不能直接在浏览器地址栏访问 请用img/背景图方式进行使用 上传图片的代码实现 \* 目标&#…...

自媒体常见玩法

有声小说转成视频 题材来源 喜马拉雅 工具 https://trace.moe/ 33台词找台词 文字转视频 题材来源 小说类APP书籍 音乐转视频...

【react】react生命周期钩子函数:

文章目录 一、生命周期概念:二、生命周期:三、挂载阶段&#xff08;constructor > render > componentDidMount&#xff09;&#xff1a;四、更新阶段&#xff08;render > componentDidUpdate&#xff09;&#xff1a;五、卸载阶段&#xff08;componentWillUnmount …...

CRM系统哪些功能可以个性化定制?

不同的企业有着不同的业务流程和需求&#xff0c;因此在选型时就需要一款可以个性化定制的CRM系统。下面说说可以个性化定制的CRM系统的功能和优势。 如何实现个性化定制&#xff1f; Zoho CRM支持个性化定制&#xff0c;您可以创建自定义功能模块、字段以及业务流程&#xf…...

51单片机(普中HC6800-EM3 V3.0)实验例程软件分析 实验二 LED闪烁

目录 前言 一、原理图及知识点介绍 二、代码分析 知识点四&#xff1a;delay(u16 i)这个函数为什么i1时&#xff0c;大约延时10us&#xff1f; 前言 已经是第二个实验了&#xff0c;上一个实验是点亮第一个LED灯&#xff0c;这个实验是LED的闪烁。 一、原理图及知识点介绍…...

PaperEdge 文档图像矫正

效果 地址&#xff1a; https://github.com/cvlab-stonybrook/PaperEdge...

入门NLTK:Python自然语言处理库初级教程

NLTK&#xff08;Natural Language Toolkit&#xff09;是一个Python库&#xff0c;用于实现自然语言处理&#xff08;NLP&#xff09;的许多任务。NLTK包括一些有用的工具和资源&#xff0c;如文本语料库、词性标注器、语法分析器等。在这篇初级教程中&#xff0c;我们将了解N…...

Android 死机问题学习笔记

和你一起终身学习&#xff0c;这里是程序员Android 经典好文推荐&#xff0c;通过阅读本文&#xff0c;您将收获以下知识点: 一、死机系统简图二、死机的可能原因三、死机问题需要分析哪些数据四 、Java Backtrace 分析五、常见 Java backtrace 举例六、Native Backtrace七、Ke…...

企业内网终端安全无客户端准入控制技术实践

终端无代理/无客户端准入控制技术因其良好的用户体验而倍受创新企业的青睐。无代理/无客户端准入控制技术&#xff0c;顾名思义&#xff0c;是一种在网络中对终端实施访问控制的方法&#xff0c;无需依赖特定的客户端软件。 不同于银行、医院等传统行业的终端准入控制需求&…...

Android 开发代码规范

一. AndroidStudio开发工具规范 使用最新的稳定版本.统一文件的编码格式为utf-8. 清除每个类里面的无效的import导包.代码样式统一,比如&#xff0c;tab缩进4个空格&#xff0c;或者 tab size等如果没有特殊情况使用默认的配置即可。每行字数每行字符数不得超过 160 字符&…...

c语言(函数)

目录 何为函数 库函数 自定义函数 二分查找数组下标 链式访问 函数的声明 函数定义 递归 正向打印数字 打印字符个数 使用临时变量 递归(不使用临时变量) n的阶乘 一般形式 递归 斐波那契数 递归 正常做法 何为函数 在计算机科学中&#xff0c;子程序是一个…...

OPENCV C++(二)直方图+分离颜色通道+画圆画线画矩形

分离RGB彩图颜色通道 也就是把每种分量的亮度图提出来 vector<Mat> channels;split(image1, channels);Mat R channels.at(0);Mat G channels.at(1);Mat B channels.at(2); 这样R,G,B每个图就是这个图的颜色分量图了 图片的克隆&#xff0c;深拷贝&#xff01; Mat…...

SpringBoot(2.7.x)中使用PageHelper

如何在SpringBoot中使用PageHelper 先添加依赖 <dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>1.2.12</version> </dependency>SpringBoot 2.6.x…...

【HarmonyOS】API9网络buffer图片加载

【引言】 HarmonyOS中加载网络图片常用的方法是直接给Image组件添加图片的网络地址&#xff0c;申请网络权限ohos.permission.INTERNET后就可以通过url加载对应的图片了&#xff0c;如HarmonyOS官网中的写法&#xff1a; Image(https://www.example.com/example.JPG) 【问题概…...

【前端实习生备战秋招】—HTML 和 CSS面试题总结(二)

【前端实习生备战秋招】—HTML 和 CSS面试题总结&#xff08;二&#xff09; 1.有哪些方式可以对一个 DOM 设置它的 CSS 样式&#xff1f; 外部样式表&#xff0c;引入一个外部 css 文件内部样式表&#xff0c;将 css 代码放在 <head> 标签内部内联样式&#xff0c;将 c…...

操作系统知识点总结

操作系统知识点总结: 第一章:操作系统概述 1.1操作系统的概念: ​ 操作系统是一种系统软件,与其他系统软件和应用软件不同,它有自己的基本特征。它的四大基本特征也就是并发,共享,虚拟,异步。 1.2操作系统的特征(四大基本特征): 并发: 这里我们要理解什么是并发,什么是…...

Chapter03-Authentication vulnerabilities

文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...

【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器

一.自适应梯度算法Adagrad概述 Adagrad&#xff08;Adaptive Gradient Algorithm&#xff09;是一种自适应学习率的优化算法&#xff0c;由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率&#xff0c;适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...

大数据零基础学习day1之环境准备和大数据初步理解

学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 &#xff08;1&#xff09;设置网关 打开VMware虚拟机&#xff0c;点击编辑…...

汽车生产虚拟实训中的技能提升与生产优化​

在制造业蓬勃发展的大背景下&#xff0c;虚拟教学实训宛如一颗璀璨的新星&#xff0c;正发挥着不可或缺且日益凸显的关键作用&#xff0c;源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例&#xff0c;汽车生产线上各类…...

STM32标准库-DMA直接存储器存取

文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA&#xff08;Direct Memory Access&#xff09;直接存储器存取 DMA可以提供外设…...

基础测试工具使用经验

背景 vtune&#xff0c;perf, nsight system等基础测试工具&#xff0c;都是用过的&#xff0c;但是没有记录&#xff0c;都逐渐忘了。所以写这篇博客总结记录一下&#xff0c;只要以后发现新的用法&#xff0c;就记得来编辑补充一下 perf 比较基础的用法&#xff1a; 先改这…...

CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云

目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...

优选算法第十二讲:队列 + 宽搜 优先级队列

优选算法第十二讲&#xff1a;队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...

MySQL:分区的基本使用

目录 一、什么是分区二、有什么作用三、分类四、创建分区五、删除分区 一、什么是分区 MySQL 分区&#xff08;Partitioning&#xff09;是一种将单张表的数据逻辑上拆分成多个物理部分的技术。这些物理部分&#xff08;分区&#xff09;可以独立存储、管理和优化&#xff0c;…...

数学建模-滑翔伞伞翼面积的设计,运动状态计算和优化 !

我们考虑滑翔伞的伞翼面积设计问题以及运动状态描述。滑翔伞的性能主要取决于伞翼面积、气动特性以及飞行员的重量。我们的目标是建立数学模型来描述滑翔伞的运动状态,并优化伞翼面积的设计。 一、问题分析 滑翔伞在飞行过程中受到重力、升力和阻力的作用。升力和阻力与伞翼面…...