opencv子矩阵操作
来源:互联网 发布:java递归计算n的阶乘 编辑:程序博客网 时间:2024/05/16 05:26
作者:gnuhpc
出处:http://www.cnblogs.com/gnuhpc/
- #include "highgui.h"
- #include "cv.h"
- #include <iostream>
- #include <iomanip>
- using namespace std;
- void main()
- {
- int i=0;
- int j=0;
- CvRect mat_rect=cvRect(1,1,3,3);//指定取得数组子集的范围
- CvMat *mat=cvCreateMat(6,6,CV_64FC1);//原数组
- CvMat *submat=cvCreateMat(3,3,CV_64FC1);//按mat_rect指定取得的数组子集
- CvMat *mat_rows=cvCreateMat(2,6,CV_64FC1);//按一定跨度内的行取得的数组子集
- /*对这个6*6的矩阵初始化*/
- for (i=0;i<6;i++)
- {
- for (j=0;j<6;j++)
- {
- CV_MAT_ELEM(*mat,double,i,j)=i*6+j;
- }
- }
- /*打印源矩阵*/
- for (i=0;i<6;i++)
- {
- for (j=0;j<6;j++)
- {
- cout<<setw(3)<<CV_MAT_ELEM(*mat,double,i,j);
- }
- cout<<endl;
- }
- cout<<endl;
- /*取子数组,大小根据mat_rect来决定,然后打印*/
- cvGetSubRect(mat,submat,mat_rect);
- for (i=0;i<3;i++)
- {
- for (j=0;j<3;j++)
- {
- cout<<setw(3)<<CV_MAT_ELEM(*submat,double,i,j);
- }
- cout<<endl;
- }
- cout<<endl;
- /*取第一行(从0开始)取到第(3-1=)2行,并打印*/
- cvGetRows(mat,mat_rows,1,3,1);
- for (i=0;i<2;i++)
- {
- for (j=0;j<6;j++)
- {
- cout<<setw(3)<<CV_MAT_ELEM(*mat_rows,double,i,j);
- }
- cout<<endl;
- }
- cvReleaseMat(&mat);
- cvReleaseMat(&submat);
- cvReleaseMat(&mat_rows);
- }
在OpenCV中一般取元素都用定义好的宏:
取Mat结构的元素的宏为CV_MAT_ELEM,它取2D的矩阵最方便。
取IplImage元素的宏为CV_IMAGE_ELEM,如取一个图像(x,y)点的灰度值:
uchar *ptr=CV_IAMGE_ELEM(image,uchar,i,j*3);
ptr[0],ptr[1],ptr[2]就是对应的B/G/R三个分量了。
作者:gnuhpc
出处:http://www.cnblogs.com/gnuhpc/
除非另有声明,本网站采用知识共享“署名 2.5 中国大陆”许可协议授权。
0 0
- opencv子矩阵操作
- OpenCV学习——子矩阵操作
- openCV---子矩阵赋值
- OpenCV----矩阵操作
- OpenCV 矩阵操作 CvMat
- OPENCV矩阵操作
- opencv-矩阵操作总结
- OpenCV 矩阵操作
- OPENCV 矩阵操作
- Opencv矩阵操作
- OpenCv矩阵操作
- OpenCV 矩阵操作
- OpenCv矩阵操作
- opencv中的矩阵操作
- OpenCv矩阵操作 .
- opencv 矩阵操作
- OPENCV 矩阵操作
- openCV矩阵操作
- IOS开发笔记-NSURLConnection同步请求和异步请求以及get方法,post方法
- 设计模式---适配器
- 解析 Linux 中的 VFS 文件系统机制
- Makefile中的几种赋值方式
- 关于在技术领域的一点感慨
- opencv子矩阵操作
- iOS 设备听筒距离监测
- 如何美化界面(MFC)
- 流年暗换,逝去的光阴旖旎不复
- (转) Spark 集群模式概述
- 有关导航GPS定位精度的一些猜想
- 紫陌红尘中为什么偏偏有你
- [Leetcode] Regular Expression Matching (Java)
- 绘制矩形并设置阴影