首页 Opencv学习笔记与心得体会-2010版

Opencv学习笔记与心得体会-2010版

举报
开通vip

Opencv学习笔记与心得体会-2010版Opencv学习笔记与心得体会-2010版 1. 函数命名规则:cvActionTargetMod(…) 2. 矩阵数据类型:CV_(S|U|F)C 3. 图像数据类型:IPL_DEPTH_(S|U|F) 4. 头文件:cv.h cvaux.h highgui.h cxcore.h 5. 点的表示: CvPoint p = cvPoint(int x, int y); CvPoint2D32f p = cvPoint2D32f(float x, float y); CvPoint3D32f p = cv...

Opencv学习笔记与心得体会-2010版
Opencv学习笔记与 心得体会 决胜全面小康心得体会学党史心得下载党史学习心得下载军训心得免费下载党史学习心得下载 -2010版 1. 函数命名规则:cvActionTargetMod(…) 2. 矩阵数据类型:CV_(S|U|F)C 3. 图像数据类型:IPL_DEPTH_(S|U|F) 4. 头文件:cv.h cvaux.h highgui.h cxcore.h 5. 点的表示: CvPoint p = cvPoint(int x, int y); CvPoint2D32f p = cvPoint2D32f(float x, float y); CvPoint3D32f p = cvPoint2D32f(float x, float y, float z); 6. 长方形维数表示: CvSize r = cvSize(int width, int height); CvSize2D32f r = cvSize2D32f(float width, float height); 7. 有偏移量的长方形表示:CvRect r = cvRect(int x, int y, int width, int height); 8. 分配矩阵:CvMat* cvCreateMat(int rows, int cols, int type); 9. 释放矩阵:void cvReleaseMat(CvMat**); 10. 复制矩阵:CvMat* cvCloneMat(CvMat*); 11. 初始化矩阵: double a[] = {1,2,3,4,5,6,7,8,9,10,11,12}; CvMat Ma = cvMat(3, 4, CV_64FC1, a); 或者: CvMat Ma; cvInitMatHeader(&Ma, 3, 4, CV_64FC1, a); 12. 初始化单位矩阵: CvMat* M = cvCreateMat(4, 4, CV_32FC1); cvSetIdentity(M); 13. 直接访问矩阵元素: cvmSet(M, i, j, 2, 0); T = cvmGet(M, i, j); 14. 已知对齐方式的直接访问: CvMat* M = cvCreateMat(4, 4, CV_32FC1); int n = M->cols; float* data = M->data.fl; data[i*n+j] = 3.0; 15. 未知对齐方式的直接访问: CvMat* M = cvCreateMat(4, 4, CV_32FC1); int step = M->step/sizeof(float); float* data = M->data.fl; (data+i*step)[j] = 3.0; 16. 直接访问已初始化矩阵: double a[16]; CvMat Ma = cvMat(3, 4, CV_64FC1, a); a[i*4+j] = 2.0; 17. 矩阵和矩阵操作: CvMat *Ma, *Mb, *Mc; cvAdd(Ma, Mb, Mc); cvSub(Ma, Mb, Mc); cvMatMul(Ma, Mb, Mc); 18. 矩阵元素之间操作: CvMat *Ma, *Mb, *Mc; cvMul(Ma, Mb, Mc); cvDiv(Ma, Mb, Mc); cvAddS(Ma, cvScalar(-10.0), Mc); 19. 向量乘法操作: double va[] = {1,2,3}; double vb[] = {0,0,1}; double vc[3]; CvMat Va = cvMat(3, 1, CV_64FC1, va); CvMat Vb = cvMat(3, 1, CV_64FC1, vb); CvMat Vc = cvMat(3, 1, CV_64FC1, vc); double res = cvDotProduct(&Va, &Vb); //点乘 cvCrossProduct(&Va, &Vb, &Vc); //叉乘 20. 单个矩阵操作: CvMat *Ma, *Mb; cvTranspose(Ma, Mb); //转置 CvScalar t = cvTrace(Ma); //对角线和 double d = cvDet(Ma); //行列式 cvInvert(Ma, Mb); //求逆 21. 非齐次线性系统求解: CvMat *A = cvCreateMat(3, 3, CV_32FC1); CvMat *x = cvCreateMat(3, 1, CV_32FC1); CvMat *b = cvCreateMat(3, 1, CV_32FC1); cvSolve(&A, &b, &x); 22. 特征值(对称矩阵): CvMat *A = cvCreateMat(3, 3, CV_32FC1); CvMat *E = cvCreateMat(3, 3, CV_32FC1); //特征向量 CvMat *I = cvCreateMat(3, 1, CV_32FC1); //特征值 cvEigenVV(&A, &E, &I); 23. 奇异值分解操作: CvMat *A = cvCreateMat(3, 3, CV_32FC1); CvMat *U = cvCreateMat(3, 3, CV_32FC1); CvMat *D = cvCreateMat(3, 3, CV_32FC1); CvMat *V = cvCreateMat(3, 3, CV_32FC1); cvSVD(A, D, U, V, CV_SVD_U_T|CV_SVD_V_T); 24. 创建及定位窗口: cvNamedWindow(“win1”, CV_WINDOW_AUTOSIZE); cvMoveWindow(“win1”, 100, 100); 25. 加载图像: IplImage *img = 0; img = cvLoadImage(filename); if (!img) printf(“error!”); 26. 显示图像: cvShowImage(“win1”, img); 27. 关闭窗口: cvDestroyWindow(“win1”); 28. 缩放窗口: cvResizeWindow(“win1”, 100, 100); 29. 鼠标事件处理: P69 30. 键盘事件处理: int key; key = cvWaitKey(0); 31. 拖动条事件处理: 32. 分配图像: IplImage *img = cvCreateImage(CvSize size, int depth, int channels); 33. 释放图像: void cvReleaseImage(IplImage**); 34. 复制图像: IplImage *img2 = cvCloneImage(img1); 35. 设置或得到感兴趣区域ROI: void cvSetImageROI(IplImage *image, CvRect rect); void cvResetImageROI(IplImage *image); CvRect cvGetImageROI(const IplImage *image); 36. 设置或得到感兴趣通道COI: void cvSetImageCOI(IplImage *image, int coi); 37. 从文件读图像: img = cvLoadImage(filename, flag); flag>0时,3通道彩色图像; flag=0时,单通道灰色图像; flag<0时,有文件中图像通道数决定; 38. 向文件写图像: if(!cvSaveImage(outfilename, img)) printf(“error!”); 39. 间接访问图像元素:IplImage *img = cvCreateImage(cvSize(640,480), IPL_DEPTH_32F, 3); CvScalar s; s = cvGet2D(img, i, j); printf(“B=%f,G=%f,R=%f”,s.val[0],s.val[1],s.val[2]); s.val[0]=111;s.val[1]=111;s.val[2]=111; cvSet2D(img, i, j, s); 40. 直接访问图像元素:IplImage *img = cvCreateImage(cvSize(640,480), IPL_DEPTH_32F, 3); ((uchar*)(img->imageData+i*img->widthStep))[j*img->nChannel+0]=111; ((uchar*)(img->imageData+i*img->widthStep))[j*img->nChannel+1]=112; ((uchar*)(img->imageData+i*img->widthStep))[j*img->nChannel+2]=113; 41. 指针访问: IplImage *img = cvCreateImage(cvSize(640,480), IPL_DEPTH_32F, 3); int height = img->height; int width = img->width; int step = img->widthStep/sizeof(uchar); int channels = img->nChannels; uchar *data = (uchar *)img->imageData; data[i*step+j*channels+k] = 111; 42. 用C++外壳直接访问:P76 43. 灰度图像转换为彩色图像: cvConvertImage(src, dst, flags=0); 44. 彩色图像转换为灰度图像: cvCvtColor(cimg, gimg, CV_BGR2GRAY); 45. 彩色空间转换: cvCvtColor(src, dst, code); code=CV_2,,=RGB,BGR,GRAY,HSV,YCrCb,XYZ,Lab,Luv,HLS 46. 画矩形: cvRectangle(img, cvPoint(100,100), cvPoint(200,200), cvScalar(255,0,0), 1); 47. 画圆: cvCircle(img, cvPoint(100,100), 20, cvScalar(0,255,0), 1); 48. 画线段: cvLine(img, cvPoint(100,100), cvPoint(200,200), cvScalar(0,255,0), 1); 49. 画多边形: CvPoint curve1[] = {10,10, 10,100, 100,100, 100,10}; CvPoint curve2[] = {30,30, 30,130, 130,130, 150,10}; CvPoint* curveArr[2] = {curve1, curve2}; int nCurvePts[2] = {4, 5}; int nCurves = 2; int isCurveClosed = 1; int lineWidth = 1; cvPolyLine(img, curveArr, nCurvePts, nCurves, isCurveClosed, cvScalar(0,255,255), lineWigth); 50. 填充多边形:cvFillPoly(img, curveArr, nCurvePts, nCurves, cvScalar(0,255,255)); 51. 写字: CvFont font; double hScale = 1.0; double vScale = 1.0; int lineWidth = 1; cvInitFont(&font, CV_FONT_HERSHEY_SIMPLEX|CV_FONT_ITALIC, hScale, vScale, 0, lineWidth); cvPutText(img, “My comment”, cvPoint(200,400), &font, cvScalar(255,255,0)); 52. typedef struct CvPoint { int x; int y; }CvPoint; inline CvPoint cvPoint(int x, int y); inline CvPoint cvPointFrom32f(CvPoint2D32f point); 53. typedef struct CvPoint2D32f { float x; float y; }CvPoint2D32f; inline CvPoint2D32f cvPoint2D32f(double x, double y); inline CvPoint2D32f cvPointTo32f(CvPoint point); 54. typedef struct CvPoint3D32f { float x; float y; float z; }CvPoint3D32f; inline CvPoint3D32f cvPoint3D32f(double x, double y, double z); 55. typedef struct CvSize { int width; int height; }CvSize; inline CvSize cvSize(int width, int height); 56. typedef struct CvSize2D32f { float width; float height; }CvSize2D32f; inline CvSize2D32f cvSize2D32f(double width, double height); 57. typedef struct CvRect { int x; int y; int width; int height; }CvRect; inline CvRect cvRect(int x, int y, int width, int height); 58. typedef struct CvScalar { double val[4]; }CvScalar; inline CvScalar cvScalar(double val0, double val1, double val2, double val3); inline CvScalar cvScalarAll(double val0123); inline CvScalar cvRealScalar(double val0); 59. typedef struct CvTermCriteria { int type; int max_iter; double epsilon; }CvTermCriteria; inline CvTermCriteria cvTermCriteria (int type, int max_iter, double epsilon); CvTermCriteria cvCheckTermCriteria(CvTermCriteria criteria, double default_eps, int default_max_iters); 60. typedef struct CvMat { int type; int step; int *refcount; union { uchar *ptr; short *s; int *I; float *fl; double *db; }data; #ifdef __cplusplus union { int rows; int height; }; union { int cols; int width; }; #else int rows int cols; #endif }CvMat; 61. typedef struct CvMatND { int type; int dims; int *refcount; union { uchar *ptr; short *s; int *I; float *fl; double *db; }data; struct { int size; int step; }dim[CV_MAX_DIM]; }CvMatND; 62. typedef struct CvSparseMat { int type; int dims; int *refcount; struct CvSet* heap; void **hashtable; int hashsize; int total; int valoffset; int idxoffset; int size[CV_MAX_DIM]; }CvSparseMat; 63. typedef struct IplImage { int nSize; int ID; int nChannels; int alphaChannel; int depth; char colorMode[4]; char channelSeq[4]; int dataOrder; int origin; int align; int width; int height; struct _IplROI *roi; struct _IplImage *maskROI; void *imageld; struct _IplTileInfo *tileInfo; int imageSize; char *imageData; int widthStep; int BorderMode[4]; int BorderConst[4]; char *imageDataOrigin; }IplImage; 64. typedef void CvArr; 65. 创建图像头并分配数据:IplImage *img = cvCreateImage(CvSize size, int depth, int channels); 等于: header = cvCreateImageHeader(size, depth, channels); cvCreateData(header); 66. 分配初始化图象头: IplImage* cvCreateImageHeader(CvSize size, int depth, int channels); 67. 释放图像头: void cvReleaseImageHeader(IplImage** image); 68. 释放图像头和数据: void cvReleaseImage(IplImage** image); 69. 初始化图像头: IplImage* cvInitImageHeader(IplImage* image, CvSize size,int depth, int channels, int origin=0, int align=4); 70. 完整复制图像: IplImage* cvCloneImage(const IplImage* image); 71. 设置感兴趣通道: void cvSetImageCOI(IplImage* image, int coi); 72. 返回感兴趣通道: int cvGetImageCOI(const IplImage* image); 73. 设置感兴趣区域: void cvSetImageROI(IplImage* image, CvRect rect); 74. 返回感兴趣区域: CvRect cvGetImageROI(const IplImage* image); 75. 释放感兴趣区域: void cvResetImageROI(IplImage* image); 76. CvMat* cvCreateMat(int rows, int cols, int type); 77. CvMat* cvCreateMatHeader(int rows, int cols, int type); 78. void cvReleaseMat(CvMat** mat); 79. CvMat* InitMatHeader(CvMat* mat, int rows, int cols, int type, void* data=NULL, int step=CV_AUTOSTEP); 80. CvMat cvMat((int rows, int cols, int type, void* data=NULL); 81. CvMat* cvCloneMat(const CvMat* mat); 82. CvMatND* cvCreateMatND(int rows, const int cols, int type); 83. CvMatND* cvCreateMatNDHeader(int rows, int cols, int type); 84. void cvReleaseMatND(CvMatND** mat); 85. CvMat* InitMatNDHeader(CvMatnND* mat, int dims, const int* sizes, int type, void* data=NULL); 86. CvMat* cvCloneMatND(const CvMatND* mat); 87. 数组数据引用计数减一:void cvDecRefData(CvArr* arr); 88. 数组数据引用计数加一:int cvIncRefData(CvArr* arr); 89. 分配数据: void cvCreateData(CvArr* arr); 90. 释放数据: void cvReleaseData(CvArr* arr); 91. 设置数据: void cvSetData(CvArr* arr, void* data, int step);
本文档为【Opencv学习笔记与心得体会-2010版】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_421808
暂无简介~
格式:doc
大小:37KB
软件:Word
页数:14
分类:互联网
上传时间:2017-10-06
浏览量:75