2013-04-08 35 views
1

我目前正在尝试检测图像中的框,然后我想裁剪检测到的框在我的项目中使用它...但是,opencv的平方检测样本也检测图像的内衬...所以,问题是我怎么才能检测图像中的框?我使用opencv244,C++ ...只是为了记录,我已经在这里搜索了关于这个话题,但我无法得到任何想法...任何帮助将不胜感激,谢谢! 这里是链接到我的图片...opencv平方检测样本检测窗口衬里,当我使用imageroi它裁剪整个图像

  1. 原始图像:http://www.flickr.com/photos/[email protected]/8631367890/in/photostream/lightbox/
  2. 的检测箱:http://www.flickr.com/photos/[email protected]/8631368138/in/photostream/lightbox/
+0

您可以检查找到的轮廓的宽度和高度并关闭线条对象吗? – iiro 2013-04-08 11:04:29

+0

不,我是相当新的opencv – joeblack90 2013-04-09 06:42:31

回答

1

只是忽略了最大的广场

在** squares.cpp *有这样的功能:

static void findSquares(const Mat& image, vector<vector<Point> >& squares) 
{ 

} 

,接收Matvector<vector<Point> >。因此,在调用此函数后,原始image中的绿色矩形尚未画出,您可以在squares上迭代在输入图像中找到的最大矩形。

你可以带一个look at this post检查如何识别在图像中找到的最大的方形

之后,您可能想要check this post从正方形的矢量中提取图像的区域。

请记住,它是drawSquares(),在图像上绘制绿色的东西。

+0

谢谢你的回应...我会试试这个 – joeblack90 2013-04-09 06:39:07

+0

好的。我在答案中修复了一个断开的链接。 – karlphillip 2013-04-09 12:47:10

+0

嗨,我已经测试了你的解决方案,它的工作...但是,我应该怎么做,如果我想过滤掉图像中的最小方块??我试着玩代码,但似乎没有改变 – joeblack90 2013-04-09 16:23:36