当前位置: 首页 > 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操作系统的特征(四大基本特征): 并发: 这里我们要理解什么是并发,什么是…...

定时器任务——若依源码分析

分析util包下面的工具类schedule utils&#xff1a; ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类&#xff0c;封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz&#xff0c;先构建任务的 JobD…...

微信小程序 - 手机震动

一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注&#xff1a;文档 https://developers.weixin.qq…...

如何在网页里填写 PDF 表格?

有时候&#xff0c;你可能希望用户能在你的网站上填写 PDF 表单。然而&#xff0c;这件事并不简单&#xff0c;因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件&#xff0c;但原生并不支持编辑或填写它们。更糟的是&#xff0c;如果你想收集表单数据&#xff…...

【生成模型】视频生成论文调研

工作清单 上游应用方向&#xff1a;控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...

给网站添加live2d看板娘

给网站添加live2d看板娘 参考文献&#xff1a; stevenjoezhang/live2d-widget: 把萌萌哒的看板娘抱回家 (ノ≧∇≦)ノ | Live2D widget for web platformEikanya/Live2d-model: Live2d model collectionzenghongtu/live2d-model-assets 前言 网站环境如下&#xff0c;文章也主…...

基于开源AI智能名片链动2 + 1模式S2B2C商城小程序的沉浸式体验营销研究

摘要&#xff1a;在消费市场竞争日益激烈的当下&#xff0c;传统体验营销方式存在诸多局限。本文聚焦开源AI智能名片链动2 1模式S2B2C商城小程序&#xff0c;探讨其在沉浸式体验营销中的应用。通过对比传统品鉴、工厂参观等初级体验方式&#xff0c;分析沉浸式体验的优势与价值…...

Python学习(8) ----- Python的类与对象

Python 中的类&#xff08;Class&#xff09;与对象&#xff08;Object&#xff09;是面向对象编程&#xff08;OOP&#xff09;的核心。我们可以通过“类是模板&#xff0c;对象是实例”来理解它们的关系。 &#x1f9f1; 一句话理解&#xff1a; 类就像“图纸”&#xff0c;对…...

「Java基本语法」变量的使用

变量定义 变量是程序中存储数据的容器&#xff0c;用于保存可变的数据值。在Java中&#xff0c;变量必须先声明后使用&#xff0c;声明时需指定变量的数据类型和变量名。 语法 数据类型 变量名 [ 初始值]; 示例&#xff1a;声明与初始化 public class VariableDemo {publi…...

运行vue项目报错 errors and 0 warnings potentially fixable with the `--fix` option.

报错 找到package.json文件 找到这个修改成 "lint": "eslint --fix --ext .js,.vue src" 为elsint有配置结尾换行符&#xff0c;最后运行&#xff1a;npm run lint --fix...

以太网PHY布局布线指南

1. 简介 对于以太网布局布线遵循以下准则很重要&#xff0c;因为这将有助于减少信号发射&#xff0c;最大程度地减少噪声&#xff0c;确保器件作用&#xff0c;最大程度地减少泄漏并提高信号质量。 2. PHY设计准则 2.1 DRC错误检查 首先检查DRC规则是否设置正确&#xff0c;然…...