是否有任何文本检测机制可以用来检测文本而无需边界框过程的所有开销?
边界框是所有检测处理的结果,因此代表了该过程的固有部分。如果您不关心文本在哪里,您可以在自己的代码中忽略生成的边界框。但是为了检测图像中是否有文本,算法(无论是什么类型)都必须检测文本在哪里。
如果您不关心结果,则链接文章中使用的 DNN 方法可能会有点矫枉过正。您总是可以尝试其他一些text detection algorithms 并尝试对它们进行概要分析,以便为您的应用程序找到计算成本较低的一个。总会有取舍。
OpenCV 使用神经网络来检测外部 .PB 文件的文本;我需要加载它才能使用 nn。有没有办法将此文件嵌入到 .py 文件中?这将避免有两个文件。这背后的想法是能够导入 .py 文件并将其用作库,而忽略 .pb 文件(这是检测文本的模型)。
是的,您可以将模型.pb 文件的内容作为buffer object 直接嵌入到您的Python 代码中,然后使用alternate model loading mechanism 从缓冲区中读取模型:
retval = cv.dnn.readNetFromTensorflow(bufferModel[, bufferConfig])
您可以使用 Unix 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,
然后将其粘贴到您的源文件中,并使用:
bufferModel = bytearray([
0x0a, 0x35, 0x0a, 0x0a, 0x62, 0x61, 0x74, 0x63,
0x68, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x0b,
# ...
])
然后您可以将其传递给 OpenCV:
retval = cv.dnn.readNetFromTensorflow(bufferModel)