OpenCV矩阵按行求均值
来源:互联网 发布:头戴耳机 隔音 知乎 编辑:程序博客网 时间:2024/06/05 22:56
最近在做一个基于PCA的人脸识别系统JAVA版(系统具体过程后期会更博)时,发现OpenCV在求矩阵平均值时不能够像MATLAB那样得到我需要的结果。我自己在opencv的库上进行了扩展。下面将对两种工具求均值进行分析。
1.MATLAB中的均值方法
>> A=[1 2 3;3 3 6;4 6 8;4 7 7];>> mean(A)ans = 3.0000 4.5000 6.0000>> mean(A,2)ans = 2 4 6 6>>MATLAB中的均值方法为mean(A),其中mean(A)是按照矩阵的列求其平均值,最后形成一个1*N的行向量;mean(A,2)是按照矩阵的行求其平均值最后形成M*1的列向量。在这个PCA的人脸识别系统中我需要按行求训练矩阵的平均值时 MATLAB中就可以直接使用mean(A,2)返回值就是我需要的均值矩阵。
但是在OpenCV中使用这个mean方法求解平均值时得到的结果跟我需要并不一样(本人是OpenCV新人,也许是因为我用的不对,如有知道的大神,请不吝赐教啊)。下面是我扩展的方法
2.扩展OpenCV中的均值方法(JAVA版)
/** * 矩阵按行求均值 * @param mat * @return 返回行均值向量 */ public static Mat horizontalMean(Mat mat){ Mat meanVector=new Mat(); meanVector.create(mat.rows(),1,CvType.CV_64FC1); //遍历mat矩阵 for (int i = 0; i < mat.rows(); i++) { Mat rowRange = mat.rowRange(i,i+1); Scalar mean = Core.mean(rowRange); meanVector.put(i, 0,mean.val[0]);} return meanVector; }这个做法其实很简单,只是将需要求解的行数据拿出来然后调用mean方法即可。当然这种方法在超高维矩阵时效率应该是很低,并不值得推广,本人也只是解燃眉之急。
阅读全文
1 0
- OpenCV矩阵按行求均值
- 均值,相关矩阵,协方差
- OpenCV 计算均值方差
- OpenCV直方图均值化
- OpenCV均值模糊方法
- opencv K均值算法
- 【opencv】均值漂移函数
- opencv均值滤波
- numpy.mean() 计算矩阵均值
- 均值、方差、协方差、协方差矩阵
- OpenCV 均值方差的计算
- OpenCV K均值代码笔记
- Opencv均值滤波-blur函数
- opencv-均值滤波blur解析
- OpenCV - 均值迭代分割
- C/C++ OpenCV均值滤波
- opencv 矩阵
- opencv 矩阵
- 机器学习-线性回归算法(python实现)个人理解
- glide常用方法
- Spring boot(2)-配置详解
- 利用镜面反射让游戏闪耀起来
- (转)当android编译出现com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536错误时的处理
- OpenCV矩阵按行求均值
- 前端提示框的几种实现
- POI框架使用注意事项
- Mybatis一级和二级缓存
- 带箭头的进度流程 css
- (转)Android Studio 错误 com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536
- 二进制转换
- 机器学习期望最大算法:实例解析
- 计算机视觉-高斯滤波