C++ 英语字母的功能

C++ 英语字母的功能,c++,opencv,image-processing,opencv3.0,C++,Opencv,Image Processing,Opencv3.0,我正在开发一个应用程序,它使用函数drawContours() 输入是斜体文本的照片(.jpg或.png),我需要使用此函数在字母周围创建矩形 现在,当我画矩形时,我看到函数为一些字母(例如字母O和A)计算了其中的2个 是否可以对图像s.t.进行预处理。该函数仅计算每个字母(如O和A)的较大矩形 我使用的代码就是此链接中的代码: 只有在没有椭圆()函数的情况下。您实际上有几个选项。。。所有这些都在的文档中进行了解释。特别是模式参数 我想您使用的是CV\u RETR\u TREE,这一条说 …

我正在开发一个应用程序,它使用函数
drawContours()

输入是斜体文本的照片(.jpg或.png),我需要使用此函数在字母周围创建矩形

现在,当我画矩形时,我看到函数为一些字母(例如字母O和A)计算了其中的2个

是否可以对图像s.t.进行预处理。该函数仅计算每个字母(如O和A)的较大矩形

我使用的代码就是此链接中的代码:


只有在没有椭圆()函数的情况下。

您实际上有几个选项。。。所有这些都在的文档中进行了解释。特别是模式参数

我想您使用的是
CV\u RETR\u TREE
,这一条说

…重建嵌套轮廓的完整层次结构

这意味着您可以根据层次结构选择要使用的层次结构。您可以参考有关层次结构的文档(在该函数的层次参数中有详细说明),这将告诉您一个轮廓是否位于另一个轮廓内

另一种方法是,如果将
CV_RETR_EXTERNAL
放入,则此项仅返回外部轮廓,从输出中删除内部轮廓

同样,也可以使用
CV_RETR_CCOMP
,但我还没有使用这个,但基本上它有两个层次,其中一个是外部轮廓


因此,一切都取决于您是否需要后期的内部轮廓。如果没有,我建议您使用
CV\u RETR\u EXTERNAL
,如果您以后需要,请使用树型。

您实际上有几个选项。。。所有这些都在的文档中进行了解释。特别是模式参数

我想您使用的是
CV\u RETR\u TREE
,这一条说

…重建嵌套轮廓的完整层次结构

这意味着您可以根据层次结构选择要使用的层次结构。您可以参考有关层次结构的文档(在该函数的层次参数中有详细说明),这将告诉您一个轮廓是否位于另一个轮廓内

另一种方法是,如果将
CV_RETR_EXTERNAL
放入,则此项仅返回外部轮廓,从输出中删除内部轮廓

同样,也可以使用
CV_RETR_CCOMP
,但我还没有使用这个,但基本上它有两个层次,其中一个是外部轮廓


因此,一切都取决于您是否需要后期的内部轮廓。如果没有,我建议使用
CV\u RETR\u EXTERNAL
,如果以后需要,使用树型输出。

use flag:RETR\u external附加用于获取此输出的示例代码?@ZdaR,不带椭圆code@Silencer在哪个函数中?那是很多格式错误的代码:/use flag:RETR\u external附加用于获取此输出的示例代码?@ZdaR,不带椭圆code@Silencer在哪个函数中?那是地狱很多格式错误的代码:/谢谢!我去看看。如果它有效,我会再次回复并用VOkay标记你的答案,我使用了CV_RETR_EXTERNAL,现在它只返回整个图像周围的轮廓,但不返回字母的轮廓。奇怪的是,我认为它以黑色为背景,应该有效。。。也许白色是背景。。。我不记得了,但你可以试试另一种方法,有树和层次结构的方法好吧,我深入研究了一下,发现整个图像周围的框架是因为源图像是白色的,文本是黑色的。如果对图像进行二值化,并用cv::subtract(cv::Scalar::all(255)、threshold_output、threshold_output)将黑色与白色互换,反之亦然;您将获得所需的输出-没有帧轮廓,只有外部字母轮廓。把这个加到你的答案上,我会把它标成绿色:)谢谢!我去看看。如果它有效,我会再次回复并用VOkay标记你的答案,我使用了CV_RETR_EXTERNAL,现在它只返回整个图像周围的轮廓,但不返回字母的轮廓。奇怪的是,我认为它以黑色为背景,应该有效。。。也许白色是背景。。。我不记得了,但你可以试试另一种方法,有树和层次结构的方法好吧,我深入研究了一下,发现整个图像周围的框架是因为源图像是白色的,文本是黑色的。如果对图像进行二值化,并用cv::subtract(cv::Scalar::all(255)、threshold_output、threshold_output)将黑色与白色互换,反之亦然;您将获得所需的输出-没有帧轮廓,只有外部字母轮廓。将此添加到您的答案中,我会将其标记为绿色:)