我正在研究Python项目。 我需要创建的功能之一是能够检测图像是否包含文本。我不需要任何类型的边界框,无论图像中包含多少文本,都只需要true或false即可。 我一直在遵循here的步骤,但是,由于我设法找到所有链接,所以最终会创建边界框。
我有两个问题:
谢谢!
答案 0 :(得分:1)
在没有边界框过程的所有开销的情况下,是否可以使用任何文本检测机制来检测文本?
边界框是进行所有检测处理的结果,因此表示该过程的本质部分。如果您不在乎文本的位置,则可以随意忽略自己代码中的边界框。但是为了检测图像中是否有文本,算法(无论哪种类型)都必须检测文本中的文本。
如果您不关心结果,则链接文章中使用的DNN方法可能会过大。您总是可以尝试其他一些text detection algorithms并尝试对其进行概要分析,从而为您的应用程序找到计算成本更低的解决方案。永远会有权衡。
OpenCV使用神经网络来检测文本,该文本是.PB文件。我需要加载它才能使用nn。有什么办法可以将此文件嵌入.py文件中?这样可以避免有两个文件。其背后的想法是能够导入.py文件并将其用作库,而无需考虑.pb文件(这是检测文本的模型)。
是的,您可以将模型redux
文件的内容作为buffer object直接嵌入到Python代码中,然后使用alternate model loading mechanism从缓冲区读取模型:< / p>
.pb
您可以使用Unix retval = cv.dnn.readNetFromTensorflow(bufferModel[, bufferConfig])
命令将二进制文件转换为十六进制序列:
hexdump
产生如下输出:
hexdump -e '" " 8/1 "0x%02x, " "\n"' your_training.pb
,然后将其粘贴到您的源文件中,并用以下符号包裹:
0x0a, 0x35, 0x0a, 0x0a, 0x62, 0x61, 0x74, 0x63,
0x68, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x0b,
然后您可以将其传递给OpenCV:
bufferModel = bytearray([
0x0a, 0x35, 0x0a, 0x0a, 0x62, 0x61, 0x74, 0x63,
0x68, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x0b,
# ...
])