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:使程序 ...
随机推荐
- request和response的复习
客户端发来的请求,服务器将请求封装成request对象,包括请求头和请求的数据等.创建response对象,调用Servlet的Service()方法传递这两个参数,使用HttpServlet就是将这 ...
- Collection集合学习(一)———Set接口与具体实现
接口Collection: Collection是Java的一个集合框架, 也是一个根接口.JDK中没有提供此接口的任何实现,但是提供了更具体的子接口Set和List接口的实现,所有的Collecti ...
- iframe有哪些缺点?
iframe会阻塞主页面的Onload事件: iframe和主页面共享连接池,而浏览器对相同域的连接有限制,所以会影响页面的并行加载.使用iframe之前需要考虑这两个缺点.如果需要使用ifram ...
- canvas绘制矩形
canvas绘制矩形 方法 fillRect(x, y, width, height) 画一个实心的矩形 clearRect(x, y, width, height) 清除一块儿矩形区域 stroke ...
- Monkey测试工具介绍
---------------------------------------------------------------------------------------------------- ...
- vue组件重新加载(刷新)
vue组件重新加载(刷新) 第一种方法:利用v-if控制router-view,在根组件APP.vue中实现一个刷新方法 <template> <router-view v-if=& ...
- C# Data Parse
一.DateTime 方法一:Convert.ToDateTime(string) string格式有要求,必须是yyyy-MM-dd hh:mm:ss 方法二:Convert.ToDateTime( ...
- 手游为什么要热更新,C#为什么不能热更新,LUA为什么可以
热更新是什么?简单的说就是打补丁,只补需要部分,不用重个游戏包重打上传 热更新问题的本质是代码更新而不是资源更新,为什么呢? 大型手游都是将补丁资源放在专门的WEB服务器上,游戏启动时动态下载并放入到 ...
- shell 中可以for 循环的时间加减日期格式
..};do # LAST_HOUR=`date -d '-${num} hour' +%H` 不可for循环,报格式错误 LAST_HOUR=`date "+%H" -d -${ ...
- 3.Hadoop集群搭建之Zookeeper安装
前期准备 下载Zookeeper 3.4.5 若无特殊说明,则以下操作均在master节点上进行 1. 解压Zookeeper #直接解压Zookeeper压缩包 tar -zxvf zookeepe ...