OpenCV学习笔记(2)

上传人:碎****木 文档编号:220862186 上传时间:2021-12-09 格式:DOCX 页数:13 大小:17.61KB
返回 下载 相关 举报
OpenCV学习笔记(2)_第1页
第1页 / 共13页
OpenCV学习笔记(2)_第2页
第2页 / 共13页
OpenCV学习笔记(2)_第3页
第3页 / 共13页
亲,该文档总共13页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《OpenCV学习笔记(2)》由会员分享,可在线阅读,更多相关《OpenCV学习笔记(2)(13页珍藏版)》请在金锄头文库上搜索。

1、其次章数据构造OpenCV 核心库的数据构造一、根本数据构造CvPoint、CvPoint2D32f、CvPoint3D32f、CvSize、CvSize2D32f、CvSize3D32f、CvRect CvScalar(N 元组)CvMat、CvMatND、CvSpareseMat、CvTermCriteria、CvArr、Iplimage 例题 4-1:根本数据类型使用说明:cvFlip:垂直,水平或即垂直又水平翻转二维数组void cvFlip( const CvArr* src, CvArr* dst=NULL, int flip_mode=0); flip_mode :指定怎样去翻转

2、数组。flip_mode=0沿 X-轴翻转,flip_mode0(如 1) 沿 Y-轴翻转,flip_mode 0 dst(i,j)=src(rows(src)-i-1,cols(src)-j-1) if flip_mode height*image-widthStep),单位字节*/char *imageData; /* 指向排列的图像数据*/int widthStep; /* 排列的图像行大小,以字节为单位*/ int BorderMode4; /* 边际完毕模式, 被 OpenCV 无视*/int Borderconst4; /* 同上*/char *imageDataOrigin; /

3、* 指针指向一个不同的图像数据构造(不是必需排列的),是为了订正图像内存安排预备的*/IplImage;IplImage 构造来自于 Intel Image Processing Library(是其本身所具有的)。OpenCV 只支持其中的一个子集:例题 4-2:显示图像信息。图像处理函数:IplImage * cvCreateImage(CvSize size,int depth,int channels); V oid cvReleaseImage(IplImage * image);IplImage * cvCloneImage(const IplImage * image);V oi

4、d cvConvertImage(const CvArr * src,CvArr * dst,int flags=0); Flages:0:没变化,1:垂直翻转,2 交换红蓝信道)V oid cvSetImageCOI(IplImage * image,int coi);依据给定值 coi 设置感爱好信道Int cvGetImageCOI(const IplImage * image);返回感爱好信道号V oid cvSetImageROI(IplImage * image,CvRect rect);基于给定的矩形设置 ROI(Region Of Interest)感爱好区域V oid cvR

5、esetImageROI(IplImage * image);释放图像的 ROICvRect cvGetImageROI(const IplImage * image);返回图像 ROI 坐标IplImage * cvGetImage(const CvArr * arr,IplImage * image_header);从不确定数组返回图像头。输入数组可以是 CvMat* 或 IplImage*。例 4-3:IplImage 相关函数及 ROI 设定与猎取2、CvMat 矩阵(1)CvMat 相关函数CvMat * cvCreateMat(int rows,int cols,int type)

6、;创立矩阵(行数、列数、元素类型)元素类型 type:通常以 CV_(S|U|F)C的形式描述, 例如:CV_8UC1:表示一个 8bit 无符号单信道矩阵; CV_8SC1:表示一个 8bit 有符号单信道矩阵; CV_32SC:表示一个 32bit 有符号双信道矩阵;CvMat * cvCreateMatHeader(int rows,int cols,int type);创立新的矩阵头,但并没有安排数据CvMat * cvInitMatHeader(CvMat * mat,int rows,int cols,int type,void* data=NULL,int step=CV_AUT

7、OSTEP);初始化矩阵头,data:指向安排给矩阵头的数据指针。CvMat cvMat(int rows ,int cols,int type,void * data=NULL);用于替代函数 cvInitMatHeader。CvMat * cvCloneMat(const CvMat * mat);矩阵复制V oid cvReleaseMat(CvMat * mat);删除矩阵void cvGEMM( const CvArr* src1, const CvArr* src2, double alpha, const CvArr* src3, double beta, CvArr* dst,

8、 int tABC=0 );#define cvMatMulAdd( src1, src2, src3, dst ) cvGEMM( src1, src2, 1, src3, 1, dst, 0 )#define cvMatMul( src1, src2, dst ) cvMatMulAdd( src1, src2, 0, dst )src1第一输入数组src2其次输入数组src3第三输入数组(偏移量),假设没有偏移量,可以为空(NULL)。dst输出数组tABCT 操作标志,可以是 0 或者下面列举的值的组合: CV_GEMM_A_T - 转置 src1CV_GEMM_B_T - 转置 sr

9、c2 CV_GEMM_C_T - 转置 src3例如, CV_GEMM_A_T+CV_GEMM_C_T 对应alpha*src1T*src2 + beta*src3T函数 cvGEMM 执行通用矩阵乘法:dst = alpha*op(src1)*op(src2) + beta*op(src3), 这里 op(X) 是 X 或者XT全部的矩阵应当有一样的数据类型和协调的矩阵大小。支持实数浮点矩阵或者复数浮点矩阵例 4:cvMat 处理函数(创立矩阵、矩阵相乘)(2)复制和添加相关函数void cvCopy( const CvArr* src, CvArr* dst, const CvArr* m

10、ask=NULL ); 假设输入输出数组中的一个是 Iplimage 类型的话,其 ROI 和 COI 将被使用。void cvSet( CvArr* arr, CvScalar value, const CvArr* mask=NULL );假设数组 arr 是 IplImage 类型, 那么就会使用 ROI,但 COI 不能设置。void cvSetZero( CvArr* arr ); #define cvZero cvSetZero 清空数组void cvSetIdentity( CvArr* mat, CvScalar value=cvRealScalar(1) ); 初始化带尺度的

11、单位矩阵void cvRange( CvArr* mat, double start, double end ); 用指定范围的数来填充矩阵例题 4-5 矩阵元素添加(3)数组变换CvMat* cvReshape( const CvArr* arr, CvMat* header, int new_cn, int new_rows=0 );不拷贝数据修改矩阵/图像外形(通道数、行数)void cvRepeat( const CvArr* src, CvArr* dst ); 用原数组管道式添充输出数组 dst(i,j)=src(i mod rows(src), j mod cols(src)vo

12、id cvFlip( const CvArr* src, CvArr* dst=NULL, int flip_mode=0); 垂直,水平或即垂直又水平翻转二维数组void cvSplit( const CvArr* src, CvArr* dst0, CvArr* dst1,CvArr* dst2, CvArr* dst3 );分割多通道数组成几个单通道数组或者从数组中提取一个通道void cvMerge( const CvArr* src0, const CvArr* src1, const CvArr* src2, const CvArr* src3, CvArr* dst ); 从几个单通道数组组合成多通道数组或插入一个单通道数组void cvRandShuffle( CvArr* ma

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 教育/培训

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号