【发布时间】:2019-11-20 10:49:51
【问题描述】:
这里https://stackoverflow.com/a/49817506/1277317 有一个如何在 OpenCV 中使用卷积网络的示例。但是这个例子是用 Python 编写的。 如何在 C++ 中做同样的事情? 即,如何在 C++ 中做到这一点:
net = cv.dnn.readNetFromTensorflow('model.pb')
net.setInput(inp.transpose(0, 3, 1, 2))
cv_out = net.forward()
?
以及如何为 setInput 函数创建图像大小为 60x162x1 的 Mat?我使用 float 作为数据,就像在 python 示例中一样。 现在我有了这段代码,它给出了不正确的结果:
Net net = readNet("e://xor.pb");
float x0[60][162];
for(int i=0;i<60;i++)
{
for(int j=0;j<162;j++)
{
x0[i][j]=0;
}
}
x0[5][59]=0.5;
x0[5][60]=1;
x0[5][61]=1;
x0[5][62]=0.5;
Mat aaa = cv::Mat(60,162, CV_32F, x0);
Mat inputBlob = dnn::blobFromImage(aaa, 1.0, Size(60,162));
net.setInput(inputBlob , "conv2d_input");
Mat prob = net.forward("activation_2/Softmax");
for(int i=0;i<prob.cols;i++)
{
qDebug()<<i<<prob.at<float>(0,i);
}
【问题讨论】:
标签: c++ opencv neural-network