opencv矩阵的基本运算
来源:互联网 发布:notepad 配置php 编辑:程序博客网 时间:2024/06/05 04:13
opencv矩阵的基本运算
测试了基本的矩阵运算。快速掌握opencv矩阵操作
#pragma once#include <opencv2\opencv.hpp>using namespace cv;template <class T>void o(int i, T mat){ std::cout << i << ":------------------\n" << mat << "\n"; }void test(){ float data[4] = {1, 2, 3, 4}; Mat A = Mat::eye(2, 2, CV_32FC1); Mat B = Mat::ones(2, 2, CV_32FC1); Mat C = Mat::zeros(2, 2, CV_32FC1); Mat D = Mat::ones(3, 1, CV_32FC1); Mat E = Mat::ones(3, 1, CV_32FC1); Mat F = Mat::zeros(2, 2, CV_8SC1); Mat G =(Mat_<float>(2,2)<<0,-1,2,3); o(0, A + B + C); //矩阵加 o(1, A - B); //矩阵减 o(2, -B);//矩阵变符 o(3, 2 * B); //数矩阵乘 o(4, 99 - B); //数减矩阵 o(5, C * B); //矩阵乘法 o(6, A / B); //矩阵对应点除 o(7, 1 / B); //数除矩阵 o(8, D.cross(E)); //向量叉乘 o(9, A.dot(B)); //矩阵点乘 o(10, D.dot(E)); //向量点乘[double] A.convertTo(F, CV_8SC1); //类型转换 o(11, F); A = Mat(2, 2, CV_32FC1, data, 2 * sizeof(float)); B = Mat(2, 2, CV_32FC1, data, 8); //8为每行字节数 o(12, A.t()); //矩阵转置 flip(A, B, 0); o(13, B); //UD翻转 flip(A, B, -1); o(14, B); //LR + UD翻转 flip(A, B, 1); o(15, B); //LR翻转 cv::sqrt(A, B); o(16, B); //开方[double, float] A.resize(4, Scalar(1)); o(17, A);//矩阵变长 E.resize(7, Scalar(0)); o(18, E);//向量变长 o(19, sum(A)); //各通道求和 o(20, mean(A)); //各通道求平均 Mat I = A.col(1).clone(); o(21, I); // 复制第二列 o(22, determinant(C)); // 行列式 o(23, countNonZero(C)); // 非零个数 o(24, norm(B)); //矩阵的模 o(25, trace(B)); //矩阵的迹 transpose(B, C); o(26, C); //转置 exp(B, C); o(27, C); //指数运算 log(B, C); o(28, C); //对数运算 randu(C, Scalar::all(0), Scalar::all(255)); o(29, C); //随机 o(30, C.inv()); //求逆inv(int method=DECOMP_LU) o(31, C.inv(cv::DECOMP_CHOLESKY)); //求逆DECOMP_CHOLESKY(专门用于对称,速度是LU的2倍) abs(C); o(32, C); //绝对值 o(33, B < C); o(34, B != 1); //结果是CV_8UC1的mask的0或255 o(35, B | C); o(36, ~B); o(37, B & C); //逻辑运算 o(38, min(C, B)); o(39, min(A, 1)); o(40, max(C, B)); o(41, max(A, 1)); A.push_back(B); o(42, A); A.pop_back(A.rows/2); o(43, A); C.setTo(Scalar(20)); o(44, C); o(45, G); o(46, A.total()); o(47, A.elemSize()); o(48, A.elemSize1()); //返回元素的大小:CV_16SC3-->3*sizeof(short)-->6; //返回元素一个通道的大小CV_16SC3-->sizeof(short)-->2 setIdentity(G, Scalar(2)); o(49, G); normalize(G, G); o(50, G); //归一化}
输出结果
0:------------------[2, 1; 1, 2]1:------------------[0, -1; -1, 0]2:------------------[-1, -1; -1, -1]3:------------------[2, 2; 2, 2]4:------------------[98, 98; 98, 98]5:------------------[0, 0; 0, 0]6:------------------[1, 0; 0, 1]7:------------------[1, 1; 1, 1]8:------------------[0; 0; 0]9:------------------210:------------------311:------------------[1, 0; 0, 1]12:------------------[1, 3; 2, 4]13:------------------[3, 4; 1, 2]14:------------------[2, 1; 4, 3]15:------------------[1, 2; 3, 4]16:------------------[1, 1.4142135; 1.7320508, 2]17:------------------[1, 1.4142135; 1.7320508, 2; 1, 1; 1, 1]18:------------------[1; 1; 1; 0; 0; 0; 0]19:------------------[10.1463, 0, 0, 0]20:------------------[1.26828, 0, 0, 0]21:------------------[1.4142135; 2; 1; 1]22:------------------023:------------------024:------------------3.1622825:------------------[3, 0, 0, 0]26:------------------[1, 1.7320508; 1.4142135, 2]27:------------------[2.7182817, 4.1132503; 5.6522336, 7.3890557]28:------------------[0, 0.34657359; 0.54930609, 0.69314718]29:------------------[135.22211, 50.811096; 102.27016, 207.6682]30:------------------[0.0090744747, -0.0022202919; -0.0044688978, 0.0059087989]31:------------------[0.0090744747, -0.0022202919; -0.0044688978, 0.0059087989]32:------------------[135.22211, 50.811096; 102.27016, 207.6682]33:------------------[255, 255; 255, 255]34:------------------[0, 255; 255, 255]35:------------------[1.#QNAN, 1.#QNAN; 1.#QNAN, 207.6682]36:------------------[-3.9999998, -3.1715727; -2.5358982, -1.9999999]37:------------------[3.7615819e-037, 9.4787326e-038; 3.0049906e-037, 2]38:------------------[1, 1.4142135; 1.7320508, 2]39:------------------[1, 1; 1, 1; 1, 1; 1, 1]40:------------------[135.22211, 50.811096; 102.27016, 207.6682]41:------------------[1, 1.4142135; 1.7320508, 2; 1, 1; 1, 1]42:------------------[1, 1.4142135; 1.7320508, 2; 1, 1; 1, 1; 1, 1.4142135; 1.7320508, 2]43:------------------[1, 1.4142135; 1.7320508, 2; 1, 1]44:------------------[20, 20; 20, 20]45:------------------[0, -1; 2, 3]46:------------------647:------------------448:------------------449:------------------[2, 0; 0, 2]50:------------------[0.70710677, 0; 0, 0.70710677]
0 0
- opencv矩阵的基本运算
- OpenCV操作基本矩阵运算
- opencv的矩阵运算
- Opencv Mat 矩阵的运算
- 稀疏矩阵的基本运算
- 稀疏矩阵的基本运算
- zz:基于 OpenCV 的矩阵运算 (CvMat)
- opencv矩阵运算
- OpenCV矩阵运算
- OpenCV矩阵运算
- OpenCV矩阵运算
- OpenCV矩阵运算
- OpenCV矩阵运算
- OpenCV矩阵运算
- OpenCV矩阵运算
- OpenCV矩阵运算
- opencv矩阵运算
- OpenCV矩阵运算
- JavaScript重点总结
- Linux 精准获取进程pid
- mysql必知必会 - 进入mysql后了解全局(2)
- 【android源码】编译android M源码、刷机,开启源码学习的First Step
- springMvc&Mysql上传到远程服务器连接超时问题
- opencv矩阵的基本运算
- 【2016-12-3】C++控制台第一个程序示例
- ssh登录一段时间后断开的解决方案
- Android安全使用HTTPS
- 用JavaScript实现form表单的数据提交--使用正则表达式对数据判断
- hadoop 1.2.0集群搭建
- ubuntu16.04下 qt5的中文输入问题
- 地14周练习-1 数组大折腾(3)
- 装饰模式(结构类)