Opencv 程序问题, cvStartFindContours函数。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Opencv 程序问题, cvStartFindContours函数。相关的知识,希望对你有一定的参考价值。

程序为删除面积小的连通区域,希望能有人逐行解释下此程序,我马上给分。
CvSeq* contour = NULL;
double minarea = 100.0;
double tmparea = 0.0;
CFileDialog dlg(true);
if (dlg.DoModal()==IDOK)

CvMemStorage* storage = cvCreateMemStorage(0);

IplImage* img_src= cvLoadImage(dlg.GetPathName(),CV_LOAD_IMAGE_ANYCOLOR);
IplImage* img_Clone=cvCloneImage(img_src);
//访问二值图像每个点的值
uchar *pp;
//显示原始图像
cvNamedWindow("img_src",CV_WINDOW_AUTOSIZE);
cvShowImage("img_src", img_src);

IplImage* img_dst = cvCreateImage(cvGetSize(img_src),IPL_DEPTH_8U,1);

//------------搜索二值图中的轮廓,并从轮廓树中删除面积小于某个阈值minarea的轮廓-------------//
CvScalar color = cvScalar(255,0,0);//CV_RGB(128,0,0);
CvContourScanner scanner = NULL;
scanner = cvStartFindContours(img_src,storage,sizeof(CvContour),CV_RETR_CCOMP,CV_CHAIN_APPROX_NONE,cvPoint(0,0));
//开始遍历轮廓树
CvRect rect;
while (contour=cvFindNextContour(scanner))

tmparea = fabs(cvContourArea(contour));
rect = cvBoundingRect(contour,0);
if (tmparea < minarea/*||tmparea>4900*/)


//当连通域的中心点为黑色时,而且面积较小则用白色进行填充
pp=(uchar*)(img_Clone->imageData + img_Clone->widthStep*(rect.y+rect.height/2)+rect.x+rect.width/2);
if (pp[0]==0)

for(int y = rect.y;y<rect.y+rect.height;y++)

for(int x =rect.x;x<rect.x+rect.width;x++)

pp=(uchar*)(img_Clone->imageData + img_Clone->widthStep*y+x);

if (pp[0]==0)

pp[0]=255;







cvSaveImage("c://temp//aav.bmp",img_Clone);

参考技术A 你用的什么版本,是2.2吗VC的包含目录要指两个C:\OpenCV2.2\include\opencvC:\OpenCV2.2\include追问

我是Opencv3版本 此程序是网上一段代码。

编译 OpenCV 程序,不需要安装 opencv

【中文标题】编译 OpenCV 程序,不需要安装 opencv【英文标题】:Compiling OpenCV program and not requiring opencv Installed 【发布时间】:2014-12-16 15:06:41 【问题描述】:

我开发了一个使用 OpenCV 的 C++ 程序。但是,当我编译它并尝试在另一台计算机上运行它时,除非我在其中安装 OpenCV 并为其设置环境路径,否则它不会运行。有没有办法解决这个问题以及如何解决?

我正在使用 Visual Studio Ultimate 2013,并且该程序仅在 Windows 中运行(因为 Kinect SDK 也与它一起使用)。谢谢!

【问题讨论】:

一种选择是创建一个安装程序,将所需的 dll 与您的应用程序一起复制。 ^^ 或者直接复制粘贴 成功了:D 【参考方案1】:

使用动态链接,确保使用Dependency Walker(或类似工具)来确定您需要随可执行文件一起提供的 OpenCV DLL(您无需安装整个 OpenCV 包)。

这是您不必处理静态链接的事情: Using static libraries instead of dynamic libraries in OpenCV

【讨论】:

以上是关于Opencv 程序问题, cvStartFindContours函数。的主要内容,如果未能解决你的问题,请参考以下文章

Ubuntu下安装好OpenCV 设置opencv_DIR路径问题 用cmake运行了个测试程序

多线程 OpenCV 程序

如何使用 OpenCV 从 C++ 程序制作 Android 应用程序

执行 Opencv 程序时系统崩溃

Python / OpenCV 应用程序锁定问题

OpenCV 图像加载程序退出