繁体   English   中英

如何使用OpenCV C ++加载Yolo对象检测网络

[英]How to load Yolo object detection network with OpenCV C++

我按照本教程实现了Yolo对象检测器: https : //github.com/thtrieu/darkflow/,并且我成功完成了它。

创建的.pb文件可用于将图形迁移到移动设备(JAVA / C ++ / Objective-C ++)。 输入张量和输出张量的名称分别为“输入”和“输出”。

我想用OpenCV(c ++)加载网络。 readNetFromTensorflow()方法需要两个文件:.pb和.pbtxt。 后者不是由上面指出的实现方式生成的。 同样,要使用readNetFromDarknet()方法,必须有两个文件:.cfg和.weights。 后者不是由上面指出的实现方式生成的。

那么,如何使用opencv将yolo网络从python迁移到c ++?

我也尝试直接从.pb文件生成.pbtxt文件,但readNetFromTensorflow()方法不成功(在没有有用信息的情况下会生成通用异常)

抛出引用异常:

[在Object_detection_inference_cpp.exe中的0x00007FFFB80C9129处引发的异常:Microsoft C ++异常:内存位置0x000000CBC18FDC90处的cv :: Exception。]

提前致谢。

这是我用来将.pb文件转换成.pbtxt文件的代码:

import tensorflow as tf
from google.protobuf import text_format
from tensorflow.python.platform import gfile

def graphdef_to_pbtxt(filename): 
    with gfile.FastGFile(filename,'rb') as f:
    graph_def = tf.GraphDef()
    graph_def.ParseFromString(f.read())
    tf.import_graph_def(graph_def, name='')
    tf.train.write_graph(graph_def, 'pbtxt/', 'tiny-yolov2-trial3-test.pbtxt', as_text=True)
  return

graphdef_to_pbtxt('tiny-yolov2-trial3-test.pb')

使用tf_text_xxx.py必须具有.config文件。 我只有上述教程中的.cfg文件。 因此,我无法使用您报告的这三个功能。 难道我做错了什么?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM