2012年4月9日
摘要: sift创始人的代码:David Lowe's SIFT code:http://www.cs.ubc.ca/~lowe/keypoints美国加州大学洛杉矶分校(University of California at Los Angeles) Andrea Vedaldi 博士研究生给出的基于David Lowe 发表的论文给利用Matlab和C语言混合编程给出的Sift detector and descriptor的实现过程。http://vision.ucla.edu/~vedaldi/详见http://hi.baidu.com/super_lw/blog/item/43357 阅读全文
posted @ 2012-04-09 12:08 Hanson-jun 阅读(291) 评论(0) 推荐(0) 编辑
摘要: 问题描述:Matlab调用CPP不新鲜,无非就是把写好的c语言编译成mex,然后直接调用呗。很多帖子和书都有描述。具体可以参考附录。这里描述的是如何用Matlab调用Opencv库支持的函数。解决方法:0、当然,你得先设置好起码的mex -setup,就是指定编译器,如果在M¥中大家都设成VS2008,VS2005之类的吧。进入正题1、首先打开我的Matlab2009b,然后输入mex -v,可以发现清单中Options file对应那项,直接选中那个文件名,在我这里差不多就是C:\Users\bit\AppData\Roaming\MathWorks \MATLAB\R2009b\mexop 阅读全文
posted @ 2012-04-09 12:03 Hanson-jun 阅读(466) 评论(0) 推荐(0) 编辑
摘要: 在VC环境下进行图像处理比在MATLAB下开发运算速度要快,但工作量要大的多,用MATLAB做图像处理,直接调用里面的相关函数就可以完成,而且比较直观,但满足不了在速度上要求比较高的场合。所以在VC环境下直接开发往往是首选,但由于VC只是一个开发环境,直接运用于图像处理的函数还得自己编写添加,所以往往很耗时。随着各类机器视觉软件的开发,各种机器视觉软件包也相继产生,HALCON就是一个比较强大的机器视觉软件,功能比较全,在HDevelop环境下开发比较容易,执行速度也较快。除此之外,HALCON也可以集成到其他开发环境下,这样可以节约底层开发时间,直接有效地运用它的函数库,可以产生很好的效果。 阅读全文
posted @ 2012-04-09 11:56 Hanson-jun 阅读(1569) 评论(0) 推荐(0) 编辑
摘要: IplImage *iplImage = cvCreateImageHeader(cvSize,IPL_DEPTH_8U,3); //OpenCV图像缓冲//各种图像处理IplImage *iplDisp = cvCreateImage(cvGetSize(iplImage),IPL_DEPTH_8U,3); //OpenCV图像显示缓冲cvCopy(iplImage,iplDisp);BYTE *m_pImageBuffer = new BYTE[Width * Height * 3]; //MFC显示缓冲memcpy(m_pImageBuffer,(BYTE*)ipltemp->im 阅读全文
posted @ 2012-04-09 11:32 Hanson-jun 阅读(382) 评论(0) 推荐(0) 编辑
摘要: 本文是仿照这篇文章而来的:《VC调用matlab中定义的.m文件中的函数的实例》http://dev.csdn.net/article/26/26238.shtm他的文章中使用的是VC6.0 + MATLAB6.5,有的东西已经不能使用了,因此我这里再写一篇如何用VC2005来调用MATLAB2009a中编写的m文件。本例中的m文件源自前面写的一篇文章:《图像的按列均值分布(matlab)》http://hi.baidu.com/sumewanttobecomeagrandmaster/blog/item/d96a563f248202c87c1e7167.html本文的输入是矩阵形式的灰度图像 阅读全文
posted @ 2012-04-09 11:21 Hanson-jun 阅读(831) 评论(2) 推荐(0) 编辑
摘要: 由于OpenCV主要针对的是计算机视觉方面的处理,因此在函数库中,最重要的结构体是IplImage结构。IplImage结构来源于Intel的另外一个函数库Intel Image Processing Library (IPL),该函数库主要是针对图像处理。IplImage结构具体定义如下: typedef struct _IplImage { int nSize; /* IplImage大小 */ int ID; /* 版本 (=0)*/ int nChannels; /* 大多数OPENCV函数支持1,2,3 或 4 个通道 */ int alphaChannel; /* 被O... 阅读全文
posted @ 2012-04-09 11:07 Hanson-jun 阅读(229) 评论(2) 推荐(0) 编辑
摘要: 在C++中多维矩阵是按行存放,而Matlab中是按列存放,故在opencv中从图像到Matlab中的mxArray需要进行转置。以下仅讨论IplImage*到mxArray的转化。(1)单通道图像单通道图像为二维矩阵,仅需实现转置:mxArray* pMat = mxCreateDoubleMatrix(pImage->height,pImage->width,mxREAL);UINT8 *pMatPr = (UINT8*)mxGetData(pMat);for(int j = 0; j < pImage->height; j++)for(int i = 0; i &l 阅读全文
posted @ 2012-04-09 11:04 Hanson-jun 阅读(580) 评论(1) 推荐(0) 编辑