opencv常用函数备忘
//显示图片
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常用函数备忘的更多相关文章
- metasploit 常用命令备忘
metasploit 常用命令备忘 MSFconsole Commands-------------------------------------24show exploits 查看所有exp ...
- Linux基础之常用基本命令备忘
Linux基础之常用基本命令备忘 PWD 查询当前所在Linux上的位置 / 根目录 CD(change directory)切换目录 语法 CD /(注意添加空格) LS ...
- Webstorm常用快捷键备忘(Webstorm入门指南)
WebStorm 是jetbrains公司旗下一款JavaScript 开发工具.被广大中国JS开发者誉为“Web前端开发神器”.“最强大的HTML5编辑器”.“最智能的JavaSscript IDE ...
- sublime 常用快捷键备忘
转一篇sublime常用的快捷键备忘 sublime常用快捷键 选择类Ctrl+D 选中光标所占的文本,继续操作则会选中下一个相同的文本.Alt+F3 选中文本按下快捷键,即可一次性选择全部的相同文本 ...
- Webstorm常用快捷键备忘
WebStorm 是jetbrains公司旗下一款JavaScript 开发工具.被广大中国JS开发者誉为“Web前端开发神器”.“最强大的HTML5编辑器”.“最智能的JavaSscript IDE ...
- Axure常用操作备忘
目录 前言 技巧 边框重合 复制对象文本居中 复制粘贴样式 文本自适应 给图形添加连接点 导出图片无空白 前言 下面列出Axure画图过程中曾经遇到过的问题,备忘一下,避免别人也走弯路,法布施一下~ ...
- numpy常用知识点备忘
常用函数 a.max(axis=0) a.max(axis=1) a.argmax(axis=1) : 每列的最大值(在行方向找最大值).每行的最大值(在列方向找对大致).最大值的坐标 sum()求和 ...
- Oracle用法、函数备忘记录
Listagg select * from emp select LISTAGG(ename,'-') within group (order by deptno desc) from emp; 可以 ...
- OpenCV——常用函数查询
1.cvLoadImage:将图像文件加载至内存: 2.cvNamedWindow:在屏幕上创建一个窗口: 3.cvShowImage:在一个已创建好的窗口中显示图像: 4.cvWaitKey:使程序 ...
随机推荐
- poj-2828 Buy Tickets(经典线段树)
/* Buy Tickets Time Limit: 4000MS Memory Limit: 65536K Total Submissions: 10207 Accepted: 4919 Descr ...
- Integer-->String String-->Integer
参考:http://blog.csdn.net/wangjolly/article/details/18354457 crane: String str="123";int a=0 ...
- ubuntu下用expect实现密码自动输入
每次笔记本一开机启动,总会连用不着且碍事的触摸板也一块启动.便想写个脚本,让电脑启动时关闭触摸板.(当然,我想更好的办法是,修改系统启动时的加载模块,让触摸板不自动加载,但是目前还不知道用这种方法怎么 ...
- kali2.0安装及使用笔记(附带vim配置,长期更新)
作者:陈栋权 时间:16/08/19 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明, 且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利. 如有特别用途,请与我联系邮 ...
- Spring之导入和混合配置
在典型的Spring应用中,我们可能会同时使用自动化和显式配置.即便你更喜欢通过JavaConfig实现显式配置,但有的时候XML却是最佳的方案.幸好在Spring中,这些配置方案都不是互斥的.你尽可 ...
- vue 时间选择器组件
vue 时间选择器组件 组件效果: 单文件组件: <template> <div class="date-pickers"> <!--date为com ...
- Spring 中的 LocalSessionFactoryBean和LocalContainerEntityManagerFactoryBean
Spring和Hibernate整合的时候我们经常会有如下的配置代码 1,非JPA支持的配置 <!-- 配置 Hibernate 的 SessionFactory 实例: 通过 Spring 提 ...
- Gearmand 任务分发系统
简介: Gearmand 是一个用来把工作委派给其它机器.分布式的调用更适合做某项工作的机器.并发的做某项工作在多个调用间做负载均衡.或用来调用其它语言的函数的系统. 简单来讲,就是客户端程序把请求提 ...
- @JsonIgnore
@JsonIgnore 避免取JSON对象时无限递归的问题,过滤掉一些不需要的属性,说明createdDate这个属性不需要转成json,放到getter方法前生效
- git命令用法
git svn 说明 git pull svn update git add 要提交的文件名 svn add git rm svn rm,del git commit -m '备注一下提 ...