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 ...
随机推荐
- js thousand separator and change td content
js thousand seprator and change TD content // integer function addCommas(n){ })/; return String(n).r ...
- type与isinstance使用区别
Python中,type与isinstance都可以用来判断变量的类型,但是type具有一定的适用性,用它来判断变量并不总是能够获取到正确的值. Python在定义变量的时候不用指明具体的的类型,解释 ...
- 紫书 习题 10-3 UVa 1643(计算几何 叉乘)
直观感觉对角线重合的时候面积最大 然后可以根据方程和割补算出阴影部分的面积 注意知道两点坐标,可以求出与原点形成的三角形的面积 用叉乘,叉乘的几何意义以这两个向量为边的平行四边形的面积 所以用叉乘除以 ...
- dynamic_cast与能力查询
在C++里面,dynamic_cast 通常用于横向转换,而不是向上或者向下的转换. 这个常常用于检查某个实例,是否实现了某个接口类,那么就把这个实例,用dynamic_cast来转换成这个接口类的实 ...
- Linux同步与相互排斥应用(零):基础概念
[版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet 或 .../gentleliu,文章仅供学习交流,请勿用于商业用途] 当操作系统进入多道批处理系统时 ...
- UITextField监控文字变化方法
项目里须要在不隐藏键盘的情况下.来更改button 的状态. 这里就是要对uitextfield监控.uitextfield继承于UIControl.所以能够 使用addTarget方法.详细例如以下 ...
- vue15 自定义元素指令、标签指令
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Android-Universal-Image-Loader 学习笔记(五)线程池分析
UniveralImageLoader中的线程池 一般情况网络访问就需要App创建一个线程来执行(不然可能出现很臭的ANR),但是这也导致了当网络访问比较多的情况下,线程的数目可 ...
- 异常Exception
try…catch…finally恐怕是大家再熟悉不过的语句了,而且感觉用起来也是很简单,逻辑上似乎也是很容易理解.不过,我亲自体验的“教训”告诉我,这个东西可不是想象中的那么简单.听话.不信?那你看 ...
- vue中剖析中的一些方法
1 判断属性 71 -81 var hasOwnProperty = Object.prototype.hasOwnProperty; /** * Check whether the object h ...