MATLAB
yanzi1225627
南无飒哆喃。三藐三菩陀。俱胝喃。怛侄他。唵。折戾主戾。准提娑婆哈。南无阿弥陀佛。
展开
-
MatLab的meshgrid命令详解
详细解释:help meshgridmeshgrid用于从数组a和b产生网格。生成的网格矩阵A和B大小是相同的。它也可以是更高维的。[A,B]=Meshgrid(a,b)生成size(b)Xsize(a)大小的矩阵A和B。它相当于a从一行重复增加到size(b)行,把b转置成一列再重复增加到size(a)列。因此命令等效于:A=ones(size(b))*a;B=b'*ones原创 2012-05-16 09:59:43 · 9596 阅读 · 0 评论 -
opencv CvScalar解析
一句话:CvScalar就是一个包含四个元素的结构体变量。CvScalar定义可存放1—4个数值的数值,其结构如下。typedef struct CvScalar{ double val[4];}CvScalar;------------------------------------------------CvScalar pt;如果使用的图像是1通道的原创 2012-05-10 21:01:57 · 23498 阅读 · 0 评论 -
Matlab程序 转C++/Opencv 不可不知的17个函数
1、matlab中的imread相当于OpenCV中的cvLoadImage(imageName, CV_LOAD_IAMGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR):读出的图像信息保持了原有图像的信息(包括通道信息和位深信息);rgb2gray相当于cvLoadImage(imageName, CV_LOAD_IMAGE_GRAYSCALE):单通道灰度图;转载 2012-05-10 14:19:39 · 5730 阅读 · 0 评论 -
opencv2.0以后新增C++接口的 Mat矩阵 单行赋值及矩阵合并的问题与实现(苦心研究多天才解决!)
背景:现在有CvMat类型的矩阵n个,每个矩阵都是1*m的行向量,也即每个CvMat代表一个样本的特征向量。现在需要申请一个n*m, 即n行m列的矩阵, 每一行表示一个样本的特征向量,特征向量的维数为m。此问题也就是纠结我多天的矩阵合并问题。 解决方法: CvMat *palm = (CvMat*)cvLoad(path); //得到一个行向量 Mat t原创 2012-06-24 11:20:51 · 12437 阅读 · 5 评论 -
OpenCV学习之CvMat的用法详解及实例
目 录 1.初始化矩阵:. 12.IplImage 到cvMat的转换. 13.cvArr(IplImage或者cvMat)转化为cvMat 14.图像直接操作. 25.cvMat的直接操作. 36.间接访问cvMat 47.修改矩阵的形状——cvReshape的操作. 58.计算色彩距离. 7OpenCV学习之CvMat的用法详解及实例转载 2012-05-11 17:12:34 · 21883 阅读 · 0 评论 -
OpenCV矩阵操作(二)2010-06-09 19:59OpenCV矩阵操作(二)
OpenCV矩阵操作(二)#include "stdafx.h"/*功能:说明矩阵的一些操作方法*/#include "cv.h"//该头文件包含了#include "cxcore.h"#include "highgui.h"#include void PrintMat(CvMat *A); // 显示矩阵void GenRandn(CvMat *arr,转载 2012-05-10 21:00:07 · 5512 阅读 · 0 评论 -
Matlab读取avi视频并播放 你必须要知道的
Matlab进行视频分析,首先要能读取单帧图片,然后对图片进行处理分析。尽管这个功能很简单,可是在不同电脑上第一次操作起来,我相信大多数都不能正确播放。(环境:xp+Matlab2008a)首先看源码:clc;clear;%% this to read avi by using mmread to get every framevideo = mmreader('D:\My D原创 2012-12-08 17:48:54 · 53659 阅读 · 11 评论 -
Matlab图像处理:误拒率、误识率意义,计算等错误率的Matlab源码(网络首发)
图像处理中经常有误拒率和误识率两个概念,今天简介下。 误拒率,就是错误拒绝的意思,指的类内匹配。如果有10个志愿者的样本,每个志愿者20幅样本。那么相对于类内测试,比如对1号志愿者,同一类的这20幅图片之间,互相匹配,假设1:1的匹配,互相不重复能够进行(20*19)/2次。如果10个志愿者都进行这么测试,就是10*(20*19)/2次。这是总的类内匹配次数。预设定阈值为TH,如果匹配值t原创 2013-05-11 18:54:40 · 20827 阅读 · 13 评论 -
Matlab:任意矩阵计算分布密度(海明距离的分布密度)
如何画分布密度?如下图所示:x轴是海明距离,y轴是分布密度。我写一个函数,输入为海明距离hd。function out = YanMiDu(hd)xMin = min(hd);xMax = max(hd);x = linspace(xMin, xMax, 20); %将最大值 最小值区间分成19个小段y = hist(hd,x); %计算各个区间,hd出现的次数y = y/length(hd)原创 2013-05-11 15:55:56 · 8090 阅读 · 0 评论 -
Matlab图像处理:类内、类间测试的次数控制
现在假设,有10个人的人脸,每个人有10幅人脸样本,一共100幅人脸。类内测试: 如果采用1:1认证的方式,那么类内,也就是同类进行认证测试,每个人最多可以测试(9+8+7...1)=(9*(9+1))/2. 可以这么理解,第一个人脸和后面9个依次认证依次,然后第二个人脸和后面8个依次认证,最后求和。【等差数列的求和:(n*(n+1)*d)/2 】 因为是10个人,所以类内一共可以测试1原创 2013-05-14 20:37:37 · 3505 阅读 · 0 评论 -
opencv CvMat矩阵学习
1.初始化矩阵:方式一、逐点赋值式:CvMat* mat = cvCreateMat( 2, 2, CV_64FC1 );cvZero( mat );cvmSet( mat, 0, 0, 1 );cvmSet( mat, 0, 1, 2 );cvmSet( mat, 1, 0, 3 );cvmSet( mat, 2, 2, 4 );cvReleaseMat(转载 2012-05-15 17:32:49 · 2471 阅读 · 0 评论 -
基于Opencv的 矩阵点乘
matlab中的两矩阵点乘 .* 相当于OpenCV中的cvMul函数。void cvMul(const CvArr* src1,const CvArr* src2,CvArr* dst,double scale=1);//两矩阵元素之间的简单乘法原创 2012-05-18 09:28:54 · 9445 阅读 · 1 评论 -
c++ for循环中,如何改变字符串变量里的部分值 使之于i 和j 相同步变化?????(即循环用cvLoadImage的path自动改变)
在工程中,很多时候需要读取文件,而文件名filename或者path是有一定规律的。这就要求当循环时,i发生变化,filename里的一部分也随着变化。在matlab里,要实现这个功能很方便,可以用int2str(i)实现,将整形的i转成字符型。 那么在c或者c++下呢??最初用itoa,但我在linux下用不了这个函数。所以放弃了。看了很多资料,也没有直接回答的。摸索了一天,终于解决。我原创 2012-05-26 16:44:06 · 5403 阅读 · 2 评论 -
Matlab画平滑曲线的两种方法( 拟合或插值后再用plot即可)
自然状态下,用plot画的是折线,而不是平滑曲线。有两种方法可以画平滑曲线,第一种是拟合的方法,第二种是用spcrv,其实原理应该都一样就是插值。下面是源程序,大家可以根据需要自行选择,更改拟合的参数。clc,clear;a = 1:1:6; %横坐标b = [8.0 9.0 10.0 15.0 35.0 40.0]; %纵坐标plot(a, b, 'b'); %自然状态原创 2012-12-02 11:15:49 · 203165 阅读 · 6 评论 -
使用opencv的cvConvertScale让矩阵除以一个常数 结果总为0的 调试心得
正确写法:cvConvertScale(sumPalm, mean, 0.2, 0);错误写法:这里,如果您写成cvConvertScale(sumPalm, mean, 1/5, 0);, 则mean = sumPalm*0+0这里1/5会当成0来处理。 另外,在访问CvMat数据时,比如用cvmGet 和 cvmSet ,矩阵的索引是从0、0开始的。原创 2012-05-28 16:58:49 · 7052 阅读 · 2 评论 -
opencv 矩阵与一个常数相乘的 两种实现方法
第一种:参考http://www.opencv.org.cn/index.php/Cxcore%E6%95%B0%E7%BB%84%E6%93%8D%E4%BD%9C#ConvertScale用函数cvConvertScale();void cvConvertScale( const CvArr* src, CvArr* dst, double scale=1, double shift=原创 2012-05-17 10:21:39 · 21022 阅读 · 1 评论 -
基于Opencv的矩阵三角函数封装 cvAtan2Mat cvSinMat cvAtan2Mat功能等于matlab里的atan2 sin cos
Opencv中没有提供对矩阵进行操作的三角函数,我封装了三个,其他三角函数可以仿照此进行封装。 头文件中要包含#include CvMat* cvAtan2Mat(CvMat *a, CvMat *b){ int rows = a->rows; int cols = a->cols; CvMat *out = cvCreateMat(rows,原创 2012-05-16 17:39:23 · 8823 阅读 · 1 评论 -
opencv图像处理基本操作
1. 矩阵数据类型通用矩阵数据类型:CV_(S|U|F)C其中,S表示带符号整数;U表示无符号整数;F表示浮点数;例如:CV_8UC1 表示8位无符号单通道矩阵; CV_32FC2 表示32位浮点数双通道矩阵;2. 图像数据类型通用图像数据类型为: IPL_DEPTH_(S|U|F)如:IPL_DEPTH_8U 表示8位无符号整数图像;转载 2012-05-11 11:20:17 · 15267 阅读 · 0 评论 -
opencv下如何打印出一个三通道或者二通道矩阵
打印一个3通道矩阵:inline void cv3DoubleMatPrint( const CvMat* mat ){int i, j;for( i = 0; i rows; i++ ){for( j = 0; j cols; j++ ){CvScalar scal = cvGet2D( mat, i, j );printf( "(%f,%f,%f) ", s原创 2012-05-15 17:32:00 · 4065 阅读 · 0 评论 -
opencv 旋转图像函数实现 等同于matlab里的rotate() (注:旋转后图像变大,超出部分填为黑色)
注:clockwise=true 顺时针旋转 clockwise=false 逆时针旋转IplImage* rotateImage(IplImage* src, int angle, bool clockwise) { angle = abs(angle) % 180; if (angle > 90) {原创 2012-05-11 17:05:45 · 6783 阅读 · 0 评论 -
Matlab任意正六边形随机撒点 实现-----------通信仿真必备
任意正六边形随机撒点 是通信仿真里经常用到的,无奈网上资料很少,参照http://www.ilovematlab.cn/thread-136761-1-1.html,我又苦思敏想里一下午,这个问题才得以完美解决。废话不多说了,先来看看怎么画正六边形。theta = linspace(0,2*pi,7);plot(cos(theta),sin(theta),'g-');原创 2012-08-09 22:02:21 · 22188 阅读 · 14 评论 -
Mac Sierra Matlab2016a中文乱码解决
简介本文记录Mac Sierra 10.12.2上Matlab2016a中文乱码的解决方法。解决方法相信大多数人都是从知乎上修改lcdata.xml,事实证明在Mac Sierra 10.12.2上不管你咋折腾都没用。正确的方法是安装Matlab官网给出的补丁包即可。希望更多人不要像我一样走冤枉路了。。。原创 2017-01-07 16:37:20 · 11948 阅读 · 6 评论