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 ...
随机推荐
- PHP接收GET中文参数乱码的原因及解决方案
方案1: $str = iconv("gb2312","utf-8",$str); 方案2: mb_convert_encoding($str, "u ...
- Linux cp 复制命令
Linux 的cp命令 功能: 复制文件或目录说明: cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中.若 ...
- UI Framework-1: Aura Multi-desktop
Multi-desktop Aura now makes it possible for the same browser process to render to multiple desktops ...
- caffe(10) 命令行解析
caffe的运行提供三种接口:c++接口(命令行).python接口和matlab接口.本文先对命令行进行解析,后续会依次介绍其它两个接口. caffe的c++主程序(caffe.cpp)放在根目录下 ...
- 【Git 五】TortoiseGit中SSH密钥的配置方法
注意:我用的 TortoiseGit 版本是 2.6 的. 一.找到安装目录下的 bin 目录 二.点击 puttygen.exe 三.点击 Generate 生成完毕之后,将 public key ...
- bzoj1618 购买干草
Description 约翰的干草库存已经告罄,他打算为奶牛们采购日(1≤日≤50000)磅干草.他知道N(1≤N≤100)个干草公司,现在用1到N给它们编号.第i个公司卖的干草包重量为Pi(1≤Pi ...
- [USACO07MAR]每月的费用Monthly Expense
题目:POJ3273.洛谷P2884. 题目大意:有n个数,要分成m份,每份的和要尽可能小,求这个情况下和最大的一份的和. 解题思路:二分答案,对每个答案进行贪心判断,如果最后得出份数>m,则说 ...
- numpy基础篇-简单入门教程3
np import numpy as np np.__version__ print(np.__version__) # 1.15.2 numpy.arange(start, stop, step, ...
- HBase为什么快 HBase原理。 HBase几个问题
背景色表示可以自己做实验搞定 1 模拟一组数据 1.2.3.4.5.6.7.8.9.10 1 入 限定符 'one' 2 入 'two' 3 入 'three' 4 f ...
- JVM学习心得
出处:http://blog.csdn.net/qq_16143915/article/details/51195438 一.JAVA内存管理与GC机制 Java在JVM所虚拟出的内存环境中执行,ja ...