detect(Image)会给出图片补丁。我想将这个图像补丁传递给caffe模型进行识别。每个Image都会提供可变数量的补丁,因此我使用Mat的补丁作为补丁。
vector<Mat> patch = detect(Image);
for(int i = 0; i < patch.size(); i++) {
resize(patch.at(i), patch.at(i), Size(224, 224));
dnn::Blob inputBlob = dnn::Blob(patch.at(i));
net.setBlob(".data", inputBlob);
net.forward();
dnn::Blob prob = net.getBlob("prob");
int classId;
double classProb;
getMaxClass(prob, &classId, &classProb);
std::vector<String> classNames = readClassNames();
std::cout << "Best class: #" << classId << " '" << classNames.at(classId) << "'" << std::endl;
std::cout << "Probability: " << classProb* 100 << "%" << std::endl;
}
我在net.forward()
遇到麻烦(转发到网络)。我没有创建网络并使用导入器初始化它的问题。有人可以帮助我。
我遇到的错误是:OpenCV错误:断言失败((size_t)innerSize *(size_t)numOutputs == blobs [ 0] .total())在cv :: dnn :: FullyConnectedLayer :: allocate
中