OpenCV —— 矩阵操作
多通道的矩阵 —— 通道是连续的!!
要将指向该数据类型的指针移动到下一通道,我们只需要将其增加1。如果想访问下一个“像素”或者元素集,则需要一定的偏移量
矩阵的step元素是矩阵中行的长度,单位为字节。
#include "cv.h"
#include "highgui.h"
#include <IOSTREAM.H> int main(int argc,char** argv)
{
float vals[]={0.85,-0.46,0.36,1.33}; // 逐点赋值式
// CvMat* mat=cvCreateMat(2,2,CV_32FC1);
// cvZero(mat);
// cvmSet(mat,0,0,1);
// cvmSet( mat, 0, 1, 2 ); // 用于处理浮点型单通道矩阵 等同于 cvSetReal2D(mat,0,1,2)
// cvmSet( mat, 1, 0, 3 );
// cvmSet( mat, 2, 2, 4 ); // 连接现有数组
CvMat mat=cvMat(,,CV_32FC1,vals);
// 不需要cvReleaseMat,因为数据内存分配是由double定义的数组进行的。 cout<<cvGetElemType(&mat)<<endl; // 存储在数组中的元素类型
cout<<cvGetDimSize(&mat,)<<endl; // 矩阵在那个维数上的大小 unsigned e1=CV_MAT_ELEM(mat,float,,); // 简单方法 CV_MAT_ELEM()
float *e2=(float *)CV_MAT_ELEM_PTR(mat,,); // 这些宏在每次调用的时候都重新计算指针 //cvReleaseMat(&mat);
cout<<e1<<endl;
return ;
} float sum(const CvMat* mat)
{
// 累加一个三通道矩阵中的所有元素 float s=0.0f;
for(int row=;row<mat->rows;row++)
{
const float* ptr=(const float*)(mat->data.ptr+row*mat->step); // 行数据元素使用字节计算的
for(int col=;col<mat->cols;col++)
s+=*ptr++;
}
return s;
} void saturate_sv(IplImage* img)
{
for(int y=;y<img->height;y++)
{
uchar* ptr=(uchar*)(img->imageData+y*img->widthStep);
// 当要处理的是矩阵时,必须对偏移进行调整 —— 因为数据指针可能是非字节类型 for(int x=;x<img->width;x++)
{
ptr[*x+]=;
ptr[*x+]=;
}
}
}
OpenCV —— 矩阵操作的更多相关文章
- opencv 矩阵操作
OpenCv矩阵操作 有很多函数有mask,代表掩码,如果某位mask是0,那么对应的src的那一位就不计算,mask要和矩阵/ROI/的大小相等 大多数函数支持ROI,如果图像ROI被设置,那么只处 ...
- opencv矩阵操作
1.初始化矩阵: 方式一.逐点赋值式: CvMat* mat = cvCreateMat( 2, 2, CV_64FC1 ); cvZero( mat ); cvmSet( mat, 0, 0, 1 ...
- opencv矩阵总结
OpenCV 矩阵操作 CvMat 转自:http://hi.baidu.com/xiaoduo170/blog/item/10fe5e3f0fd252e455e72380.html 每回用矩阵都要查 ...
- Opencv Mat矩阵操作注意事项
矩阵操作通常不会进行元素复制,应注意: Mat a=Mat(100,100,CV_32S); Mat b=Mat(100,100,CV_32S); b=a.col(8);//此时并未进行元素赋值,而只 ...
- Linear regression with one variable算法实例讲解(绘制图像,cost_Function ,Gradient Desent, 拟合曲线, 轮廓图绘制)_矩阵操作
%测试数据 'ex1data1.txt', 第一列为 population of City in 10,000s, 第二列为 Profit in $10,000s 1 6.1101,17.592 5. ...
- iOS开发UI篇—Quartz2D使用(矩阵操作)
iOS开发UI篇—Quartz2D使用(矩阵操作) 一.关于矩阵操作 1.画一个四边形 通过设置两个端点(长和宽)来完成一个四边形的绘制. 代码: - (void)drawRect:(CGRect)r ...
- 【iOS】Quartz2D矩阵操作
前面画基本图形时,画四边形是由几条直线拼接成的,现在有更简便的方法. 一.关于矩阵操作 1.画一个四边形 通过设置两个端点(长和宽)来完成一个四边形的绘制. 代码: - (void)drawRect: ...
- MATLAB命令大全和矩阵操作大全
转载自: http://blog.csdn.net/dengjianqiang2011/article/details/8753807 MATLAB矩阵操作大全 一.矩阵的表示在MATLAB中创建矩阵 ...
- Matlab、R向量与矩阵操作 z
已有 1849 次阅读 2012-8-2 15:15 |系统分类:科研笔记|关键词:矩阵 480 window border center Matlab.R向量与矩阵操作 描 述 Matla ...
随机推荐
- Debian9.5 系统配置NFS配置说明
NFS是Network File System的缩写,即网络文件系统.它的主要功能是通过网络(一般是局域网)让不同的主机系统之间可以共享文件或目录.NFS客户端可以通过挂载(mount)的方式将NFS ...
- [笔记-图论]Bellman-Ford
用于求可带负权的单源有向图 优化后复杂度O(nm) 如果图中存在负环,就不存在最小路 这种情况下,就一定会有一个顶点被松弛多于n-1次,Bellman-Ford可直接判断出来 我在网上看到SPFA,发 ...
- 洛谷 P1176 路径计数2
P1176 路径计数2 题目描述 一个N×N的网格,你一开始在(1, 1),即左上角.每次只能移动到下方相邻的格子或者右方相邻的格子,问到达(N, N),即右下角有多少种方法. 但是这个问题太简单了, ...
- struts2怎么返回一个字符串给jsp?(使用json)
我们都知道使用servlet时可以直接用PrintWriter对象的print方法来向页面传送一些字符串(可以是html标签和内容),然后在用RequestDispatcher来转向网页 虽Strut ...
- mysql---union的使用方法
union的作用非常easy用来合并两条sql的结果集 语法: SQL1 UNION SQL2 现有一张价格表 要求:求出价格低于2000和价格高于3000的商品.不能用or和not between- ...
- Using a Plugin
创建hello.world <?xml version="1.0"?> <sdf version="1.4"> <world na ...
- Android实战简易教程-第二十六枪(基于ViewPager实现微信页面切换效果)
1.头部布局文件top.xml: <?xml version="1.0" encoding="utf-8"?> <LinearLayout x ...
- spring xml配置文件根元素(文件头文件)说明
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...
- Gym - 100625E Encoded Coordinates 矩阵快速幂
题意: 一直TLE我也是醉了,,不爽! #include <iostream> #include <cstdio> #include <fstream> #incl ...
- Weka中数据挖掘与机器学习系列之Exploer界面(七)
不多说,直接上干货! Weka的Explorer(探索者)界面,是Weka的主要图形化用户界面,其全部功能都可通过菜单选择或表单填写进行访问.本博客将详细介绍Weka探索者界面的图形化用户界面.预处理 ...