- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
OpenCV_轮廓的查找、表达、绘制、特性及匹配
OpenCV_轮廓的查找、表达、绘制、特性及匹配
虽然Canny之类的边缘检测算法可以根据像素间的差异检测出轮廓边界的像素,但是它并没有将轮廓作为一个整体。下一步是要将这些边缘像素组装成轮廓。
轮廓是构成任何一个形状的边界或外形线。直方图对比和模板匹配根据色彩及色彩的分布来进行匹配,以下包括:轮廓的查找、表达方式、组织方式、绘制、特性、匹配。
首先回忆下几个结构体:
首先是图像本身的结构体:typedef struct CvMat{int type; /* CvMat 标识 (CV_MAT_MAGIC_VAL), 元素类型和标记 */int step; /* 以字节为单位的行数据长度*/int* refcount; /* 数据引用计数 */union{uchar* ptr;short* s;int* i;float* fl;double* db;} data;union{int rows;int height;};union{int cols;int width;};这个结构体是最基础的矩阵,而图像本身就是一个复杂的矩阵,所以图像是对这个结构体的继承:typedef struct _IplImage{int nSize; /* IplImage大小 */int ID; /* 版本 (=0)*/int nChannels; /* 大多数OPENCV函数支持1,2,3 或 4 个通道 */int alphaChannel; /* 被OpenCV忽略 */int depth; /* 像素的位深度: IPL_DEPTH_8U, IPL_DEPTH_8S, IPL_DEPTH_16U,IPL_DEPTH_16S, IPL_DEPTH_32S, IPL_DEPTH_32F and IPL_DEPTH_64F 可支持 */char colorModel[4]; /* 被OpenCV忽略 */char channelSeq[4]; /* 同上 */int dataOrder; /* 0 - 交叉存取颜色通道, 1 - 分开的颜色通道.cvCreateImage只能创建交叉存取图像 */int origin; /* 0 - 顶—左结构,1 - 底—左结构 (Windows bitmaps 风格) */int align; /* 图像行排列 (4 or 8). OpenCV 忽略它,使用 widthStep 代替 */int width; /* 图像宽像素数 */int height; /* 图像高像素数*/struct _IplROI *roi;/* 图像感兴趣区域. 当该值非空只对该区域进行处理 */struct _IplImage *maskROI; /* 在 OpenCV中必须置NULL */void *imageId; /* 同上*/struct _IplTileInfo *tileInfo; /*同上*/int imageSize; /* 图像数据大小(在交叉存取格式下imageSize=image-height*image-widthStep),单位字节*/char *imageData; /* 指向排列的图像数据 */int widthStep; /* 排列的图像行大小,以字节为单位 */int BorderMode[4]; /* 边际结束模式, 被OpenCV忽略 */int BorderConst[4]; /* 同上 */char *imageDataOrigin; /* 指针指向一个不同的图像数据结构(不是必须排列的),是为了纠正图像内存分配准备的 */}IplImage;值得注意的地方:首先是origin这个,当有些图像复制或者视频播放时候,由于原点坐标位置未定,很容造成图片倒置。这时就得用void cvFlip( const CvArr* src, CvArr* dst=NULL, int flip_mode=0)函数或者直接设定origin来改变坐标原点;widthstep就是CvMat的step;构造方法:IplImage* cvCreateImage( CvSize size, int depth, int channels );直方图结构:typedef struct CvHistogram{int type;CvArr* bins;float thresh[CV_MAX_DIM][2]; /* 对于标准直方图,bins的值有左边界+右边界=2 */float** thresh2; /* 对于非标准直方图 */CvMatND mat; /* embedded matrix header for
您可能关注的文档
最近下载
- 欧洲规范-NF P98-200-2-中文.pdf VIP
- 2024年3月30日河北省直遴选面试真题及答案解析(下午卷).doc VIP
- 2025年3月30日河北省直遴选面试真题及答案解析(下午卷).doc VIP
- 我国糖尿病视网膜病变临床诊疗指南(2022年).docx VIP
- 2024年3月31日河北省直遴选面试真题及答案解析(上午卷).doc VIP
- 《水泥混凝土路面施工及验收规范GBJ 97-1987》知识培训.pptx VIP
- 2024年海南省省属虚拟市儋州市兰洋镇招聘社区工作者真题及完整答案详解1套.docx VIP
- 公司员工关怀管理方案.docx VIP
- 西方烹饪英语课件资料.ppt VIP
- 2024年3月17日河北省直遴选笔试真题及答案深度解析.doc VIP
文档评论(0)