我在使用opencv C ++打开protobuf文件时遇到问题。 我使用以下代码:
cv::String weights = "frozen_inference_graph_face.pb";
cv::String pbtxt = "prototxt.pbtxt";
auto graph = cv::dnn::readNetFromTensorflow(weights, pbtxt);
我遇到此错误:
OpenCV(3.4.1)错误:未指定错误(失败:fs.is_open()。无法在cv :: dnn :: ReadProtoFromBinaryFile中打开“ frozen_inference_graph_face.pb”),文件C:.hunter_Base \ acbf4b9 \ 93b3222 \ 8eb84a0 \ Build \ OpenCV \ Source \ modules \ dnn \ src \ caffe \ caffe_io.cpp,第1126行
当我使用这样的Python代码打开它并正确检测图像时,它会很好地工作:
cvNet =
cv.dnn.readNetFromTensorflow('frozen_inference_graph.pb','prototxt.pbtxt')
我已经训练了ssd_mobilenet_v1_pets。无法理解为什么我无法使用我的C ++代码打开它并且错误是我使用tensorflow时涉及到cafe。也许内置的OpenCV的配置错误?我将WITH_PROTOBUF = ON设置为BUILD_opencv_dnn = ON。
答案 0 :(得分:0)
很明显,这是路径问题。您应该检查相对路径,如下所示:
model = cv2.dnn.readNetFromCaffe("CarTypeRecognizition/model/vehicle_model.prototxt",
"CarTypeRecognizition/model/vehicle_model.caffemodel")