opencv 笔记(二)
来源:互联网 发布:java软件编程培训中心 编辑:程序博客网 时间:2024/06/06 01:45
Mat 转变成IplImage* 类型
Mat srcImg; // Mat type variable .IplImage *dst = NULL; // Initialize by NULL.srcImg = imread(imagePath); // read image; dst = &(IplImage(srcImg)); // Mat to IplImage Pointer dst = NULL; // set as NULL.
Mat I;IplImage* pI = &I.operator IplImage();CvMat* mI = &I.operator CvMat();
高斯平滑
GaussianBlur( image, out, Size( 3, 3 ), 0, 0 );
均值滤波
Blur( image, out, Size( 3, 3 ) );
两个矩阵合并
有的时候我们需要将几个矩阵按行或者按列进行合并成一个大矩阵,这在Matlab里面非常的简单,但在OpenCV里面并没有这样的方法,现在我在OpenCV的源码里面发现合并矩阵的方法,分享给大家。
A = [1 2 3 4]; B = [2 3 4 5]; C = [A;B];
上面的是Matlab语言的矩阵合并,非常的简洁简单。接下来我给出OpenCV的两个矩阵的合并代码.
Mat mergeRows(Mat A, Mat B){ CV_ASSERT(A.cols == B.cols&&A.type() == B.type()); int totalRows = A.rows + B.rows; Mat mergedDescriptors(totalRows, A.cols, A.type()); Mat submat = mergedDescriptors.rowRange(0, A.rows); A.copyTo(submat); submat = mergedDescriptors.rowRange(A.rows, totalRows); B.copyTo(submat); return mergedDescriptors;}
OpenCV中与matlab中相对应的函数(可以自行对应到2.0或3.0版本)
1、matlab中的imread相当于OpenCV中的imread
2、matlab中的zeros函数相当于OpenCV中的cvSetZero函数。
3、matlab中的两矩阵点乘 .* 相当于OpenCV中的cvMul函数。
4、matlab中的两矩阵点除 ./ 相当于OpenCV中的cvDiv函数。
5、matlab中的两矩阵相加 + 相当于OpenCV中的cvAdd函数。
6、matlab中的两矩阵相减 - 相当于OpenCV中的cvSub函数。
7、matlab中的矩阵和一个常量相加 A + a 相当于OpenCV中的cvAddS函数 cvAdds(matA, cvScalar(a), matB)。
8、matlab中的矩阵和一个常量相减 A - a 相当于OpenCV中的cvSubS函数 cvSubS(matA, cvScalar(a), matB)。
9、matlab中的给矩阵赋一初值 A(:, :) = a 相当于OpenCV中的cvSet函数 cvSet(matA, cvScalar(a))。
10、matlab中取矩阵某一部分赋给另一矩阵 A = B(i : j, m : n) 相当于OpenCV中的cvGetSubRect 函数,cvGetSubRect(mat1, mat2, rect)。
11、matlab中取矩阵最大值、最小值 max(max(A))、min(min(A)) 相当于OpenCV中的cvMinMaxLoc函数 cvMinMaxLoc(A, minloc, maxloc)。
12、matlab中两矩阵相乘 A * B 相当于OpenCV中的cvMatMul函数,cvMatMul(A, B, C)。
13、matlab中计算两个三维向量的叉积 C = cross(A, B) 相当于OpenCV中的cvCrossProduct函数,cvCrossProduct(A, B, C)。
14、matlab中计算向量的范数 c = norm(A) 相当于OpenCV中的cvNorm函数,c = cvNorm(A)。
下面是matlab中的定义,对应需要考虑OpenCV中的实现
1、如果A为矩阵n=norm(A) 返回A的最大奇异值,即max(svd(A))n=norm(A,p) 根据p的不同,返回不同的值 p 返回值 1 返回A中最大一列和,即max(sum(abs(A))) 2 返回A的最大奇异值,和n=norm(A)用法一样 inf 返回A中最大一行和,即max(sum(abs(A’))) ‘fro’ A和A‘的积的对角线和的平方根,即sqrt(sum(diag(A'*A)))2、如果A为向量norm(A,p)返回向量A的p范数。即返回 sum(abs(A).^p)^(1/p),对任意 1<p<+∞.norm(A)返回向量A的2范数,即等价于norm(A,2)。norm(A,inf) 返回max(abs(A))norm(A,-inf) 返回min(abs(A))
15、matlab中求二维矩阵的奇异值分解 [u s v] = svd(A, 0) 相当于OpenCV中的cvSVD函数 cvSVD(A, s, u, v)。
16、matlab中两矩阵左除 c = a / b 相当于OpenCV中的cvInvert、cvMatMul两函数即:cvInvert(a, d); cvMatMul(d, b, c)。
17、matlab中的求矩阵的逆inv函数 A = inv(B) 相当于OpenCV中的cvInvert函数:cvInvert(B,A)。
18、matlab中的矩阵除以一个数A/a相当于OpenCV中的函数cvConvertScale
19、matlab中的求和函数sum相当于OpenCV中的函数cvSum
20、matlab中将world coordinate中的点矩阵X变到camera coordinate中的变换R*X+T可以用函数cvMatMulAdd实现,但需注意,translation是一个3行N列的矩阵。
21、matlab中矩阵乘一个常数可用cvConvertScale实现。
- opencv 笔记(二)
- OpenCV笔记(二)
- OpenCv笔记连载(二)
- OpenCV学习笔记(二)
- OpenCv学习笔记(二)
- opencv学习笔记(二)
- opencv学习笔记(二)
- OpenCV学习笔记(二)
- opencv学习笔记(二)
- opencv 学习笔记(二)
- OpenCV学习笔记(二)
- OpenCV入门笔记(二)
- OpenCV学习笔记系列(二)
- OpenCV 2.2 的学习笔记(二)
- OpenCv学习笔记(二):图像模糊
- OPENCV学习笔记(二) 聚合函数
- OpenCV学习笔记二(scan images)
- OpenCV学习笔记(二):存取像素
- 单文档应用程序中,将基类CView转换为继承CListView
- MATLAB实验作业答案
- android数据库的创建
- C++ 常引用 const int &a 的作用和区别
- linux系统函数学习
- opencv 笔记(二)
- baidu经纬度坐标与google经纬度坐标都转换 .
- Struts2文件上传
- asp.net各种类型视频播放代码
- 迪杰斯特拉算法 计算两点之间最短距离
- Android开发对话框之多选对话框的实现 [此博文包含图片]
- java中return和finally执行顺序
- 数据结构:栈的典型应用之一:行编辑(C++)
- Mahout并行基于物品的协同过滤算法源码分析(Distributed item-based CF)