我想(动态)确定作为opencv的dnn模块加载的深度神经网络模型的输入所需的图像大小。例如,如果我加载caffe模型,则首先需要:
cv::Mat img = imread("my_image.jpg");
cv::dnn::Net m_net;
m_net = cv::dnn::readNetFromCaffe("my_prototxt","my_model");
int img_size; // TODO how to determine it ?
cv::Mat blob = cv::dnn::blobFromImage(img, 1.0, cv::Size(img_size, img_size));
m_net.setInput(blob);
cv::Mat res = m_net.forward("layer_name");
我的问题是要从img_size
中确定m_net
。我猜想dnn::getLayersShapes
应该是可行的,但是我不明白我的情况下第一个论点是什么。
我在这里给出了caffe模型的示例,但我也对能够使用tensorflow,darknet或火炬模型进行同样的操作感兴趣。