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:使程序 ...
随机推荐
- 【HDU】1520 Anniversary party(树形dp)
题目 题目 分析 带权值的树上最大独立集 代码 #include <bits/stdc++.h> using namespace std; ; int a[maxn], n, fa[max ...
- 读《分布式一致性原理》JAVA客户端API操作3
更新数据 客户端可以通过zookeeper的API来更新一个节点的数据内容,有如下两个接口: public Stat setData(final String path, byte data[], i ...
- TCP粘包拆包场景
TCP编程底层都有粘包和拆包机制,因为我们在C/S这种传输模型下,以TCP协议传输的时候,在网络中的byte其实就像是河水,TCP就像一个搬运工,将这流水从一端转送到另一端,这时又分两种情况: 1)如 ...
- Rhythmk 一步一步学 JAVA (10): Freemarker 学习 1 - 入门
FreeMarker 笔记: 1. 注释: <#-- 注释内容 -#> 2.<#if condition> content1 <#else> content2 ...
- react之本地图片引用
react之本地图片引用 <img src="../images/photo.png"/> 这种写法在react中是不支持的,所以引用本地图片需要用import或者re ...
- multiprocessing.dummy
昨晚发现放在腾讯云主机上通过crontab定时执行用以爬去斗鱼分类页面数据的爬虫在执行的时候速度特别慢,于是想通过多线程来提高效率. 打开浏览器,键入关键字"python 多线程" ...
- TThread 线程的例子
TThread 线程的例子 D:\Documents\Embarcadero\Studio\14.0\Samples\CPP\RTL\Threads TThread类 该线程类可以完成大多数的线程 ...
- Shiro 权限校验不通过时,区分GET和POST请求正确响应对应的方式
引入:https://blog.csdn.net/catoop/article/details/69210140 本文基于Shiro权限注解方式来控制Controller方法是否能够访问. 例如使用到 ...
- GitHub个人使用入门
今天突然想起来了github 于是开始了入门之旅 如果你用过svn 那么你用起来感觉入门比较快的(至少我是这么感觉的)和在svn服务器上建项目的流程很像 每次修改代码之后提交的过程是: add, co ...
- iPhone开发随想:rand()还是arc4random()
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://bj007.blog.51cto.com/1701577/544006 今天在iP ...