英文字母的drawContours功能[关闭]
Posted
技术标签:
【中文标题】英文字母的drawContours功能[关闭]【英文标题】:drawContours function on english letters [closed] 【发布时间】:2017-12-18 15:26:26 【问题描述】:我正在开发一个使用函数drawContours()
的输出的应用程序
输入是斜体文本的照片(.jpg 或 .png),我需要使用此函数在字母周围创建矩形。
现在,当我绘制矩形时,我看到函数为某些字母(例如字母 O 和 A)计算了其中的 2 个。
是否可以对图像进行预处理?该函数只计算 O 和 A 等每个字母的较大矩形?
我使用的代码是这个链接中的代码: https://docs.opencv.org/2.4/doc/tutorials/imgproc/shapedescriptors/bounding_rotated_ellipses/bounding_rotated_ellipses.html
只有没有 ellipse() 函数。
【问题讨论】:
使用标志:RETR_EXTERNAL 附上您用来获取此输出的示例代码? @ZdaR docs.opencv.org/2.4/doc/tutorials/imgproc/shapedescriptors/… 没有省略号 @Silencer 在哪个功能中? 这真是一大堆格式错误的代码:/ 【参考方案1】:您实际上有几个选择...所有这些都在findContours 的文档中进行了解释。特别是 mode 参数。
我猜你正在使用CV_RETR_TREE
,这个说
...重建嵌套轮廓的完整层次结构...
这意味着您可以根据层次结构选择要使用的层次结构。您可以参考有关层次结构的文档(在此函数的层次结构参数中有详细说明),这将告诉您一个轮廓是否在另一个轮廓内。
另一种方法是,如果你输入CV_RETR_EXTERNAL
,这个只会返回外部轮廓,从输出中消除内部轮廓。
另外,CV_RETR_CCOMP
也可以,但我还没用过这个,但基本上它会有 2 个层次结构,其中一个是外部轮廓。
所以,一切都取决于您是否需要稍后阶段的内部轮廓。如果没有我会推荐使用CV_RETR_EXTERNAL
,如果您以后需要它们,请使用TREE。
【讨论】:
谢谢!会检查出来。如果可行,我会再次回复并用 V 标记您的答案 好的,我使用了CV_RETR_EXTERNAL,现在它只返回整个图像周围的轮廓,而没有字母的轮廓。 奇怪,我认为它以黑色为背景,它应该可以工作......也许白色是背景......我不记得了,但你可以尝试另一种方式,有树的那个和层次结构 好吧,我深入挖掘了一下,发现整个图像的边框是因为源图像是白色的,而文本是黑色的。如果您对图像进行二值化,并将黑色与白色交换,反之亦然,使用 cv::subtract(cv::Scalar::all(255), threshold_output, threshold_output);您将获得所需的输出 - 没有框架轮廓,只有外部字母轮廓。将此添加到您的答案中,我会将其标记为绿色:)以上是关于英文字母的drawContours功能[关闭]的主要内容,如果未能解决你的问题,请参考以下文章
OpenCV 3.1 drawContours '(-215) npoints > 0'
用实际例子详细探究OpenCV的轮廓绘制函数drawContours()