//显示图片

 IplImage * src = cvLoadImage("xx.JPG");
cvNamedWindow("show_image",);
cvShowImage("show_image",src);
cvWaitKey();
cvReleaseImage(&str);
cvDestroyWindow("show_image");

//色彩空间转换,转换类型为CV_BGR2GRAY

 IplImage* dst = cvCreateImage(cvGetSize(src),src->depth,);
cvCvtColor(src,dst,CV_BGR2GRAY);

//开、闭、膨胀、腐蚀操作

 IplConvKernel* element = cvCreateStructuringElementEx(,,,, CV_SHAPE_ELLIPSE,);//创建3*3椭圆结构元素
IplImage * temp=cvCreateImage(cvGetSize(pGrayImg), IPL_DEPTH_8U, );
cvMorphologyEx(pGrayImg,pGrayImg, temp, element,CV_MOP_CLOSE,);//闭操作 先膨胀再腐蚀
cvMorphologyEx(pGrayImg,pGrayImg, temp, element,CV_MOP_OPEN,);//开操作 先腐蚀再膨胀
cvReleaseStructuringElement(&element);
cvReleaseImage(&temp);
cvDilate( pGrayImg, pGrayImg, NULL, );//膨胀
cvErode( pGrayImg, pGrayImg, NULL, );//腐蚀

//边缘检测

cvCanny(pGrayImg,pGrayImg, , ,  );//边缘检测  

//二值图像中检索轮廓

 int cvFindContours( CvArr* image, CvMemStorage* storage, CvSeq** first_contour,int header_size=sizeof(CvContour),int mode=CV_RETR_LIST,int method=CV_CHAIN_APPROX_SIMPLE, CvPoint offset=cvPoint(,) ); 

http://blog.csdn.net/augusdi/article/details/9000893

//二值图像中找圆、椭圆拟合

 //椭圆拟合
void my_FitEllipse(CvSeq *pContour, CvBox2D *box_rect)
{
CvMat*p=cvCreateMat(,pContour->total,CV_32FC2);
CvPoint2D32f *p_temp=(CvPoint2D32f*)(p->data.fl); for(int i=;i<pContour->total;i++)
{
CvPoint*p0=(CvPoint*)cvGetSeqElem(pContour,i);
*p_temp=cvPointTo32f(*p0);
p_temp++;
}
*box_rect = cvFitEllipse2(p);
cvReleaseMat(&p);
} /*
*功能描述:
* 二值图像中找圆形
*输入:
* pStrimg - 原图
* vCircle - 圆集合
*/
void findCircle(IplImage *pStrImg, vector<Ccircle> &vCircle)
{
CvSeq *pContour = NULL;
CvSeq *pConInner = NULL;
CvMemStorage *pStorage = NULL;
IplImage *pTmpImg = cvCreateImage(cvGetSize(pStrImg), pStrImg->depth, pStrImg->nChannels);
cvCopy(pStrImg, pTmpImg); // 查找所有轮廓
pStorage = cvCreateMemStorage();
cvFindContours(pTmpImg, pStorage, &pContour, sizeof(CvContour), CV_RETR_CCOMP, CV_CHAIN_APPROX_SIMPLE); int wai = ;
int nei = ;
for (; pContour != NULL; pContour = pContour->h_next)
{
wai++;
// 内轮廓循环
for (pConInner = pContour->v_next; pConInner != NULL; pConInner = pConInner->h_next)
{
nei++;
}
if(pContour->total < )
{
//TRACE("Number of points should be >= 5\n");
continue;
}
CvBox2D box_rect;
my_FitEllipse(pContour, &box_rect);
if(fabs(box_rect.size.width - box_rect.size.height) < ){//椭圆长轴,短轴长度相近时判断为圆
Ccircle circle;
circle.center.x = box_rect.center.x;
circle.center.y = box_rect.center.y;
circle.r = (box_rect.size.height + box_rect.size.width) / ;
vCircle.push_back(circle);
}
//cvEllipseBox(pBinary, box_rect, CV_RGB(255, 255, 255));
TRACE("center:%f,%f, w:%f, h:%f\n", box_rect.center.x, box_rect.center.y, box_rect.size.width, box_rect.size.height); //CvRect rect = cvBoundingRect(pContour,0);
//cvRectangle(pBinary, cvPoint(rect.x, rect.y), cvPoint(rect.x + rect.width, rect.y + rect.height),CV_RGB(255,255, 255), 1, 8, 0);
} printf("wai = %d, nei = %d", wai, nei);
cvReleaseImage(&pTmpImg);
cvReleaseMemStorage(&pStorage);
pStorage = NULL; }

//图像上点的访问

     uchar*data ;
uchar*ivs_data ;
//IplImage*ivs_image = cvCreateImage(cvGetSize(gray_image),IPL_DEPTH_8U, 1); ivs_height = dst->height;
ivs_width = dst->width;
ivs_step = dst->widthStep/sizeof(uchar);
ivs_channel = dst->nChannels;
data = (uchar*)str->imageData;
//printf("Processing a %d X %d image with %d channel!\n",ivs_height,ivs_width,ivs_channel); ivs_data = (uchar*)dst->imageData; // 反色图像
for(ivs_i=;ivs_i<ivs_height;ivs_i++)
{
for(ivs_j=;ivs_j<ivs_width;ivs_j++)
{
for(ivs_k=;ivs_k<ivs_channel;ivs_k++)
{
ivs_data[ivs_i*ivs_step+ivs_j*ivs_channel+ivs_k]=-data[ivs_i*ivs_step+ivs_j*ivs_channel+ivs_k]; }//k
}//j
}//i

opencv常用函数备忘的更多相关文章

  1. metasploit 常用命令备忘

    metasploit 常用命令备忘    MSFconsole Commands-------------------------------------24show exploits 查看所有exp ...

  2. Linux基础之常用基本命令备忘

    Linux基础之常用基本命令备忘 PWD   查询当前所在Linux上的位置 /         根目录 CD(change directory)切换目录  语法 CD /(注意添加空格)   LS ...

  3. Webstorm常用快捷键备忘(Webstorm入门指南)

    WebStorm 是jetbrains公司旗下一款JavaScript 开发工具.被广大中国JS开发者誉为“Web前端开发神器”.“最强大的HTML5编辑器”.“最智能的JavaSscript IDE ...

  4. sublime 常用快捷键备忘

    转一篇sublime常用的快捷键备忘 sublime常用快捷键 选择类Ctrl+D 选中光标所占的文本,继续操作则会选中下一个相同的文本.Alt+F3 选中文本按下快捷键,即可一次性选择全部的相同文本 ...

  5. Webstorm常用快捷键备忘

    WebStorm 是jetbrains公司旗下一款JavaScript 开发工具.被广大中国JS开发者誉为“Web前端开发神器”.“最强大的HTML5编辑器”.“最智能的JavaSscript IDE ...

  6. Axure常用操作备忘

    目录 前言 技巧 边框重合 复制对象文本居中 复制粘贴样式 文本自适应 给图形添加连接点 导出图片无空白 前言 下面列出Axure画图过程中曾经遇到过的问题,备忘一下,避免别人也走弯路,法布施一下~ ...

  7. numpy常用知识点备忘

    常用函数 a.max(axis=0) a.max(axis=1) a.argmax(axis=1) : 每列的最大值(在行方向找最大值).每行的最大值(在列方向找对大致).最大值的坐标 sum()求和 ...

  8. Oracle用法、函数备忘记录

    Listagg select * from emp select LISTAGG(ename,'-') within group (order by deptno desc) from emp; 可以 ...

  9. OpenCV——常用函数查询

    1.cvLoadImage:将图像文件加载至内存: 2.cvNamedWindow:在屏幕上创建一个窗口: 3.cvShowImage:在一个已创建好的窗口中显示图像: 4.cvWaitKey:使程序 ...

随机推荐

  1. Win10 恢复后退键

    转自:http://www.cnblogs.com/liubaicai/p/4368261.html 自带的几种风格的页面,竟然是用的左上角虚拟后退键,这种倒行逆施的行为微软你真是够了! 一定要把后退 ...

  2. 【UVa】12118 Inspector's Dilemma(欧拉道路)

    题目 题目     分析 很巧秒的一道题目,对着绿书瞎yy一会. 联一下必须要走的几条边,然后会形成几个联通分量,统计里面度数为奇数的点,最后再减去2再除以2.这样不断相加的和加上e再乘以t就是答案, ...

  3. 使用poi读写Excel------demo

    package com.js.ai.modules.pointwall.interfac; import java.io.FileInputStream; import java.io.FileOut ...

  4. [CSAPP] The Unicode Standard for text coding

    The ASCII is only suitable for encoding English-language documents. It's hard for us to encode the s ...

  5. 【MySQL】教程及常用工具和操作

    12.MySQL菜鸟教程 http://www.runoob.com/mysql/mysql-data-types.html 3.MySQL Workbench怎么使用及其使用教程 https://j ...

  6. ARM汇编 均值滤波实验

    实验要求是排序后去掉最大值最小值,然后把剩下的求平均数. 排序可以用之前的冒泡排序,关键的问题是求平均数.因为ARM没有除法,应该怎么求平均数呢? 最简单的方法就是减法了,用被除数一直减除数,看减了多 ...

  7. Python开发丨这些面试题会不会难倒你

    1:以下的代码的输出将是什么? 说出你的答案并解释. class Parent(object):       x = 1   class Child1(Parent):       pass   cl ...

  8. 利用同步辅助类CountDownLatch计算多线程的运行时间

    一.CountDownLatch jdk提供的一个同步辅助类,在完成一组在在其他线程中执行的操作前,允许一个或者多个其他的线程等待,通过调用 await() 方法阻塞,直到由于 countDown() ...

  9. ResultMap详解

    MyBatis:ResultMap详解   一.前言   MyBatis是基于“数据库结构不可控”的思想建立的,也就是我们希望数据库遵循第三范式或BCNF,但实际事与愿违,那么结果集映射就是MyBat ...

  10. 阿里巴巴Java开发规约扫描插件-Alibaba Java Coding Guidelines 在idea上安装使用教程

    经过247天的持续研发,阿里巴巴于10月14日在杭州云栖大会上,正式发布众所期待的<阿里巴巴Java开发规约>扫描插件!该插件由阿里巴巴P3C项目组研发.P3C是世界知名的反潜机,专门对付 ...