IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> C++ OpenCV(二):Mat 运算 -> 正文阅读

[人工智能]C++ OpenCV(二):Mat 运算

逻辑运算

非运算

公式

dst ( I ) = ? src ( I ) \texttt{dst} (I) = \neg \texttt{src} (I) dst(I)=?src(I)

API

CV_EXPORTS_W void bitwise_not(InputArray src, OutputArray dst,
                              InputArray mask = noArray());
  • 参数一:src,输入图像矩阵;
  • 参数二:dst,输出图像矩阵,大小和类型与输入相同;
  • 参数三:mask,8位单通道掩码。

示例

Mat mask = Mat::zeros(512, 512, CV_8UC1);
Rect rect = Rect(100, 100, 200, 200);
mask(rect) = Scalar(1);
Mat bitwiseNot;
bitwise_not(left, bitwiseNot, mask);
imshow("bitwise_not", bitwiseNot);

运行效果

bitwise_not

与运算

公式

  • src1src2是两个大小相同的图像矩阵

dst ( I ) = src1 ( I ) ∧ src2 ( I ) if ? mask ( I ) ≠ 0 \texttt{dst} (I) = \texttt{src1} (I) \wedge \texttt{src2} (I) \quad \texttt{if mask} (I) \ne0 dst(I)=src1(I)src2(I)if?mask(I)?=0

  • src1是图像矩阵,src2 是 Scalar

dst ( I ) = src1 ( I ) ∧ src2 if ? mask ( I ) ≠ 0 \texttt{dst} (I) = \texttt{src1} (I) \wedge \texttt{src2} \quad \texttt{if mask} (I) \ne0 dst(I)=src1(I)src2if?mask(I)?=0

  • src1是 Scalar ,src2是图像矩阵

dst ( I ) = src1 ∧ src2 ( I ) if ? mask ( I ) ≠ 0 \texttt{dst} (I) = \texttt{src1} \wedge \texttt{src2} (I) \quad \texttt{if mask} (I) \ne0 dst(I)=src1src2(I)if?mask(I)?=0

API

CV_EXPORTS_W void bitwise_and(InputArray src1, InputArray src2,
                              OutputArray dst, InputArray mask = noArray());
  • 参数一:src1,第一个输入的图像矩阵或者 Scalar;
  • 参数二:src2,第二个输入的图像矩阵或者 Scalar;
  • 参数三:dst,输出图像矩阵,大小和类型与输入相同;
  • 参数四:mask,8位单通道掩码。

示例

Mat bitwiseAnd;
Scalar scalar = Scalar(255,255);
bitwise_and(left, scalar, bitwiseAnd);
imshow("bitwise_and", bitwiseAnd);

运行效果

bitwise_and

或运算

公式

  • src1src2是两个大小相同的图像矩阵

dst ( I ) = src1 ( I ) ∨ src2 ( I ) if ? mask ( I ) ≠ 0 \texttt{dst} (I) = \texttt{src1} (I) \vee \texttt{src2} (I) \quad \texttt{if mask} (I) \ne0 dst(I)=src1(I)src2(I)if?mask(I)?=0

  • src1是图像矩阵,src2 是 Scalar

dst ( I ) = src1 ( I ) ∨ src2 if ? mask ( I ) ≠ 0 \texttt{dst} (I) = \texttt{src1} (I) \vee \texttt{src2} \quad \texttt{if mask} (I) \ne0 dst(I)=src1(I)src2if?mask(I)?=0

  • src1是 Scalar ,src2是图像矩阵

dst ( I ) = src1 ∨ src2 ( I ) if ? mask ( I ) ≠ 0 \texttt{dst} (I) = \texttt{src1} \vee \texttt{src2} (I) \quad \texttt{if mask} (I) \ne0 dst(I)=src1src2(I)if?mask(I)?=0

API

CV_EXPORTS_W void bitwise_or(InputArray src1, InputArray src2,
                              OutputArray dst, InputArray mask = noArray());
  • 参数一:src1,第一个输入的图像矩阵或者 Scalar;
  • 参数二:src2,第二个输入的图像矩阵或者 Scalar
  • 参数三:dst,输出图像矩阵,大小和类型与输入相同;
  • 参数四:mask,8位单通道掩码。

示例

Mat bitwiseOr;
Scalar scalarOr = Scalar(255);
bitwise_or(left, scalarOr, bitwiseOr);
imshow("bitwise_or", bitwiseOr);

运行效果

bitwise_or

异或运算

公式

  • src1src2是两个大小相同的图像矩阵

dst ( I ) = src1 ( I ) ⊕ src2 ( I ) if ? mask ( I ) ≠ 0 \texttt{dst} (I) = \texttt{src1} (I) \oplus \texttt{src2} (I) \quad \texttt{if mask} (I) \ne0 dst(I)=src1(I)src2(I)if?mask(I)?=0

  • src1是图像矩阵,src2 是 Scalar

dst ( I ) = src1 ( I ) ⊕ src2 if ? mask ( I ) ≠ 0 \texttt{dst} (I) = \texttt{src1} (I) \oplus \texttt{src2} \quad \texttt{if mask} (I) \ne0 dst(I)=src1(I)src2if?mask(I)?=0

  • src1是 Scalar ,src2是图像矩阵

dst ( I ) = src1 ⊕ src2 ( I ) if ? mask ( I ) ≠ 0 \texttt{dst} (I) = \texttt{src1} \oplus \texttt{src2} (I) \quad \texttt{if mask} (I) \ne0 dst(I)=src1src2(I)if?mask(I)?=0

API

CV_EXPORTS_W void bitwise_xor(InputArray src1, InputArray src2,
                              OutputArray dst, InputArray mask = noArray());
  • 参数一:src1,第一个输入的图像矩阵或者 Scalar;
  • 参数二:src2,第二个输入的图像矩阵或者 Scalar
  • 参数三:dst,输出图像矩阵,大小和类型与输入相同;
  • 参数四:mask,8位单通道掩码。

示例

Mat bitwiseXor;
Scalar scalarXor = Scalar(255, 255);
bitwise_xor(left, scalarXor, bitwiseXor);
imshow("bitwise_xor", bitwiseXor);

运行效果

bitwise_xor

算术运算

图像矩阵的 addsubtractmultiplydivide 四则运算是针对矩阵内对应元素的操作,并非矩阵的加减乘除。

公式

加法

  • 输入为两个大小和通道数相同的图像矩阵

dst ( I ) = saturate ( src1 ( I ) + src2 ( I ) ) if ? mask ( I ) ≠ 0 \texttt{dst}(I) = \texttt{saturate} ( \texttt{src1}(I) + \texttt{src2}(I)) \quad \texttt{if mask}(I) \ne0 \\ dst(I)=saturate(src1(I)+src2(I))if?mask(I)?=0

  • src1为图像矩阵,src2为 Scalar

dst ( I ) = saturate ( src1 ( I ) + src2 ) if ? mask ( I ) ≠ 0 \texttt{dst}(I) = \texttt{saturate} ( \texttt{src1}(I) + \texttt{src2} ) \quad \texttt{if mask}(I) \ne0 \\ dst(I)=saturate(src1(I)+src2)if?mask(I)?=0

  • src1为 Scalar,src2为 图像矩阵

dst ( I ) = saturate ( src1 + src2 ( I ) ) if ? mask ( I ) ≠ 0 \texttt{dst}(I) = \texttt{saturate} ( \texttt{src1} + \texttt{src2}(I) ) \quad \texttt{if mask}(I) \ne0 \\ dst(I)=saturate(src1+src2(I))if?mask(I)?=0

减法

  • 输入为两个大小和通道数相同的图像矩阵

dst ( I ) = saturate ( src1 ( I ) ? src2 ( I ) ) if ? mask ( I ) ≠ 0 \texttt{dst}(I) = \texttt{saturate} ( \texttt{src1}(I) - \texttt{src2}(I)) \quad \texttt{if mask}(I) \ne0 \\ dst(I)=saturate(src1(I)?src2(I))if?mask(I)?=0

  • src1为图像矩阵,src2为 Scalar

dst ( I ) = saturate ( src1 ( I ) ? src2 ) if ? mask ( I ) ≠ 0 \texttt{dst}(I) = \texttt{saturate} ( \texttt{src1}(I) - \texttt{src2} ) \quad \texttt{if mask}(I) \ne0 \\ dst(I)=saturate(src1(I)?src2)if?mask(I)?=0

  • src1为 Scalar,src2为图像矩阵

dst ( I ) = saturate ( src1 ? src2 ( I ) ) if ? mask ( I ) ≠ 0 \texttt{dst}(I) = \texttt{saturate} ( \texttt{src1} - \texttt{src2}(I) ) \quad \texttt{if mask}(I) \ne0 \\ dst(I)=saturate(src1?src2(I))if?mask(I)?=0

  • SubRS 情况下标量和数组的反向差异

dst ( I ) = saturate ( src2 ? src1 ( I ) ) if ? mask ( I ) ≠ 0 \texttt{dst}(I) = \texttt{saturate} ( \texttt{src2} - \texttt{src1}(I) ) \quad \texttt{if mask}(I) \ne0 dst(I)=saturate(src2?src1(I))if?mask(I)?=0

乘法

dst ( I ) = saturate ( scale ? src1 ( I ) ? src2 ( I ) ) \texttt{dst} (I)= \texttt{saturate} ( \texttt{scale} \cdot \texttt{src1} (I) \cdot \texttt{src2} (I)) dst(I)=saturate(scale?src1(I)?src2(I))

除法

dst(I) ? = ? saturate(src1(I)*scale/src2(I)) \texttt{dst(I) = saturate(src1(I)*scale/src2(I))} \\ dst(I)?=?saturate(src1(I)*scale/src2(I))

dst(I) ? = ? saturate(scale/src2(I)) \texttt{dst(I) = saturate(scale/src2(I))} dst(I)?=?saturate(scale/src2(I))

API

CV_EXPORTS_W void add(InputArray src1, InputArray src2, OutputArray dst,                      InputArray mask = noArray(), int dtype = -1);
CV_EXPORTS_W void subtract(InputArray src1, InputArray src2, OutputArray dst,                           InputArray mask = noArray(), int dtype = -1);
CV_EXPORTS_W void multiply(InputArray src1, InputArray src2,                           OutputArray dst, double scale = 1, int dtype = -1);
CV_EXPORTS_W void divide(InputArray src1, InputArray src2, OutputArray dst,                         double scale = 1, int dtype = -1);
  • 参数一:src1,第一个输入的图像矩阵或者 Scalar;
  • 参数二:src2,第二个输入的图像矩阵或者 Scalar
  • 参数三:dst,输出图像矩阵,大小和类型与输入相同;
  • 参数四:mask,8位单通道掩码;
  • 参数五:scale,缩放倍数;
  • 参数六:dtype,输出矩阵的图像深度。

示例

int8_t b[6] = {8, 9, 10, 11, 12, 13};int8_t c[6] = {6, 7, 5, 4, 3, 9};Mat first = Mat(3, 2, CV_8UC1, b);Mat second = Mat(3, 2, CV_8UC1, c);Mat third = Mat(2, 3, CV_8UC1, c);// 算数运算Mat addResult;add(first, second, addResult);cout << "add" << endl << format(addResult, Formatter::FMT_C) << endl << endl;Mat subtractResult;subtract(first, second, subtractResult);cout << "subtract" << endl << format(subtractResult, Formatter::FMT_C) << endl << endl;Mat multiplyResult;multiply(first, first, multiplyResult);cout << "multiply" << endl << format(multiplyResult, Formatter::FMT_C) << endl << endl;Mat divideResult;divide(first, second, divideResult);cout << "divide" << endl << format(divideResult, Formatter::FMT_C) << endl << endl;

运行效果

算术加减乘除

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-09-18 10:08:28  更:2021-09-18 10:10:36 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 14:38:54-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码