多通道的矩阵 —— 通道是连续的!!

要将指向该数据类型的指针移动到下一通道,我们只需要将其增加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 —— 矩阵操作的更多相关文章

  1. opencv 矩阵操作

    OpenCv矩阵操作 有很多函数有mask,代表掩码,如果某位mask是0,那么对应的src的那一位就不计算,mask要和矩阵/ROI/的大小相等 大多数函数支持ROI,如果图像ROI被设置,那么只处 ...

  2. opencv矩阵操作

    1.初始化矩阵: 方式一.逐点赋值式: CvMat* mat = cvCreateMat( 2, 2, CV_64FC1 ); cvZero( mat ); cvmSet( mat, 0, 0, 1 ...

  3. opencv矩阵总结

    OpenCV 矩阵操作 CvMat 转自:http://hi.baidu.com/xiaoduo170/blog/item/10fe5e3f0fd252e455e72380.html 每回用矩阵都要查 ...

  4. Opencv Mat矩阵操作注意事项

    矩阵操作通常不会进行元素复制,应注意: Mat a=Mat(100,100,CV_32S); Mat b=Mat(100,100,CV_32S); b=a.col(8);//此时并未进行元素赋值,而只 ...

  5. 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. ...

  6. iOS开发UI篇—Quartz2D使用(矩阵操作)

    iOS开发UI篇—Quartz2D使用(矩阵操作) 一.关于矩阵操作 1.画一个四边形 通过设置两个端点(长和宽)来完成一个四边形的绘制. 代码: - (void)drawRect:(CGRect)r ...

  7. 【iOS】Quartz2D矩阵操作

    前面画基本图形时,画四边形是由几条直线拼接成的,现在有更简便的方法. 一.关于矩阵操作 1.画一个四边形 通过设置两个端点(长和宽)来完成一个四边形的绘制. 代码: - (void)drawRect: ...

  8. MATLAB命令大全和矩阵操作大全

    转载自: http://blog.csdn.net/dengjianqiang2011/article/details/8753807 MATLAB矩阵操作大全 一.矩阵的表示在MATLAB中创建矩阵 ...

  9. Matlab、R向量与矩阵操作 z

    已有 1849 次阅读 2012-8-2 15:15 |系统分类:科研笔记|关键词:矩阵 480 window border center Matlab.R向量与矩阵操作   描    述 Matla ...

随机推荐

  1. PHP接收GET中文参数乱码的原因及解决方案

    方案1: $str = iconv("gb2312","utf-8",$str); 方案2: mb_convert_encoding($str, "u ...

  2. Linux cp 复制命令

    Linux 的cp命令 功能: 复制文件或目录说明: cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中.若 ...

  3. UI Framework-1: Aura Multi-desktop

    Multi-desktop Aura now makes it possible for the same browser process to render to multiple desktops ...

  4. caffe(10) 命令行解析

    caffe的运行提供三种接口:c++接口(命令行).python接口和matlab接口.本文先对命令行进行解析,后续会依次介绍其它两个接口. caffe的c++主程序(caffe.cpp)放在根目录下 ...

  5. 【Git 五】TortoiseGit中SSH密钥的配置方法

    注意:我用的 TortoiseGit 版本是 2.6 的. 一.找到安装目录下的 bin 目录 二.点击 puttygen.exe 三.点击 Generate 生成完毕之后,将 public key ...

  6. bzoj1618 购买干草

    Description 约翰的干草库存已经告罄,他打算为奶牛们采购日(1≤日≤50000)磅干草.他知道N(1≤N≤100)个干草公司,现在用1到N给它们编号.第i个公司卖的干草包重量为Pi(1≤Pi ...

  7. [USACO07MAR]每月的费用Monthly Expense

    题目:POJ3273.洛谷P2884. 题目大意:有n个数,要分成m份,每份的和要尽可能小,求这个情况下和最大的一份的和. 解题思路:二分答案,对每个答案进行贪心判断,如果最后得出份数>m,则说 ...

  8. numpy基础篇-简单入门教程3

    np import numpy as np np.__version__ print(np.__version__) # 1.15.2 numpy.arange(start, stop, step, ...

  9. HBase为什么快 HBase原理。 HBase几个问题

    背景色表示可以自己做实验搞定 1 模拟一组数据 1.2.3.4.5.6.7.8.9.10     1 入 限定符 'one'     2 入 'two'     3 入 'three'     4 f ...

  10. JVM学习心得

    出处:http://blog.csdn.net/qq_16143915/article/details/51195438 一.JAVA内存管理与GC机制 Java在JVM所虚拟出的内存环境中执行,ja ...